Предмет: Информатика, автор: coolkate1

Язык Си. Известно что в массиве x есть один элемент равный 1. Определите ,где он находится и вычислите сумму положительных элементов последующих за ним. Если есть вариант проще, чем мой, то напишите, пожалуйста
Я написала такой вот код (фрагмент), но он работает некорректно, т к не понятно откуда берет сумму, даже если элемента 1 нет :
printf("\nМассив X[n]:\n");
for (i = 0; i < n; i++) {
X[i] = -5 + rand() % 15;
cout << "X[" << i << "] = " << X[i] << endl;
}
for (i = 0; i < n; i++)
{
if (X[i] == 1) {
index = i;
}
}
if (index == 55) cout << "i is empty" << endl;
for (i = index + 1; i < n; i++) {
if (X[i] > 0) sum += X[i];
}
if (index != 55) printf_s("Индекс элемента, содержащего единицу: %d\n", index);
if (index != 55) printf_s("Сумма последующих элементов: %d\n", sum);
return 0;


restIess: Ток щас увидел, что у тебя там в коде, так тебе чистый СИ нужен или плюсы тоже подойдут?

Ответы

Автор ответа: restIess
0

#include <stdio.h>

#include<time.h>

#include<stdlib.h>

#define SIZE 10

int main()

{

srand(time(NULL));

int arr[SIZE], idx1 = SIZE + 1, _sum = 0;

for (int i = 0; i < SIZE; i++) {

 arr[i] = -5 + rand() % 10;

 printf("%i ", arr[i]);

}

for (int i = 0; i < SIZE; i++) {

 if (arr[i] == 1 && idx1 == SIZE + 1)

  idx1 = i;

 if (i > idx1 && arr[i] > 0)

  _sum += arr[i];

}

printf("\n%i\n", _sum);

return 0;

}

Похожие вопросы
Предмет: Русский язык, автор: Anatolya23
Предмет: Алгебра, автор: yuriybaluba