Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ не могу решить задачу... 8(

Автор: d00mik 16.08.2005 4:47

совсем недавно я начел изучать паскаль так что в нём хорошо не шарю...
а паскаль я изучаю на вашем сайте (Уроки от Дмитриева Эдуарда) Урок 8 и там есть домашние задание
" Написать программу получения числа из отдельно введенных однозначных чисел. Для этого постарайтесь придумать свой алгоритм, реализующий цикл для ввода чисел. Концом ввода должен служить нуль."
как же это делается... ? sad.gif
кстати хотелось бы если у каждого домашнего задание были бы и ответы...

Автор: kent 16.08.2005 11:16

Можно вот так:


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 16.08.2005 12:03

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

var t : longint;
i : byte;

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


Автор: FreeMan 16.08.2005 12:47

Что то тут бесконечным циклом несёт. У тебя i в теле цикла не изменяется. То есть либо бесконечный цикл (при i<>0) или вообще без цикла (при i=0)

Автор: klem4 16.08.2005 14:25

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 16.08.2005 15:43

о!спасибо всем щас всё испробую 8)

Автор: volvo 16.08.2005 16:21

klem4,
smile.gif

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

так ли необходимо условие If i <> 0 Then... Если его убрать, что-то изменится?

Автор: klem4 16.08.2005 16:39

Да! ведь если ее убрать, число t лишний раз домножется на 10 , и в конце будет лишний ноль. rolleyes.gif

Автор: virt 16.08.2005 18:43

я просто забыл в цикле поставить 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.