Форум программистов, компьютерный форум CyberForum.ru

хочу понять - C++

Восстановить пароль Регистрация
 
davidovcom
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 9
17.02.2010, 00:03     хочу понять #1
ребята, подскажите, хочу не тупо решение, хочу поять.

Написать программу, которая позволяет заполнить массив случайным образом значениями в диапазоне от -9 до 9
//и выводит среднее значение элементов массива с четными номерами.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  srand(time(NULL));
   const int size=20;
   int ar[size],chetn=0,sredn=0;
   for(int i=0;i<size;i++)
   {
       ar[i]=rand()%19-9;
  
   if(ar[i]%2==0)
   {  
       chetn=chetn+ar[i];
   }
     sredn=chetn
   cout<<chetn;
 
   }
}
как мне суммировать это дело?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2010, 00:03     хочу понять
Посмотрите здесь:

C++ хочу учить C++
хочу понять как работает двумерный массив,буду задавть много вопросов C++
C++ Хочу выучить С++
Хочу загрузчик на С++ C++
Хочу научиться C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ccoder
 Аватар для ccoder
8 / 8 / 3
Регистрация: 05.02.2010
Сообщений: 41
17.02.2010, 00:09     хочу понять #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
srand(time(NULL));
 const int size=20;
 int ar[size],chetn=0,sredn=0;
 int evencount = 0; //счетчик четных значений
 for(int i=0;i<size;i++)
 {
 ar[i]=rand()%19-9;
if(ar[i]%2==0)
 { 
 chetn=chetn+ar[i]; //вот здесь суммируются четные значения!
 evencount++;
 }
 sredn=chetn/evencount; //среднее значение
 
 cout<<sredn;
}
}
davidovcom
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 9
17.02.2010, 00:36  [ТС]     хочу понять #3
ccoder, intcount - выводит только среднее значение,или есть другое применение ?

знаю что count указывает сколько раз значение встречается в массиве, а с intcount еще не сталкивался
ccoder
 Аватар для ccoder
8 / 8 / 3
Регистрация: 05.02.2010
Сообщений: 41
17.02.2010, 00:44     хочу понять #4
Цитата Сообщение от davidovcom Посмотреть сообщение
ccoder, intcount - выводит только среднее значение,или есть другое применение ?
знаю что count указывает сколько раз значение встречается в массиве, а с intcount еще не сталкивался
Жестоко конечно.. )) Я intcount на всякий случай даже переименовал в evencount. Видимо не зря... )
В данном случае - это просто переменная, которая подсчитывает количество четных значений в массиве!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
srand(time(NULL));
 const int size=20;
 int ar[size],chetn=0,sredn=0;
 int evencount = 0; //счетчик четных значений
 for(int i=0;i<size;i++)
 {
 ar[i]=rand()%19-9;
if(ar[i]%2==0) // Это проверка на четность
 { 
 chetn=chetn+ar[i]; //вот здесь суммируются четные значения!
 evencount++; // если встречается четное значение счетчик увеличивается на еденицу!
 }
}
sredn=chetn/evencount;//Здесь же вычесляется среднее значение четных элементов в массиве! Путем деления суммы элементов на их количество и заносится в переменную sredn
cout << sredn << endl;
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
17.02.2010, 00:48     хочу понять #5
Пойдёт, но немного нерационально, ибо
sredn=chetn/evencount;

будет выполняться всегда, независимо от того, чётный элемент или нет. То есть: если
(грубо говоря) например, 12 элементов чётные, а 8 нечётные, то среднее арифметическое будет подсчитываться и
в том случае, если элемент нечётный. Другое дело, что оно останется неизменным.
Но лишние действие будет произведено 8 раз. А зачем нам лишние сущности? Нерационально
А поэтому:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <time.h>
using namespace std;
 
int main () { 
 srand(time(NULL));
 const int size=20;
 int ar[size],chetn=0,sredn=0;
 int evencount = 0;
 for(int i=0;i<size;i++)   {
  ar[i]=rand()%19-9;
  if(ar[i]%2== 0) {  
   chetn=chetn+ar[i];
   evencount++;
  }
 }
 printf ("%d", chetn/evencount);
 getchar ();
 return 0;
}
...И да прстят меня за printf...
ccoder
 Аватар для ccoder
8 / 8 / 3
Регистрация: 05.02.2010
Сообщений: 41
17.02.2010, 00:53     хочу понять #6
Цитата Сообщение от kravam Посмотреть сообщение
Пойдёт, но немного нерационально, ибо
sredn=chetn/evencount;
Я случайно Исправил, спасибо ) Не доглядел, что эта операция выполняется в теле for.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2010, 05:23     хочу понять
Еще ссылки по теме:

Уже обсуждалась ранне,но я хочу понять,где у меня ошибка в проге C++
Хочу изучить C++ C++
C++ Хочу понять когда можно делать оператор delete

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
davidovcom
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 9
17.02.2010, 05:23  [ТС]     хочу понять #7
Ребята, спасибо вам огромное.Все разъяснили предельно ясно.
С такими учителями все шансы есть постигнуть предмет.

Спасибо, всем вам!!!
Yandex
Объявления
17.02.2010, 05:23     хочу понять
Ответ Создать тему
Опции темы

Текущее время: 06:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru