Форум «Всё о Паскале» _ Ада и другие языки _ Одномерные массивы
Автор: Neon6868 12.05.2007 18:24
Задание:В одномерном массив, состоящем из 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 12.05.2007 18:44
Ошибка - здесь:
for(i=n;i>0;i--)
Индексация - с 0 до n-1, а не до n... Правильно - будет так: