Помощь - Поиск - Пользователи - Календарь
Полная версия: Одномерные массивы
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Neon6868
Задание:В одномерном массив, состоящем из n элементов, вычислить:
1)Количество положительных элементов массива
2)Сумму элементов массива, расположенных после последного нулевого элемента
Сначала надо преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а затем все остальные.

Я программу написал, но она неправильно считает кол-во элементов, расположенных после последнего нулевого элемента.Всегда выводится значение 0.Если в цикле
Код
for(i=i+1;i<n;i++) summa=summa+a[i];
вместо начального значения i=i+1 написать например i=5, то всё правильно считается.Подскажите как это исправить?

Программа:
Код

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
  {
  const int n=10;
  int a[n],i,x,m=0;
  printf("\nIsxodnii massiv\n");
  randomize();
  for (i=0;i<n;i++)
  {
  a[i]=random(10)-5;
  printf("%3d",a[i]);
  }
  for (i=0;i<n;i++)
  {
  if (a[i]<=1)
  {
  x=a[m];
  a[m]=a[i];
  a[i]=x;
  m++;
  }
  }
  printf("\nPreobrazovannii massiv\n");
  for (i=0;i<n;i++) printf("%3d",a[i]);
  int pol=0;
  for(i=0;i<n;i++)
  if (a[i]>=0) pol++;
  printf("\nKol-vo polozhitelnix elementov=%d",pol);
  int summa=0;
  for(i=n;i>0;i--)
  {
  if (a[i]==0)
  {
  for(i=i+1;i<n;i++) summa=summa+a[i];
  printf("\nSumma elementov posle poslednego nulevogo elementa=%d",summa);
  return;
  }
  }
}
volvo
Ошибка - здесь:
for(i=n;i>0;i--)

Индексация - с 0 до n-1, а не до n... Правильно - будет так:
for(i=n-1;i>=0;i--)
Neon6868
Помощь больше не нужна!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.