Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 23:09   #1
Adrenalin4
Пользователь
 
Аватар для Adrenalin4
 
Регистрация: 31.10.2010
Сообщений: 14
По умолчанию Вычисление среднего арифметического положительных элементов.

Вычисление среднего арифметического положительных элементов с четными индексами. а так же как это сделать с Функцией?!


Код:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"

int main(void)
{
int b,k,a[6],s=0;

for(k=0;k<6;k++)  /* ввод 6ти элементов, функция scanf*/
 scanf("%i",&a[k]);

for(k=0;k<6;k++) 
 {
   b=k%2;
   if (b==0)
	 {
       if(a[k]>0)
       {
         s=(s+a[k])/2;
       }

     }
 }
printf("%i",s);
scanf("%i",s);

}
почему то не работает.
Adrenalin4 вне форума Ответить с цитированием
Старый 31.10.2010, 23:25   #2
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

Код:
#include <stdio.h>

int main()
{
    float mainarray[ 6 ], result = 0.0;
    for( int i = 0; i < 6; i++ )
    {
        scanf( "%f", &mainarray[ i ] );
        if( mainarray[ i ] > 0 && ( i % 2 ) == 0 )
            result += mainarray[ i ] / 2;
    }
    printf( "Result: %f\n", result );
    return 0;
}
А зачем тут функция? Если нужна, то куда её прилепить?
nowaalex вне форума Ответить с цитированием
Старый 31.10.2010, 23:32   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Во-первых, не работает как? Не компилируется, не выводится результат, возникает ошибка при выполнении, выводит результат, но не правильнго считает? Уточняем-с...

Во-первых, формула не правильная. Вам СНАЧАЛА нажно просуммировать, а потом уже делить полученное число на количество суммированных элементов, иначе бред получается. (То бишь в if(a[k]>0) вам нужно считать не только сумму, но и количество). А уже после фора делить полученную сумму на полученное количество.
Во-вторых, в душе не понимаю, зачем в конце проги стоит scanf("%i",s); ?

nowaalex, функция тут затем, чтоб передать туда главный массив и в ней посчитать и вернуть среднее арифметическое.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 31.10.2010 в 23:36.
ACE Valery вне форума Ответить с цитированием
Старый 31.10.2010, 23:36   #4
Adrenalin4
Пользователь
 
Аватар для Adrenalin4
 
Регистрация: 31.10.2010
Сообщений: 14
По умолчанию

извини я просто Visual Studio
изучаю 3 неделю.
нас учили подругому и просто из тго что ты напсал я ничего не понимаю.
а если в моем алгоритме что изменить что бы заработало. не знаете?

спасибо

ACE Valery

результат неправильный

Последний раз редактировалось Stilet; 01.11.2010 в 09:42.
Adrenalin4 вне форума Ответить с цитированием
Старый 31.10.2010, 23:47   #5
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Adrenalin4, nowaalex написал то же самое, что и вы.
Формулу поменяйте, как я сказала. Вместо
Код:
if(a[k]>0)
       {
         s=(s+a[k])/2;
       }
Код:
if(a[k]>0)
       {
         s=(s+a[k]);
kol ++;
       }
а после for: printf("%f", (float)s/kol);
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 01.11.2010, 00:04   #6
Adrenalin4
Пользователь
 
Аватар для Adrenalin4
 
Регистрация: 31.10.2010
Сообщений: 14
По умолчанию

у меня получилась вот такая программа:

Код:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"

int main(void)
{
int b,kol=0,k,a[6],s=0;

for(k=0;k<6;k++)  /* ввод 6ти элементов, функция scanf*/
 scanf("%i",&a[k]);

for(k=0;k<6;k++) 
 {
   b=k%2;
   if (b==0)
	 {
       if(a[k]>0)
       {
         s=(s+a[k]);
         kol++;
       }
     }
 }
printf("%f", (float)s/kol); 
scanf("%f");
getch();
return 0;
}

при вводе массива 2 -4 3 5 1 6
ответ получается 2 вместе 5.5
Adrenalin4 вне форума Ответить с цитированием
Старый 01.11.2010, 00:18   #7
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

Adrenalin4, вот код с функцией

Код:
#include <stdio.h>
int main()
{
    float count( float * array );

    float mainarray[ 6 ];

    for( int i = 0; i < 6; i++ )
        scanf( "%f", &mainarray[ i ] );

    printf( "Result: %f\n", count( mainarray ) );
    return 0;
}

float count( float * array )
{
    float result = 0;
    int numbersQuant = 0;
    for( int j = 0; j < 6; j++ )
        if( ( j % 2 ) == 0 && array[ j ] > 0 )
        {
            result += array[ j ];
            numbersQuant++;
        }
    return result / numbersQuant;
}

Последний раз редактировалось nowaalex; 01.11.2010 в 00:40. Причина: stupid mistake...
nowaalex вне форума Ответить с цитированием
Старый 01.11.2010, 00:22   #8
Adrenalin4
Пользователь
 
Аватар для Adrenalin4
 
Регистрация: 31.10.2010
Сообщений: 14
По умолчанию

я закрыл окно с << failed>> (окно с ошибками)
как его снова открыть
Adrenalin4 вне форума Ответить с цитированием
Старый 01.11.2010, 00:26   #9
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

какое окно с ошибками?
nowaalex вне форума Ответить с цитированием
Старый 01.11.2010, 00:28   #10
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Для тех, кому лень прочитать о массивах: а вы не задумывались, что ответ ДОЛЖЕН получиться 2? Я уж не говорю про использование дебаггера... В массивах нумерация идет с нуля. То бишь четные индексы - это 0, 2, 4. Под этими индексами у вас стоят числа: 2, 3, 1.
2 + 3 + 1 = 6 / 3 = 2
Так что программа все правильно считает.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++. Подсчёт среднего арифметического Negent Помощь студентам 1 15.08.2010 14:00
вычисление среднего арифметического по датам mori Microsoft Office Excel 6 17.12.2009 08:21
Нахождение среднего арифметического AliVe Паскаль, Turbo Pascal, PascalABC.NET 1 12.04.2007 00:25