2014-04-22 2 views
1

나는 주어진 JS-1에서 9까지의 숫자를 찾기 위해 간단한 JS 코드를 만들려고한다. 나는 작동이 파스칼 코드가 :이와 결국 JS에서이 파스칼 코드를 JavaScript로 변환하는 방법?

Var n,i:longint; 
A:array[0..9] of byte; 
Begin 
write('Введите число: ');readln(n); 
While n>0 do 
    Begin 
    A[n mod 10]:=A[n mod 10]+1; 
    n:=n div 10; 
    End; 
    For i:=0 to 9 do 
    writeln('The number ',i,' occurs ',A[i],' amount of times'); 
    readln; 
End. 

을, 그러나 그것은 끝없는 루프가있는 것 : 내가 갈거야 어디

function plosh(form) { 
    var list = new Array(9); 
    var n = form.a.value; 
    while (n>0) { 
     a = n % 10; 
     list[a] = list[a]+1; 
     n = n % 10; 
    } 
    for (var i=0; i<=9; i++) 
    { 
     alert("Цифра"+i+"встречается"+A[i]+"раз"); 
    } 
} 

가 어떤 도움을 appreicate 것인가를 이걸로 잘못 했어. 미리 감사드립니다!

+0

'a = n % 10;'앞에'var'을 추가 할 때주의하십시오. 그렇지 않으면'a'가 전역 변수가됩니다. 앞으로 문제가 발생할 수 있습니다. –

+0

배열을 값 (아마 0)으로 초기화하는 것을 잊지 마십시오! –

답변

2

n = n % 10은 곧 10 이하의로 변경 n 잎, 그래서 일반적으로 0, 따라서 무한 루프에 도달하지 않습니다.

div operator in Pascal은 정수 나누기입니다.

변경

n = n % 10 

n = Math.floor(n/10); 

에 또 다른 문제가있다 : 당신이 undefined1를 추가 할 수 있도록 당신이 제대로 배열을 초기화 아닙니다. 다음과 같이 수정하십시오 :

function plosh(form) { 
    var a, 
     list = [], 
     n = form.a.value; 
    while (n>0) { 
     a = n % 10; 
     list[a] = (list[a]||0)+1; 
     n = Math.floor(n/10); 
    } 
    for (var i=0; i<=9; i++) { 
     console.log("Цифра"+i+"встречается"+A[i]+"раз"); // <- less painful than alert 
    } 
} 
+0

Gotcha, 내가 지금 어디가 잘못 됐는지 알 겠어! 고마워. – user2977444

1
n:=n div 10; 

같이 번역 하였다

n = n % 10; 

하지만 같아야

n = Math.floor(n/10); 

편집 : 또한, 10 개 개의 요소를 의미 파스칼의 Array [0..9]를 정의 . Array(9)으로 전화를 걸면 9 개의 요소 만 만들 수 있습니다.

+1

올바른 것은'n = Math.floor (n/10)'입니다. –

+0

네 말이 맞아. 코드를 편집했습니다. 감사. – vdavid

관련 문제