Дана последовательность неотрицательных чисел, последнее из которых равно нулю, причём других равных нулю чисел в последовательности нет. Вычислить произведение положительных чисел этой последовательности
решил так:
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
19.11.2012 14:17
Загвоздка в том, что если произведение чисел в последовательности равно 1, то это не значит, что чисел в последовательности нет.
Гость
19.11.2012 21:54
Цитата(TarasBer @ 19.11.2012 10:17)
Загвоздка в том, что если произведение чисел в последовательности равно 1, то это не значит, что чисел в последовательности нет.
?????????????
tolyanl1985
19.11.2012 22:08
Помогите ПЛИЗ!!!
TarasBer
20.11.2012 14:09
У тебя есть последовательность, в которой одни единицы. Произведение чисел в ней равно ЧЕМУ? А программа, встретив такое значение, выводит ЧТО?
FLASH911
20.11.2012 23:18
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
21.11.2012 0:12
Неправильно, если в списке нету элементов, то b будет тоже равно 1, потому что единицей инициализируется. Я бы ввел банальный счетчик кол-ва элементов и не парился бы со всем этим.....
FLASH911
21.11.2012 22:01
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.
Тогда так, с использованием счётчика.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.