Консультация № 191152
16.06.2017, 15:35
0.00 руб.
16.06.2017, 17:50
0 5 1
Здравствуйте! У меня возникли сложности с таким вопросом: Помогите решить задачу:
В одномерном массиве, состоящем из М вещественных элементов ,вычислить 1. Номер минимального элемента; 2. Сумму элементов массива, расположенных между первым и вторым отрицательными элементами

Обсуждение

давно
Мастер-Эксперт
17387
18345
16.06.2017, 17:30
общий
Адресаты:
Вам нужно реализовать алгоритм вручную или написать программный код на алгоритмическом языке? Если нужно написать код, то на каком именно языке?
Об авторе:
Facta loquuntur.
давно
Посетитель
401210
4
16.06.2017, 17:48
общий
Код на алгоритм. Языке
С++
давно
Мастер-Эксперт
17387
18345
16.06.2017, 17:49
общий
Адресаты:
Я перенесу консультацию в соответствующий раздел.
Об авторе:
Facta loquuntur.
давно
Мастер-Эксперт
17387
18345
16.06.2017, 17:51
общий
Обратите, пожалуйста, внимание на данную консультацию, перенесённую из другого раздела.
Об авторе:
Facta loquuntur.
давно
Посетитель
7438
7205
17.06.2017, 16:33
общий
это ответ
Здравствуйте, dimnatvik@ya.ru!
Примерно так...
Вводим число элементов массива М, создаем динамический массив соответствующего размера.
Заполняем случайными числами из диапазона [-50.0:149.99].
Положительных больше, чтобы во второй задаче была чаще ситуация, когда
между первыми отрицательными элементами есть положительные элементы
[code h=200]#include <iostream>
#include <iomanip>
#include <conio.h>
#include <time.h>

using namespace std;

int main(void)
{
int M;
int i, iMin, i1;
double dMin;
double dSum;

srand( (unsigned)time( NULL ) ); //инициируем генератор псевдослучайных чисел

cout << "Enter M: ";
cin >> M; //Введем М
double *a = new double[M]; //создадим массив из М вещественных чисел
for (i = 0; i < M; i++) //заполним его псевдослучайными числами
{ //сделаем так, чтобы положительных было больше
a[i] = (rand()%20000)/100. - 50;//диапазон чисел [-50. : 149.99]
cout << a[i] << " "; //выведем
}

//1 //ищем номер минимального элемента
//в начале считаем, что минимальный - нулевой элемент
iMin = 0; //индекс минимального
dMin = a[0]; //значение минимального

for (i=1; i<M; i++) //по всем остальным элементам массива
{
if (a[i] < dMin) //сравниваем с минимальным
{ //новый найден
iMin = i; //индекс
dMin = a[i]; //значение
}
} //выведем минимальный и его индекс
//к индексу добавим 1, чтобы 0 индекс вывелся, как 1
cout << endl << "min = a[" << iMin+1 << "] = " << dMin << endl;

//2 //найдем сумму чисел между первыми отрицательными числами
dSum = 0; //сумма сначала равна 0
//найдем первый отрицательный элемент
for (i=0; i<M; i++) //по всем, начиная с начала
{
if (a[i] < 0)
break; //если элемент отрицательный - выходим из цикла
}

for (i1=++i; i<M; i++) //запомним индекс следующего элемента, чтобы потом его вывести
{ //начинаем с текущего индекса до конца
if (a[i] < 0)
break; //если встретился второй отрицательный - выходим
dSum += a[i]; //иначе - складываем
}
if ((i1 == i)||(i == M)) //если стоят рядом два отрицательных числа
//или найдено только ОДНО отрицательное число
cout << "numbers not found" << endl; //то выводим сообщение, что числа не найдены
else //иначе выводим какие числа сложили и сумму
cout << "sum a[" << i1+1 << "]...a[" << i << "] = " << dSum << endl;

delete[] a; //освобождаем память динамического массива

getch(); //ждем нажатие на клавишу
return 0;
}
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа