Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
qxiton
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 19
#1

Функция для нахождения среднего значения - C++

07.03.2010, 13:25. Просмотров 1249. Ответов 16
Метки нет (Все метки)

Скажите пожалуйста, что у меня тут неправильно... я знаю что много чего, скажите что исправить, чтобы она работала. Условие задачи: написать функцию для нахождения среднего значения всех мин-ных и макс-ных элементов массива и замены им все макс-ные элементы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream.h>
#include <conio.h>
float func(float *a[], int k)
{
    float min=a[0];
    float max=a[0];
    for(int i=0;i<k;i++)
    {
 
        if a[i]<min
        min=a[i];
 
        if a[i]>max
        max=a[i];
    }
    int k1=0;
    int k2=0;
    float sum1=0;
    float sum2=0;
    for(int i=0;i<k;i++)
    {
        if min==a[i]
        {
            k1=k1+1;
            sum1=sum1+a[i];
        }
        if max==a[i]
        {
            k2=k2+1;
            sum2=sum2+a[i];
        }
    }
    float srz;
    srz=(sum1+sum2)/(k1+k2);
    for(int i=0;i<k;i++)
    {
        if a[i]==max
        a[i]=srz;
    }
    return 0;
}
void main ()
{
    float mas[]={1.2, 2.6, 1.8, 4.7, 3.9, 6.6, 4.5, 8.3, 0.4, 9.3};
    int i;
    clrscr ();
    for (i=0;i<10;i++)
    {
        func(mas[i],10);
        cout<<mas[i]<<" ";
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2010, 13:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция для нахождения среднего значения (C++):

Функция для нахождения среднего арифметического пяти чисел типа float - C++
1. напишите программу, которая использует функцию для нахождения среднего арифметического пяти чисел типа float, вводимых с клавиатуры...

функция нахождения среднего арифметического массива - C++
подскажите пожалуста код программы по нахождению среднего арифметического одномерного массива использую функцию.

Математическая функция для которой нужно решить задачу нахождения максимального (минимального) значения - C++
Математическая функция для которой нужно решить задачу нахождения максимального (минимального) значения ln(x) min{x,y} ...

Написать циклическую программу нахождения среднего арифметического значения векторов - C++
Такой вопрос у меня есть задание в котором написано следующее, составить и испытать циклическую программу для получения результата т.е....

Функция по расчету среднего значения массива - C++
Добрый вечер, друзья. Помогите, пожалуйста, создать функцию по расчету среднего значения одномерного массива. надеюсь на вашу поддержку!

Функция заполнения массива и сравнения среднего значения элементов - C++
Написать функцию, которая заполняет массив случайными числами. Принимаемые параметры – имя массива, его размер и диапазон случайных чисел....

16
to4kin
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
07.03.2010, 13:39 #2
C++
1
2
3
4
5
for (i=0;i<10;i++)
        {
                func(mas[i],10);
                cout<<mas[i]<<" ";
        }
Вот это для чего? У тебя же функция работает со всем массивом, а ты передаешь ей только 1 элемент. Нужно так:
C++
1
func(mas,10);
0
qxiton
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 19
07.03.2010, 13:43  [ТС] #3
Ну хорошо, это понятно... вот только ошибки у меня в функции, там полный бред как я понял, и справить сам не знаю как.
0
to4kin
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
07.03.2010, 13:45 #4
покажи ошибки
0
qxiton
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 19
07.03.2010, 13:49  [ТС] #5
Compiling 1\LAB_4_1.CPP:
Error 1\LAB_4_1.CPP 5: Cannot convert 'float *' to 'float'
Error 1\LAB_4_1.CPP 6: Cannot convert 'float *' to 'float'
Error 1\LAB_4_1.CPP 10: Illegal use of floating point
Error 1\LAB_4_1.CPP 11: Illegal use of floating point
Error 1\LAB_4_1.CPP 13: Illegal use of floating point
Error 1\LAB_4_1.CPP 14: Illegal use of floating point
Error 1\LAB_4_1.CPP 20: Multiple declaration for 'i'
Error 1\LAB_4_1.CPP 22: If statement missing (
Error 1\LAB_4_1.CPP 37: If statement missing (
Warning 1\LAB_4_1.CPP 41: 'srz' is assigned a value that is never used
Error 1\LAB_4_1.CPP 43: Declaration syntax error
Error 1\LAB_4_1.CPP 54: Declaration missing ;
Error 1\LAB_4_1.CPP 54: Compound statement missing }
Warning 1\LAB_4_1.CPP 54: Function should return a value
Warning 1\LAB_4_1.CPP 54: 'max' is assigned a value that is never used
Warning 1\LAB_4_1.CPP 54: 'min' is assigned a value that is never used
Warning 1\LAB_4_1.CPP 54: Parameter 'a' is never used

Добавлено через 33 секунды
Со скобками понятно, а вот остально я не понимаю.
0
to4kin
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
07.03.2010, 13:53 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
 
float func(float a[], int k)
{
        float min=a[0];
        float max=a[0];
        for(int i=0;i<k;i++)
        {
 
                if (a[i]<min)
                min=a[i];
 
                if (a[i]>max)
                max=a[i];
        }
        int k1=0;
        int k2=0;
        float sum1=0;
        float sum2=0;
        for(int i=0;i<k;i++)
        {
                if (min==a[i])
                {
                        k1=k1+1;
                        sum1=sum1+a[i];
                }
                if (max==a[i])
                {
                        k2=k2+1;
                        sum2=sum2+a[i];
                }
        }
        float srz;
        srz=(sum1+sum2)/(k1+k2);
        for(int i=0;i<k;i++)
        {
                if (a[i]==max)
                a[i]=srz;
        }
        return 0;
}
int main ()
{
        float mas[]={1.2, 2.6, 1.8, 4.7, 3.9, 6.6, 4.5, 8.3, 0.4, 9.3};
        func(mas,10);
        for (int i = 0; i < 10; i++)
            std::cout << mas[i] << " ";
}
0
qxiton
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 19
07.03.2010, 13:54  [ТС] #7
Цитата Сообщение от to4kin Посмотреть сообщение
std::cout << mas[i] << " ";
что такое std?
0
Dobro10
1 / 1 / 0
Регистрация: 07.03.2010
Сообщений: 7
07.03.2010, 13:58 #8
Цитата Сообщение от qxiton Посмотреть сообщение
что такое std?
изучаешь С++ и не знаешь что такое std? ну это вроде директива пространство имен, если я не ошибаюсь..
1
to4kin
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
07.03.2010, 14:01 #9
верно, можно было и так:

C++
1
2
3
using namespace std:
.....
cout << mas[i] << " ";
но можно и так

C++
1
std::cout << mas[i] << " ";
И небольшие замечания по коду:
1) нужно писать #include <iostream>, а не #include <iostream.h>
2) привыкай сразу давать переменным разумные имена
3) и почему функция типа float, когда она возвращает только int?
4) делай код читабельным: разделяй циклы и т.д. пустой строкой, ставь пробелы перед знаками и после:
не претендую на полную правильность кода, но примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
 
