Консультация № 159197
30.01.2009, 15:54
50.00 руб.
0 2 1
Здравствуйте, эксперты! Помогите решить задачу!
В одномерном массиве, состоящем из N вещественных элементов вычислить:
Номер минимального элемента массива;
Сумму элементов массива, расположенных между первым и вторым отрицательным элементами;
Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом-все остальные.

Обсуждение

давно
Посетитель
7438
7205
30.01.2009, 16:35
общий
это ответ
Здравствуйте, Попов Андрей Александрович!
Решение в приложении.
Если что-то непонятно, задавайте вопросы в мини-форуме

Приложение:
#include <math.h>
#include <stdio.h>
#include <conio.h> //для getch()

void main()
{
const int N = 10;
double x[N] = {5., -0.3, 0.5, 1.,0.4,-2.,1., 0.5, -3., 0.1};
int i, j, iType, imin;
double min, Sum;

printf ("Array: "); //выведем массив
for (i=0; i<N; i++)
printf("%4.1g ",x[i]);
for(i=1,imin=0,min=x[0]; i<N; i++) //найдем минимальный элемент
{
if (x[i]<min)
{
min = x[i];
imin = i;
}
}
printf ("\n\nMin element x[%d] = %g",imin+1,min); //выведем номер минимального (=индексу + 1) и его значение

for(i=iType=0; i<N && iType!=2; i++) //iType - в каком месте анализа
{
switch (iType)
{
case 0: //сначала ищем первый отрицательный
if (x[i]<0)
{
iType = 1; //меняем тип анализа
Sum = 0; //подготавливаем переменную к суммированию
}
break;
case 1: //после первого отрицательного
if (x[i]<0)
iType = 2; //если встретилось отрицательное - анализ закончен (см в заголовке цикла)
else
Sum += x[i]; //суммируем положительные между первыми отрицательными
}
}
if (iType != 2) //проверим, были ли у нас двое отрицательных?
printf ("\n\nTwo negative numbers not found");
else
printf ("\n\nSum = %g", Sum); //выводим

for (i=0; i<N-1; i++) //отсортируем по возрастанию модуля числа методом пузырька
{
for (j=i+1; j<N; j++)
{
if (fabs(x[i]) > fabs(x[j]))
{
min = x[i]; //меняем местами
x[i] = x[j];
x[j] = min;
}
}
}

printf ("\n\nSorted array: "); //выведем массив
for (i=0; i<N; i++)
printf("%4.1g ",x[i]);

printf("\n");
getch();
}
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
30.01.2009, 20:07
общий
А можно ещё проставить clrskr(); а то после нескольких запусков ничего не понятно. Спасибо
Форма ответа