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

Среднее арифмитическое - C++

Восстановить пароль Регистрация
 
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
01.10.2013, 16:54     Среднее арифмитическое #1
Найти среднее арифмитическое элементов с четным индексом в одномерном массиве.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
main ()
{     
/* тут пропускаю объявление переменных и ввод массива*/
  
/*компилятор ругается на этот цикл:*/   
 for (i = 0; i < size; i++) / i - счетчик в массиве
       {
           if mas[i % 2 = 0] /mas - имя массива
              {
                Summa1 += mas[i]; /Summa1 - сумма элементов с четным индексом, 
                j++; / j - считаем их количество. Да, переменной j значение 0 добавил изначально.
              } 
       }
Что делаю не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2013, 16:54     Среднее арифмитическое
Посмотрите здесь:

C++ среднее арифмитическое значение трех чисел введеных с клавиатуры
Среднее арифмитическое положительных и отрицательных чисел в массиве C++
Даны 2 числа. Найти среднее арифмитическое и среднее геометрическое их модулей C++
В двумерном массиве найти среднее арифмитическое первого столбца... C++
C++ для каждой из матриц A[9], b[16], u C[6] определить среднее арифмитическое их положительных елементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
01.10.2013, 17:01     Среднее арифмитическое #2
строка 8, вот так:
C++
1
if (mas[i % 2 = 0])
И комментарий в с++ начинается с двойной косой, а не обинарной
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
01.10.2013, 17:16  [ТС]     Среднее арифмитическое #3
Algoritmer,
Ага, а еще вместо "=" должен быть "=="! Паскаль такой паскаль)
Правда пока все равно не считает то, что нужно...
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
01.10.2013, 17:26     Среднее арифмитическое #4
Цитата Сообщение от Super GT Посмотреть сообщение
j++; / j - считаем их количество
зачем? разве переменная size/2 не содержит это же количество?
Catstail
Модератор
 Аватар для Catstail
21440 / 10225 / 1666
Регистрация: 12.02.2012
Сообщений: 17,100
01.10.2013, 17:30     Среднее арифмитическое #5
C++
1
2
3
4
5
6
7
   double s=0,p=0,avg;
   for (int i=0; i<n; i+=2)
   {
        p++;
        s+=(double) Arr[i];
   }
   avg=a/p;
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
01.10.2013, 17:31     Среднее арифмитическое #6
Algoritmer, и даже так будет неправильно - компилятор ругается.
И даже если так
C++
1
if (mas[i % 2 == 0])
будет неверно, хотя компилятор и пропустит это. В результате получим сумму всех элементов.
Super GT, чтоб найти сумму чётных элементов есть два варианта. Первый - изменить условие на
C++
1
if (i % 2 == 0)
Мы же всё-таки индекс проверяем.
Второй вариант изменить сам цикл:
C++
1
for (i = 0; i < size; i=i+2)
Никто же не заставляет перебирать каждый элемент массива. Кстати, в этом случае даже условие внутри цикла проверять не придётся.
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
01.10.2013, 17:34     Среднее арифмитическое #7
В общем как-то так:
C++
1
2
3
4
5
6
7
8
9
for (i = 0; i < size; i++) / i - счетчик в массиве
{
       if (mas[i % 2 == 0]) /mas - имя массива
       {
            Summa1 += mas[i]; /Summa1 - сумма элементов с четным индексом, 
            j++; //ладно, это оставим
       }    
} 
double srednArifm=Summa1*1.0/j;
Добавлено через 2 минуты
Цитата Сообщение от lipnev Посмотреть сообщение
1
for (i = 0; i < size; i=i+2)
Никто же не заставляет перебирать каждый элемент массива
Вообще да. Так и надо.
Catstail
Модератор
 Аватар для Catstail
21440 / 10225 / 1666
Регистрация: 12.02.2012
Сообщений: 17,100
01.10.2013, 17:36     Среднее арифмитическое #8
Поправочка:

C++
1
2
3
4
5
6
7
double p=0,avg=0;
   for (int i=0; i<n; i+=2)
   {
        p++;
        avg+=(double) Arr[i];
   }
   avg=/p;
Добавлено через 1 минуту
Непонятно, зачем перебирать все индексы, отбирая четные, когда можно сразу пройтись только по четным индексам?
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
01.10.2013, 17:37     Среднее арифмитическое #9
Цитата Сообщение от Catstail Посмотреть сообщение
avg=/p;
точнее
C++
1
avg/=p;
Catstail
Модератор
 Аватар для Catstail