int func(float a[], int count)
{
    float min = a[0], max = a[0], sumMin = 0, sumMax = 0;
    int countMin = 0, countMax = 0;
 
    for(int i = 0; i < count; i++)
    {
        if (a[i] < min)
            min = a[i];
 
        if (a[i] > max)
            max=a[i];
    }
 
    for(int i = 0; i < count; i++)
    {
        if (min == a[i])
        {
            countMin++;
            sumMin += a[i];
        }
 
        if (max == a[i])
        {
            countMax++;
            sumMax += a[i];
        }
    }
 
    for(int i = 0; i < count; i++)
    {
        if (a[i] == max)
            a[i] = (sumMin + sumMax)/(countMin + countMax);
    }
 
    return 0;
}
int main ()
{
        float mas[] = {1.2, 2.6, 1.8, 4.7, 3.9, 6.6, 4.5, 8.3, 0.4, 9.3};
 
        func(mas,10);
 
        for (int i = 0; i < 10; i++)
            std::cout << mas[i] << " ";
}
2
Dobro10
1 / 1 / 0
Регистрация: 07.03.2010
Сообщений: 7
07.03.2010, 14:03 #10
Цитата Сообщение от to4kin Посмотреть сообщение
верно, можно было и так:

C++
1
2
3
using namespace std:
.....
cout << mas[i] << " ";
но можно и так

