2017-09-10 13 views
-3

에 변수 하나 개의 숫자/문자를 사용하지만이 붙어 왔. 필자는 파스칼 프로그램을 사용하여 여러 개의 기본 (2-16)을 소수 (10)로 변환 할 수 있어야합니다. 내 문제는 그러나 나는 등은 기본적으로 내가 잠시 /에/IF/케이스 등/을 반복 같은 가장 기본적인 기능 붙어있어 배열/문자열/readkey/유형, 같은 것들을 사용할 수 없습니다 이다 내 문제는 어떻게 변수를 입력해야 할 필요가 발생합니다. 그것은 할 필요가 :(파스칼) 읽기와 내가 프로젝트에서 일하고 있어요 시간

- "기본 : 수를."

- "기본 10 답"예를

-16 들어

: 123.

-291

내가 사용 수에서 받침대를 분리 할 수 ​​

":". 숫자를 어떻게 분리할지는 확실하지 않습니다. 나는 유일한 방법 인 것처럼 보이는 Ord를 사용하는 것에 대해 생각했다. 그러나 그것을 어디에 놓을 지, 또는 그것을 쓰는 방법을 모른다. 어떤 아이디어?

+0

작업이 약간 다르긴하지만 https://stackoverflow.com/q/46065522/2292722와 중복되는 것으로 보입니다. –

답변

1

당신은 배열이나 그 물건의 필요하지 않습니다. 이 연습에서는 한 번에 한 문자 씩 입력을 처리하는 방법, 세마포를 인식하는 방법 (콜론 ':'), 숫자의 자릿수가 기본과 관련되는 방식에 대한 이해 등 두 가지에 대한 지식을 적용해야합니다.

숫자의 기수는 숫자의 본질적 품질이 아닙니다. 7은 7이됩니다. 기수가 어떤 기수인지에 관계없이 기수는 텍스트이며 인간이 읽을 수있는 특성은 a입니다. 번호. 이미 학교에서 다항식을 처리하는 방법을 배웠습니다 :

567 → 5×10² + 6×10¹ + 7×10⁰ 

우리 기수는 16 진수 (기본 16)를 사용한다면 기수 →베이스 (10)가 10 그건 :

567₁₆ → 5×16² + 6×16¹ + 7×16⁰ 

마지막 트릭은 곱셈과 나머지 연산을 통해 기수를 사용하여 숫자를 작성하고 분해하는 방법을 이해하는 것입니다. 의 그것이 더 분명하게 그 다항식을 다시 보자 : 우리가 16 배를 곱한 때문에 오 세 번째 -에서 - 더 - 올바른 위치에있다

567₁₆ → 5×16×16 + 6×16 + 7×1 

있다. 6은 1630 시간을 곱한 값이므로 두 번째 오른쪽에서 두 번째 위치에 있습니다. 그리고 우리가 16 번 곱하기 때문에 7은 가장 오른쪽에 있습니다. 코드에서, 그건 : 특정 지정을

n := 0; 
n := n * 16 + 5; 
n := n * 16 + 6; 
n := n * 16 + 7; 
writeln('n = ', n); 

(콜론 앞 ':') 첫 번째 숫자는 기본 10 (':'콜론 뒤) 두 번째 숫자 항상이로 지정된 기수를 사용 첫 번째 숫자.

행운을 빈다.

+0

미안하지만, 나는 정말로 이해하지 못합니다. 기지 변경 방법을 알고 있습니다. 그렇습니다.필자는 입력을 분리하는 방법을 모르므로 파스칼에서 그렇게 할 수 있습니다. 그게 내가 곤란한 문제 야. > "첫 번째 숫자 (콜론 앞에 : :)는 항상 10 진수입니다." 맨 처음 번호는 기본을 사용하지 않아야합니다. 콜론 다음에 오는 숫자의 기준을 지정해야합니다. – Olimak97

+0

숫자는 항상 기본으로 ** 표현 **됩니다. 콜론 (베이스) 앞 부분은 항상 10 진법으로 표현됩니다. 따라서 콜론을 찾을 때까지 숫자로 숫자를 읽으십시오. 그런 다음 해당 행을 사용하여 나머지 행을 디코딩하십시오. 대답은 나에게 맞는 것 같습니다. –