0 / 0 / 0
Регистрация: 16.06.2010
Сообщений: 35
1

Системы счисления.

16.08.2010, 13:06. Показов 955. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите пожалуйста.
Что делает и как работает строка
1. s:chr(d+ord('0'))+s;
2. if s='' then s:='0';
3. Как выводятся числа в обратном порядке.
4. Почему программа выводи числа в 5,6,7 системе одинаковые.
Собстенно сама программа:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program TRANSLATE_IN_3;
var s:string;
i,d,p:integer;
n:longint;
begin
write('‚Введите число:');
readln(n);
for p:=5 to 7 do 
begin
while n>0 do 
begin
d:=n mod p; 
s:=chr(d+ord('0'))+s; 
n:=n div p; 
end;
if s='' then s:='0';
writeln('в',p','-ричной',s);
end;
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2010, 13:06
Ответы с готовыми решениями:

Перевод любого числа из 16 системы счисления в 2 систему счисления.
Здравствуйте,помогите решить задачку в Pascal !!! Для перевода любого числа из 16 системы...

Системы счисления
Здравствуйте. Помогите пожалуйста с написанием программы со следующим условием: Написать...

Системы Счисления.
Доброго времени суток ! Нужна ваша помощь в написании программы на Паскале. Программа должна...

системы счисления
Почему неправильно переводит дробную часть с 10 сс в 10 сс? uses crt; const a: string =...

7
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
16.08.2010, 13:23 2
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
program TRANSLATE_IN_3;
uses crt;
var s:string;
    i,d,p:integer;
    n,m:longint;
begin
clrscr;
write('Введите число:');
readln(n);
for p:=5 to 7 do 
 begin
  s:='';m:=n;//строка пустая, запомним исходное число
  while m>0 do
   begin
    d:=m mod p;//последняя цифра от деления на основание
    s:=chr(d+ord('0'))+s;//пишем в начало строки символ этой цифры, 
                          //его код на 48(ord('0')) больше цифры'
    m:=m div p;//целая часть от деления
   end;
  if s='' then s:='0';
  writeln('в ',p,'-ричной = ',s);
 end;
readln;
end.
0
0 / 0 / 0
Регистрация: 16.06.2010
Сообщений: 35
16.08.2010, 14:15  [ТС] 3
Большое спасибо!

Добавлено через 30 минут
А что означает строчка
if s='' then s:='0';
0
Автор FAQ
Автор FAQ
1800 / 612 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
16.08.2010, 14:16 4
Означает, что если строка s пустая, присвоить ей значение '0'.
0
0 / 0 / 0
Регистрация: 16.06.2010
Сообщений: 35
16.08.2010, 18:32  [ТС] 5
Спасибо!

Добавлено через 2 часа 28 минут
Программа переводит введенное число из любой системы счисления в 10.
В некоторых моментах я не понимаю(не знаю) значение и смысл данных операций , если можно отпишите пожалуйста комментарии где стоит знак вопрос.

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
program schisleniya;
uses crt;
var
b2,ss,b,s:string;
os,c,e,ch,p,i,j,n,k:integer;
begin
clrscr;
s:='123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_';{36}
writeln('VVEDITE CHISLO');
read(n);
writeln('VVEDITE SISTEMU SCHISLENIYA');
read(k);
while n>=1 do begin
p:=n mod k;
if p>=10 then b:=copy(s,p,1) else str(p,b);                      ?
ss:=b+ss;                                                                   ?
n:=n div k;
end;
writeln(ss);
writeln('VVEDITE SISTEMU SHISLENIYA');
readLN(k);
writeln('VVEDITE CHISLO');
readln(sS);
c:=length(ss);
for i:=1 to c do begin
b:=copy(ss,i,1);
for j:=1 to 36 do begin
b2:=copy(s,j,1);                                         ?
if b=b2 then os:=j;                                      ?
end;
ch:=k*ch+os;                                              ?
end;
writeln(ch);
readkey;                                                    ?
end.
0
13097 / 5878 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
17.08.2010, 12:00 6
Abuka, Copy() здесь нет смысла использовать. Удобнее заменить:
b:=copy(s,p,1) на: b := s[i]
b:=copy(ss,i,1) на: b := ss[i]
b2:=copy(s,j,1) на: b2 := s[j]
Конструкцию:
Pascal
1
2
3
4
5
6
7
8
for i:=1 to c do begin
  b:=copy(ss,i,1);
  for j:=1 to 36 do begin
    b2:=copy(s,j,1);                                         ?
    if b=b2 then os:=j;                                      ?
  end;
  ch:=k*ch+os;                                              ?
end;
заменить на:
Pascal
1
2
3
4
5
6
for i:=1 to c do begin
  for j:=1 to 36 do begin
    if ss[i] = s[j] then os:=j;                                      ?
  end;
  ch:=k*ch+os;                                              ?
end;
0
0 / 0 / 0
Регистрация: 16.06.2010
Сообщений: 35
18.08.2010, 01:51  [ТС] 7
Спасибо большое! Щас сделаем.

Добавлено через 1 час 18 минут
Опишите пожалуйста как работает перевод числа в строку на этом наброске.

Pascal
1
2
3
4
5
6
7
8
9
while n16>0 do
    begin
    d:=n16 mod 16;
    if d in [0..9] then
        s:=chr(d+ord('0'))+s
    else
        s:=chr(d-10+ord('A'))+s;
    n16:=n16 div 16;
    end;
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
18.08.2010, 07:59 8
Pascal
1
2
3
4
5
6
7
8
9
while n16>0 do //пока число не ноль
        begin
        d:=n16 mod 16;//берем остаток от деления на 16
        if d in [0..9] then//если 0-9
                s:=chr(d+ord('0'))+s//в начало строки пишем символ этой цифры
        else
                s:=chr(d-10+ord('A'))+s;//если 10-15, пишем в начало строки A-F
        n16:=n16 div 16;//берем целую часть от деления и все повторяем
        end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2010, 07:59
Помогаю со студенческими работами здесь

Системы счисления
Пожалуйста помогите с лабораторной! Даны натуральные числа N, M (2<=M<=16). Вывести на экран...

Системы счисления
Даны 2 вещественных числа с фиксированной точкой без знака в 10 системе. Их нужно перевести в 8...

Системы счисления
Помогите написать програма, которая переводит числа с 8 в 10 систему счисления, и обратно!!

Системы счисления
салам пацанам! привет девчёнкам! такая тема.......написать на языке программирования Паскаль...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru