0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30

Не работает программа перевода в различные системы счисления

12.05.2016, 17:19. Показов 2592. Ответов 15

Студворк — интернет-сервис помощи студентам
Добрый день, не получается программа. Заранее спасибо. Извиняюсь за такой ввод программы, я новичок на форуме и не совсем освоилась.
Исходный файл содержит числа в десятичной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для каждого такого числа из заданного диапазона после знака равенства указывает его значение в троичной, пятеричной или восьмеричной системе счисления по выбору пользователя, например:
00101111 = 305367, 0111 = 157, 10000 = 23420, и т.д.

(Фотографии текста заменены текстом)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2016, 17:19
Ответы с готовыми решениями:

Программа для перевода чисел из одной системы счисления в другую
Написать программу для перевода чисел из одной системы счисления в другую. Из 10 в 2, Из 16 в 8. Задание может быть выполнено в виде двух...

Перевод в различные системы счисления
Довольно частенько спрашивают перевод из одной СС в другую и поэтому я решил выложить исходник по переводу.Думаю кому нибудь да...

Перевод в различные системы счисления
Доброго времени суток. Тут мне выдали пару задач которые нужно решить, но я немного отсталый в программирование. Помогите пожалуйста. А...

15
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
12.05.2016, 17:46  [ТС]
Не куда больше идти, очень сильно прошу подсказки
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
12.05.2016, 18:27
Перевод в различные системы счисления
1
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
12.05.2016, 19:02  [ТС]
Вы не могли бы сказать, где именно ошибка в программе? Я новичок вообще в программировании, очень трудно сразу сориентироваться
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
12.05.2016, 20:08
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

MaxKate, не мог бы. не привык щупать код в форме картинки

Добавлено через 15 минут

Не по теме:

кого я обманываю, спрашивается...


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const
    a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
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 := a[numb mod c + 1] + Result;
        numb := numb div c;
    until (numb = 0);
    Convert := Result;
end;
function ShowMenu(): Byte;
var
    Result: Byte;
begin
    repeat
        Write('В какую систему счисления будем-с переводить? <2..16>:');
        ReadLn(Result);
    until (Result in [2..16]);
    ShowMenu := Result;
end;
var
    f: File Of Char;
    s: String;
    temp: Byte;
    c: Char;
begin
    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
                temp := ShowMenu();
                WriteLn(s, '=', Convert(StrToInt(s), temp));
                s := '';
            end
    end;
    temp := ShowMenu();
    WriteLn(s, '=', Convert(StrToInt(s), temp));
    Close(f);
end.
1
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
12.05.2016, 21:09  [ТС]
Спасибо огромное Вам, Вы меня очень выручили!
0
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
14.05.2016, 18:43  [ТС]
Еще такой вопрос, как в данной программе создать меню с выбором системы счисления (выбор стрелками)?
Все обыскала, и на форуме, и на просторах Интернета

Добавлено через 2 часа 2 минуты
Пробовала и через модуль, и просто вбивала case, но толку ноль

Добавлено через 20 минут
JokeR.BY, скажите, пожалуйста, знаю, что уже совсем вас достала, возможно ли это реализовать без использования модулей?
Цитата Сообщение от MaxKate Посмотреть сообщение
как в данной программе создать меню с выбором системы счисления (выбор стрелками)?
Все обыскала, и на форуме, и на просторах Интернета
Добавлено через 3 часа 10 минут
Проблема решена)
0
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
23.05.2016, 18:33  [ТС]
JokeR.BY, помогите, пожалуйста, только на вас надежда.
вылетает ошибка 200, не понимаю, где именно. не знаю уже, что и делать
обязательно нужен диапазон и case of
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
PROGRAM K;
Const
x:string[36]='0123456789ABCDEFGHIJKLMNJPQRSTUVWXYZ';
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:=x[numb mod c +1]+Result;
 numb:=numb div c;
until (numb=0);
Convert:=Result;
end;
function mymenu ():byte;
var
result:byte;
begin writeln('выберете систему счисления');
repeat
writeln('1-перевод в 3');
writeln('2-перевод в 5');
writeln('3-перевод в 8');
writeln('0-выход');
readln(result);
until (result in [0..3]);
mymenu:=result;
if result=0 then
begin
writeln('программа завершена*');
halt;
end;
end;
var
f:File of Char;
s:string;
temp,n:byte;
c:char;
d1,d2,k:longint;
begin 
assign(f,'f.txt');
reset(f);
s:='';
writeln ('“нижнее значение диапазона');
readln(d1);
writeln('верхнее значение диапазона');
readln(d2);
k:=strtoint(s);
for k:=d1 to d2 do
begin
while not (eof(f)) do
 begin
