Помощь - Поиск - Пользователи - Календарь
Полная версия: не могу решить задачу... 8(
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
d00mik
совсем недавно я начел изучать паскаль так что в нём хорошо не шарю...
а паскаль я изучаю на вашем сайте (Уроки от Дмитриева Эдуарда) Урок 8 и там есть домашние задание
" Написать программу получения числа из отдельно введенных однозначных чисел. Для этого постарайтесь придумать свой алгоритм, реализующий цикл для ввода чисел. Концом ввода должен служить нуль."
как же это делается... ? sad.gif
кстати хотелось бы если у каждого домашнего задание были бы и ответы...
kent
Можно вот так:

Program ReceptionOfNumber;
uses Crt;
var number : Extended;
    digit,code : Integer;
    Temp,S : String;
begin
     Clrscr;{Очищаем экран}
     WriteLn('Input digits:');
     S := '';{Обнуляем строку}
     repeat{Начало цикла}
       ReadLn(digit);{Вводим цифру}
       Temp := '';{Обнуляем строку}
       str(digit,Temp);{Преобразуем число в строку}
       S := S + Temp;{Склеиваем строки}
     until digit = 0;{Если цифра равна нулю заканчиваем цикл}
     val(S,number,code);{Преобразуем строку в число}
     WriteLn('Result: ',number,';');{Выводим результат}
     ReadKey;{Ждем нажатия клавиши для выхода из программы}
end.

virt
зачем переводить цифры в строки и обратно?

var t : longint;
    i : byte;

begin
   t := 0;
   reasdln(i);
   while i <> 0 do
      begin
         t := t*10 + i;
      end;
   writeln(t);
end.

FreeMan
Что то тут бесконечным циклом несёт. У тебя i в теле цикла не изменяется. То есть либо бесконечный цикл (при i<>0) или вообще без цикла (при i=0)
klem4
virt, идея класная, но ты действительно ошибся немного smile.gif Я поправил :

uses crt;

var t : longint;
    i : byte;

begin

   clrscr;

   t := 0;

   repeat

       readln(i);

       if i<>0 then
        t := t*10 + i;

   until i=0;

   writeln(t);

   readln;

end.

d00mik
о!спасибо всем щас всё испробую 8)
volvo
klem4,
smile.gif
if i<>0 then
  t := t*10 + i;

так ли необходимо условие If i <> 0 Then... Если его убрать, что-то изменится?
klem4
Да! ведь если ее убрать, число t лишний раз домножется на 10 , и в конце будет лишний ноль. rolleyes.gif
virt
я просто забыл в цикле поставить readln(i);

var t : longint;
    i : byte;

begin
   t := 0;
   reasdln(i);
   while i <> 0 do
      begin
         t := t*10 + i;
         readln(i);
      end;
   writeln(t);
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.