Одномерные Числовые Массивы

203

New Member
21.02.2012
2
0
#1
Задача 1:
В одномерном массиве, состоящем из не более чем n (n<=10) вещественных элементов, вводимых с клавиатуры, вычислить:
1) количество элементов массива, больших С;
2) произведение элементов массива, расположенных после максимального по модулю элемента.
Преобразовать массив таким образом, чтобы сначала располагались все отрицательные
элементы, а потом — все положительные (элементы, равные 0, считать
положительными).

Привет форумчане. У меня возникла проблема в решении вот этой задачи. У меня получилась сделать только 1 условие а с остальными беда. Может кто поможет в решении этой задачи. Если нужно могу кинуть код где я выполнил 1 условие задачи. Заранее спасибо.
 

Гость
#2
Примерно так, могут быть ошибки. Специально не комментировал операторы, хотя избыточно подробно описал переменные - надеюсь, сам разберешься.
Код:
#include <iostream>
#include <math.h>
using namespace std;

const float C=100.111;	 
float dest[9];

int main(int argc, char** argv) {
int num=0;		  //кол-во элементов > С
int index=0;		 //номер максимального по модулю элемента
float max;			//его значение
for (char i=0;i<10;i++)
{
cin >> dest[i];
if (dest[i]>C)
num++;
if (!i)
max=fabs(dest[i]);
else if (fabs(dest[i])>=max)
{
max=fabs(dest[i]);
index=i;		
}
}
//далее max - произведение элементов, больших максимального по модулю
max=1;
for (char i=0;i<10;i++)
{
int no_less_zero=0;	  //нет элементов <0
if (i>index)
max=max*dest[i];	 //здесь, в общем-то, ошибка.
if (dest[i]>=0&!no_less_zero)
{
for (char j=i+1;j<10;j++)
if (dest[j]<0)
{
float tmp=dest[i];
dest[i]=dest[j];
dest[j]=tmp;
}
else
no_less_zero=1;
}
cout << dest[i]<< '\n';
}
cout << num<< '\n';
cout << index+1<< '\n';
cout << max;
return 0;
}