C++
1
std::cout << mas[i] << " ";
Про второй вариант не знал надо запомнить.
0
qxiton
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 19
07.03.2010, 14:09  [ТС] #11
У меня продолжает выдавать ошибки
Error 1\LAB_4_1.CPP 20: Multiple declaration for 'i'
Error 1\LAB_4_1.CPP 35: Multiple declaration for 'i'
Error 1\LAB_4_1.CPP 47: Type qualifier 'std' must be a struct or class name
Error 1\LAB_4_1.CPP 47: Statement missing ;
0
to4kin
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
07.03.2010, 14:12 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
 
using namespace std;
 
int func(float a[], int count)
{
    float min = a[0], max = a[0], sumMin = 0, sumMax = 0;
    int countMin = 0, countMax = 0;
 
    for (int i = 0; i < count; i++)
    {
        if (a[i] < min)
            min = a[i];
 
        if (a[i] > max)
            max = a[i];
    }
 
    for (int i = 0; i < count; i++)
    {
        if (min == a[i])
        {
            countMin++;
            sumMin += a[i];
        }
 
        if (max == a[i])
        {
            countMax++;
            sumMax += a[i];
        }
    }
 
    for (int i = 0; i < count; i++)
    {
        if (a[i] == max)
            a[i] = (sumMin + sumMax)/(countMin + countMax);
    }
 
    return 0;
}
int main ()
{
        float mas[] = {1.2, 2.6, 1.8, 4.7, 3.9, 6.6, 4.5, 8.3, 0.4, 9.3};
 
        func(mas,10);
 
        for (int i = 0; i < 10; i++)
            cout << mas[i] << " ";
}
скомпилируй этот код. и еще вопрос в какой среде собираешь проект?
0
qxiton
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 19
07.03.2010, 14:16  [ТС] #13
Borland C++ v3.1

Error 1\LAB_4_1.CPP 3: Declaration syntax error
указывает на using namespace std;
0
to4kin
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
07.03.2010, 14:20 #14
Ну первый совет - это использовать более новую среду. И по всей видимости в этой среде нету такого пространства имен, закомментируй строку using namespace std; И еще, раз нету пространства std, то нужно писать как писал ты #include <iostream.h>
0
qxiton
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 19
07.03.2010, 14:23  [ТС] #15
Сделал - заработала. Все нормально, много чего понял, спасибо!
0
07.03.2010, 14:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2010, 14:23
Привет! Вот еще темы с ответами:

Функция вычисления среднего значения возвращает странное значение - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;memory.h&gt; using namespace std; int maximum(int *mass, int n) //Функция...

Параметризованная функция вычисления среднего арифметического значения массива элементов - C++
Опишите параметризованную функцию вычисления среднего арифметического значения мас- сива элементов

Проблема с циклами для нахождения среднего бала. - C++
for(j=0;j&lt;n;j++){ (masp+j)-&gt;srb=0; (masp+j)-&gt;bal=0; for(j=0;j&lt;n;j++){ for (i=0,s=0;i&lt;kc;i++) ...

Рекурсивная функция нахождения максимального и минимального значения - C++
Рекурсивная функция нахождения максимального и минимального значения


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.