Замена первого отрицательного элемента в массиве по условию

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Quadrad
Сообщения: 1
Зарегистрирован: 28 дек 2014, 11:22

дан массив d{12} найти произведение всех элементов меньше 5 и если это произведение будет меньше нуля то заменить первый по счету отрицательный элемент на 0 иначе на 12 вывести результат.

Код: Выделить всё

#include <iosream>
using namespace std;
int main()
{int d[12],i,p=1;
for(i=0;i<12;i++)
cin>>d[i];
for(i=0;i<12;i++)
if(d[i]<5)
{p=p*d[i];}
if(p<0)
for(i=0;i<12;i++)
if(d[i]<0)
{d[i]=0; break;}
else
{d[i]=12; break;}
cout<<"p="<<p<<"d[i]="<<d[i]<<endl;
system("pause");}
вот мой вариант
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Должно быть так:
Quadrad писал(а): если это произведение будет меньше нуля то заменить первый по счету отрицательный элемент на 0 иначе на 12 вывести результат.
А у тебя получается
если первый элемент меньше нуля, то заменить его на ноль, иначе заменить на 12"
А вычисленное ранее произведение, вообще никак не используется.

Проанализируй условия внутри второго цикла. Условие должно быть сложным. Если элемент меньше нуля, тогда... и внутри ещё одно условие: если произведение меньше нуля...
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить