IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Одномерные массивы, Язык Си, Подскажите плз где ошибка
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Задание:В одномерном массив, состоящем из 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;
  }
  }
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
сообщение
Сообщение #2


Гость






Ошибка - здесь:
for(i=n;i>0;i--)

Индексация - с 0 до n-1, а не до n... Правильно - будет так:
for(i=n-1;i>=0;i--)


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Помощь больше не нужна!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 14:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name