IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Умножить элементы последовательности!, Помогите!!!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Анатолий

Репутация: -  0  +


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

решил так:

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" пишет ответ "В последовательности нет элементов" В чём ошибка подскажите плиз!!! Заранее огроменное спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(TarasBer @ 19.11.2012 10:17) *

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



????????????? blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Анатолий

Репутация: -  0  +


Помогите ПЛИЗ!!! !mol1.gif !mol1.gif !mol1.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


У тебя есть последовательность, в которой одни единицы.
Произведение чисел в ней равно ЧЕМУ?
А программа, встретив такое значение, выводит ЧТО?



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


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, если нужно больше нуля?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Неправильно, если в списке нету элементов, то b будет тоже равно 1, потому что единицей инициализируется.
Я бы ввел банальный счетчик кол-ва элементов и не парился бы со всем этим.....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


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.


Тогда так, с использованием счётчика.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.05.2024 12:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name