read(f,c);
if (c in ['0'..'9'])
then begin
s:=s+c;
case mymenu of
1:writeln(s,'=',Convert(StrToInt(s),3));
2:writeln(s,'=',Convert(StrToInt(s),5));
3:writeln(s,'=',Convert(StrToInt(s),8));
end;
end
else
if (c=',')
then
begin
writeln(s,'=',Convert(StrToInt(s),n));
s:='';
case mymenu of
1:writeln(s,'=',Convert(StrToInt(s),3));
2:writeln(s,'=',Convert(StrToInt(s),5));
3:writeln(s,'=',Convert(StrToInt(s),8));
end;
end;
if (c='.')
then
begin
writeln('ошибка');
s:='';
end;
if (c='-')
then
begin
writeln('ошибка');
s:='';
end;
if (c in ['A'..'Z'])
then
begin
writeln('ошибка');
s:='';
end
end;
end;
close(f);
end.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
23.05.2016, 18:48
MaxKate, а файл 'f.txt' нам в телепатический шар рассматривать?
1
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
23.05.2016, 19:18  [ТС]
ZX Spectrum-128,
Вложения
Тип файла: txt f.txt (22 байт, 3 просмотров)
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
23.05.2016, 22:11
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

шота вы перемудрили.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const
    A: 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 := a[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;
    c: Char;
begin
    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
                temp := ShowMenu();
                case temp of
                    1: WriteLn(s, '=', Convert(StrToInt(s), 3));
                    2: WriteLn(s, '=', Convert(StrToInt(s), 5));
                    3: WriteLn(s, '=', Convert(StrToInt(s), 8));
                    4: Exit;
                end;
                s := '';
            end
            else
            begin
                WriteLn('Ошибка!');
                s := '';
            end;
    end;
    Close(f);
    temp := ShowMenu();
    case temp of
        1: WriteLn(s, '=', Convert(StrToInt(s), 3));
        2: WriteLn(s, '=', Convert(StrToInt(s), 5));
        3: WriteLn(s, '=', Convert(StrToInt(s), 8));
    end;    
end.
2
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
24.05.2016, 15:31  [ТС]
JokeR.BY, спасибо вам огромнейшее! вы - просто спаситель!!! Скажите, пожалуйста, как приспособить этот код к ручному вводу диапазона считывания чисел из файла?

Добавлено через 1 минуту
То есть, чтобы переводились только те числа, которые находятся в заданном диапазоне (ручной ввод)
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
24.05.2016, 19:29
Лучший ответ Сообщение было отмечено MaxKate как решение

Решение

код, конечно, уже ни к чёрту стал...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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.
1
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
25.05.2016, 20:09  [ТС]
JokeR.BY, спасибо огромное!

Добавлено через 18 часов 58 минут
JokeR.BY, как правильно здесь задать массивы, чтобы меню вызывалось не для каждого элемента из диапазона, а для всех элементов из диапазона сразу? Знаю, что совсем вас одолела, но сама я только запутываюсь больше
еще и вывод и сохранение нужно произвести в новый чистый файл=(
Я Вам очень и очень благодарна за Вашу помощь и поддержку!

Добавлено через 5 часов 0 минут
JokeR.BY, мне очень нужна Ваша помощь в этих двух темах, кроме Вас,мне не на кого рассчитывать
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
25.05.2016, 21:29
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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;
var
    f: File Of Char;
    s: String;
    base: Byte;
    a, b, numb: Integer;
    c: Char;
begin
    Write('Input a='); ReadLn(a);
    repeat
        Write('Input b (>=', a, ')=');
        ReadLn(b);
    until (b >= a);
    repeat
        WriteLn('1. перевод в 3');
        WriteLn('2. перевод в 5');
        WriteLn('3. перевод в 8');
        ReadLn(base);
    until (base in [0..3]);
    case base of
        1: base := 3;
        2: base := 5;
        3: base := 8;
    end;
    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
                    WriteLn(s, '=', Convert(numb, base));
                s := '';
            end
            else
            begin
                WriteLn('Ошибка!');
                s := '';
            end;
    end;
    Close(f);
    numb := StrToInt(s);
    if ((numb >= a) And (numb <= b))
    then
        WriteLn(s, '=', Convert(numb, base));
end.
1
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 30
25.05.2016, 22:07  [ТС]
JokeR.BY, Спасибо-спасибо и еще раз спасибо! С записью в новый файл разобралась! Вы просто гений!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2016, 22:07
Помогаю со студенческими работами здесь

Перевод в различные системы счисления
Здравствуйте, возникла проблема, не могу разобраться с преобразованием числа в обратный и дополнительный код. Если с переводом из одной...

Перевод чисел в различные системы счисления
Помогите составить программу перевода из некоторой системы счисления в родственную ей систему счисления вещественных чисел, содержащих как...

Перевод чисел в различные системы счисления
Составьте, пожалуйста, программу, которая переводит натуральное число (не более 10^9) в систему счисления, основание которой (от 2 до 9)...

Помогите с функцией перевода из системы счисления N в 10?
function ToDec(n:string; i, radix:longint):longint; const digit: string='0123456789ABCDEF'; begin if n='0' then delete(n,1,1) ...

Функция перевода числа из 10-й системы счисления в другие до 10-ой
Привет! Перевод функция числа из 10-й системы счисление в другие до10-ой (pascal). Функция имеет 2 аргумента: 1 аргумент -база, 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru