Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2012, 16:54   #1
Дарья Книга
Пользователь
 
Регистрация: 19.03.2012
Сообщений: 21
Вопрос Программа в паскале по переводу числа из двоичной СС в десятичную и блок схема к ней.

Школьный уровень.Я написала такую программу:
Код:
Program Ex;
var
  i,y,x,n,k:integer;
  s:real;
begin
  write('Введите число в 2-ой системе счисления: ');
  readln(n);
  x:=n;
  k:=n;
  while x>0 do
    begin
      x:=x div 10;
      inc(y);
    end;
  for i:=0 to y-1 do
    begin
      s:=(k mod 10)*Power(2,i)+s;
      k:=k div 10;
    end;
  writeln(s,' - число в 10-ной системе счисления');
end.
Она выполняется,всё нормально.Но моего учителя она не устроила.Он сказал,что здесь не нужно 2 цикла,сказал переписать программу с одним циклом и построить блок схему.Но я не знаю как сделать эту программу с одним циклом.Помогите пожалуйста. Для программистов это же раз плюнуть

Последний раз редактировалось Stilet; 19.03.2012 в 21:10.
Дарья Книга вне форума Ответить с цитированием
Старый 19.03.2012, 17:53   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Предлагаю другой подход!
Допустим вы считываете число в строку
Код:
ReadLn (W_String);
Подразумевается что запись числа прямая а не обратная!
Тогда для перевода числа используем степени двойки через експоненту
Код:
Dec_Number := 0;
for i := 0 to length(W_String) - 1 do
begin
    if W_String[i+1] = '1' then
         Dec_Number := Dec_Number +exp(ln(2)*(Length(W_String) - i));
end;
Writeln (Dec_Number);
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 19.03.2012, 17:57   #3
Дарья Книга
Пользователь
 
Регистрация: 19.03.2012
Сообщений: 21
По умолчанию

К сожалению, я не могу в этом разобраться
Мы не проходили такие операторы.Но всё равно спасибо)))
Дарья Книга вне форума Ответить с цитированием
Старый 19.03.2012, 17:58   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
К сожалению, я не могу в этом разобраться
Мы не проходили такие операторы.Но всё равно спасибо)))
Спрашивайте, помогу! Для этого и сделан форум!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 19.03.2012, 18:00   #5
Дарья Книга
Пользователь
 
Регистрация: 19.03.2012
Сообщений: 21
По умолчанию

Если я сделаю с операторами,которые мы не проходили,у меня опять не примут работу
Дарья Книга вне форума Ответить с цитированием
Старый 19.03.2012, 18:02   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Если я сделаю с операторами,которые мы не проходили,у меня опять не примут работу
Кто это вам сказал?
У вас не примут работу если вы сами в ней не разбираетесь, в противном случае можно подать жалобу на преподавателя, его заменят!
Операторы не сложные! А бы сказал что раз так в 100500 проще ваших!
Что конкретно вам не ясно в коде?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 19.03.2012, 18:13   #7
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ладно если вас не устраивает мой вариант, то вот ваш переделанный
Код:
write('Введите число в 2-ой системе счисления: ');
readln(n);
i := 0;
s := 0;
while n>0 do
begin
    if (n mod 10) = 1 then
        s := s+Power(2,i);
    n := n div 10;
    i := i + 1;
end;
writeln(s,' - число в 10-ной системе счисления');
Ограничение на ввод числа! Вы не введёте число длиньше 5 знаков что есть огромный минус!
Поэтому лучше всё таки взять мой вариант!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 19.03.2012 в 18:15.
Hacker19_90 вне форума Ответить с цитированием
Старый 19.03.2012, 18:36   #8
Дарья Книга
Пользователь
 
Регистрация: 19.03.2012
Сообщений: 21
По умолчанию

Я не знаю что такое W_String,Dec_Number и length
Дарья Книга вне форума Ответить с цитированием
Старый 19.03.2012, 18:40   #9
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Я не знаю что такое W_String,Dec_Number и length
W_String строка
W_String: string; всё просто
Dec_Number число
Dec_Number: integer
length функция которая возвращает длину строки!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 19.03.2012, 18:43   #10
Дарья Книга
Пользователь
 
Регистрация: 19.03.2012
Сообщений: 21
По умолчанию

ec_Number := 0;
for i := 0 to length(W_String) - 1 do
begin
if W_String[i+1] = '1' then
Dec_Number := Dec_Number +exp(ln(2)*(Length(W_String) - i));
end;
Writeln (Dec_Number);




Это куда в моей программе вставлять?
Дарья Книга вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из двоичной системы в двоично-десятичную (assembler) Dolgan Фриланс 2 27.01.2011 18:01
Pascal ABC. Перевод из двоичной в десятичную систему счисления. ARTEM_KA Помощь студентам 4 17.11.2010 22:15
Блок-схема в Паскале Игорь Н. Фриланс 6 27.10.2010 19:30
си++ перевод числа из двоичной системы в десятичную. Bonne Помощь студентам 1 13.04.2010 22:07
Перевод числа из двоичной системы в десятичную С++ kontroller Помощь студентам 2 15.02.2010 20:39