21440 / 10225 / 1666
Регистрация: 12.02.2012
Сообщений: 17,100
01.10.2013, 17:39     Среднее арифмитическое #10
Ну да...
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
01.10.2013, 18:43  [ТС]     Среднее арифмитическое #11
Все верно говорите, товарищи!
Алгоритм вроде выстраиваю верно, но получается так, что когда пишу:
C++ (Qt)
1
for (i = 0; i < size; i= i+2)
- идет подсчет элементов с нечетными индексами
а если:
C++ (Qt)
1
for (i = 1; i < size; i= i+2)
- то с четными.
Raali
01.10.2013, 18:46
  #12

Не по теме:

Цитата Сообщение от Super GT Посмотреть сообщение
Паскаль такой паскаль)
АрифмИтика такая арифмитика

Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
01.10.2013, 19:07  [ТС]     Среднее арифмитическое #13
Короче, пытаюсь найти ТОЛЬКО сумму четных элементов:
C++ (Qt)
1
2
for (i = 0; i < size; i+2)
      Summa1 += mas[i];
Итог: сумма нечетных элементов

Аналогично, пытаюсь найти сумму нечетных элементов:
C++ (Qt)
1
2
for (i = 0; i < size; i++)
      Summa1 += mas[i];
Итог: выдает сумму ВСЕХ элементов

Если сделать: (для четных)
C++ (Qt)
1
2
for (i = 0; i < size; i+3)
      Summa1 += mas[i];
Итог: сумма элементов с шагом в три элемента

Вопрос: имеет ли смысл считать с 1, как в паскале?
===============================
Сделал так для четных:
C++ (Qt)
1
2
for (i = 1; i < size; i= i+2)
      Summa1 += mas[i];
Итог: работает
А начиная с 0 - считает нечетные. После Паскаля такая путаница, блин, где, как это индексирование...какая тонкость есть, найти бы ее...

Ага, догадываюсь. Чтоб считать нечетные, надо вести поиск с (-1). Хех.(

Добавлено через 8 минут
Все, сделал!

Для четных:
f
C++ (Qt)
1
2
or (i = 1; i < size; i= i+2)
      Summa1 += mas[i];
Для нечетных:
C++ (Qt)
1
2
for (i = 0; i < size; i= i+2)
      Summa1 += mas[i];
Хех, никто не сказал (или не заметил), что счет для четных элементов ведется с 1-цы.)

Однако если по логике, то бред какой-то. Вы мне скажите, ОНО ТАК И ЕСТЬ, или это мне только кажется?
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
01.10.2013, 19:11     Среднее арифмитическое #14
Цитата Сообщение от Super GT Посмотреть сообщение
Вопрос: имеет ли смысл считать с 1, как в паскале?
Я думаю, что нет. Потому что в задании чётко сказано:
Цитата Сообщение от Super GT Посмотреть сообщение
элементов с четным индексом
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
01.10.2013, 19:38  [ТС]     Среднее арифмитическое #15
lipnev,
А, кажется, я допер. Компилятор считает с 0, а не с 1-цы. Поэтому первый для меня элемент на экране - ЧЕТНЫЙ, а не наоборот.
Мда...

Тогда вопрос, как сделать для элементов с нечетным индексом?

Если так:
C++ (Qt)
1
2
for (i = 0; i < size; i=i+1)
      Summa1 += mas[i];
или так:
C++ (Qt)
1
2
for (i = 0; i < size; i++)
      Summa1 += mas[i];
то выводит сумму вообще ВСЕХ элементов!

Добавлено через 22 минуты
Для нечетных сделал так, ибо ничего другого пока не придумал:
C++ (Qt)
1
2
3
4
5
for (i = 0; i < size; i++)
       if (i % 2 != 0)
        {
          Summa2 += mas[i];
        }
А вообще, спс за подсказку при обработке индексов отдельных элементов массива, я долго не мог понять причину бреда.
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
01.10.2013, 19:47     Среднее арифмитическое #16
Какие уж для тебя чётные, а какие нечётные, реши сам, но вот циклы:
for(i=0; i<size; i+=2)
for(i=1; i<size; i+=2)
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
01.10.2013, 20:04  [ТС]     Среднее арифмитическое #17
Цитата Сообщение от Qwertiy Посмотреть сообщение
for(i=0; i<size; i+=2) for(i=1; i<size; i+=2)
Ну да. 1-ый для чет и 2-ой для нечет. Правда написал для нечет через цикл, потому как кто-то говорил что с 1-цы считать нельзя, но если нет, то ок.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2013, 20:07     Среднее арифмитическое
Еще ссылки по теме:

Найти среднее арифмитическое и среднее геометрическое двух целых чисел C++
Найти среднее арифмитическое матрицы C++
C++ Найти среднее арифмитическое элементов массива

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

Или воспользуйтесь поиском по форуму:
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
01.10.2013, 20:07     Среднее арифмитическое #18
Считать можно с чего угодно. Просто цикл с 1 пропускает индекс 0
Yandex
Объявления
01.10.2013, 20:07     Среднее арифмитическое
Ответ Создать тему
Опции темы

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