Элементы массива

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

Ответить
Евгений Александрович
Сообщения: 82
Зарегистрирован: 19 дек 2009, 16:48

- количество положительных элементов массива;
- сумму элементов массива, расположенных после последнего элемента, равного нулю.

ПРОБЛЕМА: (со 2-ым заданием) Если я ввожу ноль, то прога норм работает. Но если я введу числа без нуля, то как сделать так, чтобы сумма не считалась, а ,к примеру, писало сообщение (" вы не ввели ноль") ?

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

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
int i,a[10],C,b[10],n,p,S;
void f1()
{
    int i,n=0; 
    
    
for(i=0;i<5;i++)
if(a[i]>0) {n++;b[n]=a[i];}
 
 
printf("\t\n\n");
printf("%d",n);
 
 
}
 
 
void f2()
{
int b;
int C=0;
n=5;
for(i=0;i<n/2;b=a[i],a[i]=a[n-1-i],a[n-1-i]=b,i++);


for(i=0;i<5;i++)
{
    if(a[i]!=0) 
 C+=a[i];
    else break;
}
printf("\t%d",C);

}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

А я бы второе задание написал следующим образом:

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

int S = 0;
for (int i = n-1; i >= 0 && a[i] != 0; --i)
{
   S += a[i];
}
При таком коде если не было указано ни одного нуля, то будет подсчитана сумма всего массива, что может быть одним из возможных и логичных вариантов развития событий (если случай отсутствия нуля в условии не был специально оговорен).

Если всё же хочется добиться вывода ошибки, то достаточно в конец приведённого мной кода добавить строку:

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

if (i < 0) std::cout << "Error has occurred: There is no zero element is the sequence" << std::endl;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Евгений Александрович
Сообщения: 82
Зарегистрирован: 19 дек 2009, 16:48

при i<0 сумма все равно выводится. КАк бы сделать чтоб сумма при ошбке уже не выводилсь.
IceFlame
Сообщения: 62
Зарегистрирован: 29 ноя 2009, 03:54

Ну, наверное, вывод сделать в ветке else вышеуказанного оператора if :)
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Ну я думал это само собой разумеется. Оказалось, что не разумеется :)

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

if (i < 0)
{
   std::cout << "Error has occurred: There is no zero element is the sequence" << std::endl;
}
else
{
   std::cout << "Resulting summ is << S << std::endl;
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить