![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Neon6868 |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание:В одномерном массив, состоящем из 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 |
![]()
Сообщение
#2
|
Гость ![]() |
Ошибка - здесь:
for(i=n;i>0;i--) Индексация - с 0 до n-1, а не до n... Правильно - будет так: for(i=n-1;i>=0;i--) Сообщение отредактировано: volvo - 12.05.2007 14:45 |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 23:56 |