1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Помогите пожалуста..полный завал... Мне нужно написать обучающую программу по переводу чисел... Она должна обучать переводу пользователя... Совсем не знаю как это сделать.. Буду очень благодарен!!!
function FromDec(n, radix:longint):string; var s:string; const digit: string[16]='0123456789ABCDEF'; begin s:=''; repeat s:=digit[(n mod radix)+1]+s; n:=n div radix; until n=0; FromDec:=s; end;
function ToDec(n:string; radix:longint):longint; var m, i:longint; const digit:string[16]='0123456789ABCDEF'; begin m:=0; while(n[1]='0') and (length(n)>1) do delete(n,1,1); for i:=1 to length(n) do m:=m*radix+pos(n[i],digit)-1; ToDec:=m; end;
begin Zast;
repeat writeln; writeln('1. PEREVOD CHISEL IZ 10-nou SISTEMU SCHISLENIYA V "G"'); writeln; writeln('2. PEREVOD CHISEL IZ "G" SISTEMU SCHISLENIYA V 10-nuy'); writeln; writeln('3. Vihod.'); Writeln; write('viberete neobhadimoe deistvie (1/2) '); readln(t); case t of 1: begin clrscr; writeln('PEREVOD CHISEL IZ 10-nou SISTEMU SCHISLENIYA V "G" SISTEMY SCHISLENIYA'); writeln; Writeln('Perevod chisel iz 10-noy sistemi schisleniya v "G" osyschestvlyaetsya'); Writeln('po sleduyschemy pravilu:'); Writeln; Writeln('1. Razdelit chislo na osnovanie sistemi "G", toy sistemi, v kotoruy '); Writeln(' vi hotite perevesti eto choslo.'); Writeln; Writeln('2. Poluchenoe nepolnoe chastnoe opyat razdelit na osnovanie sistemi.'); Writeln; Writeln('3. Povtoryat punkt 2 do teh por, poka poluchennoe nepolnoe chstnoe'); Writeln(' ne budet menshe osnovaniya.'); Writeln; Writeln('4. Zapisat ostatki ot deleniya v poryadke "ot poslednego k pervomy",'); Writeln(' nachinaya s poslednego chastnogo.'); Writeln; if radix>9 then Writeln('Cifri bolshie 9 zapisivaem soglasno ih bykvennomu ekvivalentu!'); Writeln; readkey; clrscr; Writeln('Rassmotrim primer: perevesti chislo 11 iz 10-noy v 2-nuy sistemu schisleniya.'); Writeln; Writeln('11:2=5 (ostatok "1");'); Writeln('5:2=2 (ostatok "1");'); Writeln('2:2=1 (ostatok "0").'); Writeln; Writeln('Zapisivaem ostatki v obratnom ot ih polucheiya poryadke, nachinaya'); Writeln('s poslednego chastnogo:'); Writeln('11(v 10-noy) = 1011(v 2-noy)'); Writeln; Writeln('Teper proverim vashi znaniya...'); Writeln; readkey; clrscr; repeat write('Vvedite sistemy schisleniya, v kotoruy vi hotite perevesti chislo: '); readln(radix); Writeln; if radix>9 then d:=9 else d:=radix-1; WriteLn('V sisteme s osnovaniem ',radix,' dlya zapisi chisla vi mogete ispolzovat'); Write('cifri ot 0 do ',d); if radix=11 then Write(' i latinskyu bykvy A') else if radix>11 then Write(' i latinskie bykvi ot A do ',Chr(radix+54)); WriteLn; if radix>10 then WriteLn('pri etom bykvi imeut takie znacheniyaя:'); for i:=10 to radix-1 do WriteLn(Chr(i+55),' = ',i); WriteLn; Digs:=[]; for c:='0' to Chr(d+48) do Include(Digs,c); for c:='A' to Chr(radix+54) do Include(Digs,c); Writeln; write('Vvedite chislo, kotoroe vi budete perevodit: '); readln(n_long); writeln; writeln('Teper ispolzuyte pravila perevoda i perevedite chislo v neobhadimuy'); writeln('sistemu schisleniya'); writeln; write('Vvedite chislo, kotoroe u vas poluchilos - ');readln(b); if b<>FromDec(n_long,radix) then Writeln('Otvet ne verniy! Poprobuyte eche raz...') else Writeln('Congratilation!!! Otvet veren!'); until b=FromDec(n_long,radix); end; 2: begin clrscr; writeln('PEREVOD CHISEL IZ "G" SISTEMU SCHISLENIYA V 10-nuy'); writeln; WriteLn('Dlya perevoda chisla iz "G" sistemi schisleniya v 10-nuy nugno vospolzovatsya'); WriteLn('pravilom: '); Writeln; Writeln('1. Pronumerovat razryadi chisla s prava na levo, nachinaya s 0.'); Writeln; Writeln('2. Predstavit ishodnoe chislo v vvide:'); Writeln(' A = a[0]*G^0 + a[1]*G^1 + a[2]*G^2 + a[3]*G^3 + ... + a[n]*G^n,'); Writeln(' gde v skobkah ykazan razryad chisla, simvol ^ oznachaet vozvedenie v stepen,'); Writeln(' A - nashe chislo v 10-noy sisteme schisleniya.'); Writeln; readkey; Writeln('Rassmotrim primer: perevesti chislo 1011 iz 2-noy v 10-nuy sistemy shisleniya.'); Writeln; Writeln('1011(v 2-noy)=1*2^0+1*2^1+0*2^2+1*2^3=1+2+0+8=11(v 10-noy)'); repeat write('Vvedite sistemy schisleniya, iz kotoroy vi budete perevodit chislo: '); readln(radix); Writeln; if radix>9 then d:=9 else d:=radix-1; WriteLn('V sisteme s osnovaniem ',radix,' dlya zapisi chisla vi mogete ispolzovat'); Write('cifri ot 0 do ',d); if radix=11 then Write(' i latinskyu bykvy A') else if radix>11 then Write(' i latinskie bykvi ot A do ',Chr(radix+54)); WriteLn; if radix>10 then WriteLn('pri etom bykvi imeut takie znacheniyaя:'); for i:=10 to radix-1 do WriteLn(Chr(i+55),' = ',i); WriteLn; Digs:=[]; for c:='0' to Chr(d+48) do Include(Digs,c); for c:='A' to Chr(radix+54) do Include(Digs,c); Writeln; write('Vvedite chislo, kotoroe vi budete perevodit: '); readln(n_str); writeln; writeln('Teper ispolzuyte pravila perevoda i perevedite chislo v 10-nuy sistemu'); writeln('schisleniya'); writeln; write('Vvedite chislo, kotoroe u vas poluchilos - ');readln(h); writeln; if h<>ToDec(n_str,radix) then Writeln('Otvet ne verniy! Poprobuyte eche raz...') else Writeln('Congratilation!!! Otvet veren!'); writeln; until h=ToDec(n_str,radix); end;
3: halt
else begin writeln('Takogo punkta v menu net!!!'); ReadKey; end; end;
write('once again? (Y/N)'); readln(a); clrscr; until not (a in ['Y', 'y']); End.
Но тут есть проблема...во 2 пункте..нужно ввести число в выбранной системе счисления...но там буквы ввести нельзя...не подскажете как это можно исправить..? И еще может у кого нить есть идеи как разместить весь этот текст на экране..?