Помощь - Поиск - Пользователи - Календарь
Полная версия: Умножить элементы последовательности!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
tolyanl1985
Дана последовательность неотрицательных чисел, последнее из которых равно нулю, причём других равных нулю чисел в последовательности нет. Вычислить произведение положительных чисел этой последовательности

решил так:

program Posledovatelnost;
var
a,b:integer;
begin
Writeln('Введите через пробел последовательность положительных чисел, окончание ввода "0"');
read(a);
b:=1;
while a<>0 do begin
if a>0 then b:=b*a;
read(a);
end;
if b<>1 then writeln('Произведение положительных чисел последовательности = ',b)
else writeln('В последовательности кроме нуля нет элементов');
end.

Всё считает, но есть загвоздка когда вводишь последовательность "1 0" пишет ответ "В последовательности нет элементов" В чём ошибка подскажите плиз!!! Заранее огроменное спасибо
TarasBer
Загвоздка в том, что если произведение чисел в последовательности равно 1, то это не значит, что чисел в последовательности нет.
Гость
Цитата(TarasBer @ 19.11.2012 10:17) *

Загвоздка в том, что если произведение чисел в последовательности равно 1, то это не значит, что чисел в последовательности нет.



????????????? blink.gif
tolyanl1985
Помогите ПЛИЗ!!! !mol1.gif !mol1.gif !mol1.gif
TarasBer
У тебя есть последовательность, в которой одни единицы.
Произведение чисел в ней равно ЧЕМУ?
А программа, встретив такое значение, выводит ЧТО?

FLASH911
program Posledovatelnost; 
var
a,b:integer;
begin
Writeln('Введите через пробел последовательность положительных чисел, окончание ввода "0"');
read(a);
b:=1;
while a<>0 do begin
if a>0 then b:=b*a;
read(a);
end;
if b>0 then writeln('Произведение положительных чисел последовательности = ',b)
else writeln('В последовательности кроме нуля нет элементов');
end.


В этой строчке ошибка: if b>0 then writeln, зачем тебе b<>1, если нужно больше нуля?
Krjuger
Неправильно, если в списке нету элементов, то b будет тоже равно 1, потому что единицей инициализируется.
Я бы ввел банальный счетчик кол-ва элементов и не парился бы со всем этим.....
FLASH911
program Posledovatelnost; 
var
a,b,k:integer;
begin
Writeln('Введите через пробел последовательность положительных чисел, окончание ввода "0"');
read(a);
b:=1;
while a<>0 do begin
if a>0 then b:=b*a;
read(a);
k:=k+1;
end;
if (b>0) and (k>1) then writeln('Произведение положительных чисел последовательности = ',b)
else writeln('В последовательности кроме нуля нет элементов');
end.


Тогда так, с использованием счётчика.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.