Не работает программа перевода в различные системы счисления - Pascal
Формулировка задачи:
Добрый день, не получается программа. Заранее спасибо. Извиняюсь за такой ввод программы, я новичок на форуме и не совсем освоилась.
Исходный файл содержит числа в десятичной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для каждого такого числа из заданного диапазона после знака равенства указывает его значение в троичной, пятеричной или восьмеричной системе счисления по выбору пользователя, например:
00101111 = 305367, 0111 = 157, 10000 = 23420, и т.д.
(Фотографии текста заменены текстом)
program kursach; const b=10; var p,p2:string; st:char; s,n,i,n0,n2,c:integer; f1,f2:text; a:array[1..b] of integer; procedure Vara; var i:integer; begin n0:=a[i]; n:=n0; for i:=1 to b do begin if n<>0 then begin s:=n mod с; n:=n div c; end else s:=0; end; a[i]:=s; for i:=1 to b do readln(a[i],st); for i:=b downto 1 do write(f1,' ',а[і]); writeln; end; Begin p:='D:\file1.txt'; p2:='D:\file2.txt'; writeln ('B какую систему счисления переводить?'); read(c); case c of 3:writeln('Перевод в троичную систему счисления'); 5:writeln('Перевод в пятиричную систему счисления'); 8:writeln('Перевод в восьмиричную систему счисления'); end; if (c<>3)and(c<>5)and(c<>8) then begin writeln ('Перевод в '‚с‚'-ую систему счисления не возможен'); Writeln ('Операция не осуществима'); halt; end; assign (f1,p); assign (f2,p2); reset (f1); while not EOF(f1) do begin for i:= to b do read1n(f1,st); end; read1n(f1,s); сlose(f1); rewrite(f2); close(f2); end.
Решение задачи: «Не работает программа перевода в различные системы счисления»
textual
Листинг программы
const CHECK: string[10] = '0123456789'; function StrToInt(const s: String): Integer; var Result, code: Integer; begin val(s, Result, code); if (code <> 0) then Result := 0; StrToInt := Result; end; function Convert(numb: Integer; const c: Byte): String; var Result: String; begin Result := ''; repeat Result := CHECK[numb mod c + 1] + Result; numb := numb div c; until (numb = 0); Convert := Result; end; function ShowMenu(): Byte; var Result: Byte; begin repeat WriteLn('1. перевод в 3'); WriteLn('2. перевод в 5'); WriteLn('3. перевод в 8'); WriteLn('0. Выход'); ReadLn(Result); until (Result in [0..3]); ShowMenu := Result; end; var f: File Of Char; s: String; temp: Byte; a, b, numb: Integer; c: Char; begin Write('Input a='); ReadLn(a); repeat Write('Input b (>=', a, ')='); ReadLn(b); until (b >= a); Assign(f, 'f.txt'); ReSet(f); s := ''; while Not (EoF(f)) do begin Read(f, c); if (c in ['0'..'9']) then s := s + c else if (c = ',') then begin numb := StrToInt(s); if ((numb >= a) And (numb <= b)) then begin temp := ShowMenu(); case temp of 1: WriteLn(s, '=', Convert(numb, 3)); 2: WriteLn(s, '=', Convert(numb, 5)); 3: WriteLn(s, '=', Convert(numb, 8)); 4: Exit; end; end; s := ''; end else begin WriteLn('Ошибка!'); s := ''; end; end; Close(f); numb := StrToInt(s); if ((numb >= a) And (numb <= b)) then begin temp := ShowMenu(); case temp of 1: WriteLn(s, '=', Convert(numb, 3)); 2: WriteLn(s, '=', Convert(numb, 5)); 3: WriteLn(s, '=', Convert(numb, 8)); end; end; end.
Объяснение кода листинга программы
- CHECK = '0123456789' (константа для проверки корректности вводимого числа)
- StrToInt - функция, преобразующая строку в целое число. Принимает строку s и возвращает целое число Result. Если преобразование не удалось, Result присваивается 0.
- Convert - функция, преобразующая число из десятичной системы счисления в c-ричную. Принимает число numb и основание системы счисления c, и возвращает соответствующее число в виде строки Result.
- ShowMenu - функция, выводящая меню и возвращающая выбранный пункт меню Result.
- f - переменная файла символов.
- s - строка для хранения числа из файла.
- temp - временная переменная для хранения выбранного значения.
- a - нижняя граница диапазона чисел.
- b - верхняя граница диапазона чисел.
- numb - числовое значение s после преобразования из строки.
- c - символьная переменная из файла.
Код выполняет следующие действия:
- Открывает файл для чтения.
- Считывает числа из файла и обрабатывает их с помощью функции StrToInt.
- Если число входит в заданный диапазон, выводит меню с помощью функции ShowMenu и выполняет выбранное действие:
- Переводит число в троичную, пятеричную или восьмеричную систему счисления с помощью функции Convert.
- Закрывает файл. Также присутствуют проверки и сообщения об ошибках в случае, если число в файле не входит в указанный диапазон или ошибка ввода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д