Программа на с++
Задание:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) номер минимального по модулю элемента массива;
2) сумму модулей элементов массива, расположенных после первого от-
рицательного элемента.
#include iostream
#include vector
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int s = 0;
int k = -1;
int n;
int min = 10000;
int p = -1;
cout << "Введите размер массива" << endl;
cin >> n;
vector double A(n);
cout << "Заполните массив" << endl;
for (int i = 0; i < n; i++) {
cin >> A[i];
}
for (int i = 0; i < n; i++) {
if (abs(A[i]) < min) {
min = A[i];
p = i;
}
}
for (int i = 0; i < n; i++) {
if (A[i] < 0)
k = i;
break;
}
for (int i = k; i < n; i++) {
s = s + abs(A[i]);
}
cout << "Номер минимального по модулю элемента массива: " << p << endl;
cout << "Сумма модулей элементов расположенных после первого отрицательного элемента: " << s << endl;
return 0;
}
Убрал угловые скобки у vector и include,потому что они тут не отображаются.
Сумма почему-то неправильно считается. Не вижу где ошибка. Помогите найти ошибку
if (A[i] < 0)
k = i;
break;
Т. к. нет {}, то в теле if только k = i;, а break; просто в теле for
P.s. А отлаживать не пробовал?
Чел, во первых стоило бы присвоить min = A[0], так как все элементы могут быть больше. Во вторых я не понимаю каким образом ты хочешь присвоить s=s+abs(A[i]) если это элементы разных типов.
А номер минимального по модулю элемента вообще какой в таком вот, например, массиве: -5 6 5 -6 -5? Их здесь сразу три с номерами 0, 2 и 4, да и то только, если нумерация начинается с нуля, как традиционно принято в C/C++, а иначе это элементы с номерами 1, 3, 5. А что делать, если отрицательных элементов в массиве или вообще нет, или первый отрицательный элемент в массиве - последний, то есть такой, за которым никаких элементов не расположено. В общем, я бы всё переписàла заново и бòлее продуманно!
。◕‿◕。
