Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 6
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вот, примерно, то что вам нужно было сделать. Я умеренно растянул задачу, для наглядности. При желании это все можно уместить в несколько строк.
Код: Выделить весь код
#include <iostream>
#include <stdlib.h>
#include <time.h>

//Если вам сложно решить какую любо задачу, не усложняйте ее еще больше,
//применяйте метод "разделяй и властвуй". Для наглядности, 
//разделю весь процесс на отдельные части, так больше итераций, но проще понимать код
//потом, при желании, можно обьеденить, но ваша задача - изучение 

//деректива препроцессора, укажем количество элементов массива
#define N 10

using namespace std;

int main ()
{
   srand ( time(NULL) );
  //будущий массив
  int a[N];
  //итератор
  int i;
  //заполнение массива случайными числами от 49 до -50
  //можете заменить ручным вводом
  for(i=0;i<N;i++)
      a[i]=rand()%100-50;
  //выведем массив
  for(i=0;i<N;i++)
      cout<<a[i]<<" ";
  cout<<endl;
  //находжение минимального эллемента
  int min = a[0];
  for(i=1;i<N;i++)
      if (min>a[i]) min=a[i];
  //нахождение первого положительного
  cout << "Минимальный элемент: " << min << endl;  
  i=0;
  while((a[i]<0)&&(i<N)) i++;
  if (i==N) //мы не нашли положительного элемента
	  {
	  cout<<"Положительные элементы отсутствуют.";//сообщили
	  return(-1);//вышли с кодом ошибки
	  }
  else{
  	  int first = i;
	  //нахождение последнего положительного элемента
	  int last = i;
	  for (i=first;i<N;i++) if (a[i]>0) last=i;
	  //первый элемент тоже можно было найти таки мже способом:
	  //полный перебор с конца до начала, последный в списке - был бы первым в массиве
	  //просто показал оба способа
	  //теперь у вас есть два номера: начало и конец сумируемой области
	  cout<<"\nЭлементы между крайними положительными:\n";
	  int sum =0;
	  for (i=first+1; i<last; i++) //от следующего за первым, до последнего не включаяя его
	  {
		sum+=a[i];
		cout<<a[i]<<" ";
	  }
	  //в случае если элемент один, то first == last и сумма будет равна 0:
	  
	  cout << "\nСумма элементов между крайними положительными("<<a[first]<<" и "<<a[last]<<"): "<<sum<<"\n";		
	}
 return(0);
}
Если вы не используете потоковый вывод, переформатируйте его в stdio
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:21, 26-10-2012 | #9