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

Сделать дружественную функцию для критерия Кохрена - C++

Восстановить пароль Регистрация
 
Федорец
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 65
24.03.2014, 13:42     Сделать дружественную функцию для критерия Кохрена #1
Не знаю как сделать дружественную функцию для критерия кохрена, все остальное работает


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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
 
class Sample
{
    int n;
    int a[50];
public:
    Sample();
    Sample(int n, int a[50]);
    void scan();
    void print();
    double sred();
    int rozmah();
    double disp();
    double sred_otkl();
    friend double kokhren (Sample a);
    
};
 
Sample::Sample()
{
    n=0;
    for(int i=0;i<50;i++)
        a[i]=0;
}
 
Sample::Sample(int n, int a[50])
{
    this->n=n;
    for(int i=0;i<50;i++)
        this->a[i]=a[i];
}
 
void Sample::scan()
{
    cout<<"print count elements: ";
    cin>>n;
    cout<<"print "<<n<<" elementts: ";
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
}
 
void Sample::print()
{
    cout<<n<<" elements: ";
    for(int i=0;i<n;i++)
        cout<<a[i]<<" ";
    cout<<endl;
}
 
int Sample::rozmah()
{   int r=0;
    cout<<"Rozmah => ";
    for (int i=0;i<n;i++)
    {
            r=a[i]-a[0];
        }
            return r;
}
 
 double Sample::disp()
 {
    double D=0;
    for (int i=0;i<n;i++)
    {
     D+=(a[i]-(sred()))*(a[i]-(sred()));
    }
    return D/(n-1);
 }
 
double Sample::sred()
{
    double c=0,s=0;
    for(int i=0;i<n;i++)
    {
        c+=a[i];
        s=c/n;
    }
    return s;
}
 
 double Sample::sred_otkl()
 {
  double Otkl;
  for (int i=0;i<n;i++)
  {
    Otkl=sqrt(disp());
  }
  return Otkl;
}
 
double kokhren (Sample aa)
{
  double max=0,s=0,K=0;
    for(int i=0;i<aa.n;i++)
    {
        if(aa.a[i]>max)
            max=aa.a[i];
        s+=aa.a[i];
        K=max/s;
    }
    return K;
 
}
 
int main()
{
    Sample a;
    a.scan();
    cout<<"Srednee=> "<<a.sred()<<endl;
    cout<<a.rozmah()<<endl;
    cout<<"Disperciya=> "<<a.disp()<<endl;
    cout<<"Sred.otkl.=> "<<a.sred_otkl()<<endl;
    cout<<"Kriteriy Kokhrena=> "<<kokhren(a)<<endl;
    return 0;
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2014, 13:42     Сделать дружественную функцию для критерия Кохрена
Посмотрите здесь:

Как организовать дружественную функцию для печати массива C++
Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) C++
C++ Друзья, подскажите, можно ли дружественную функцию сделать виртуальной?
C++ Добавить дружественную функцию в программу
Как переопределить дружественную функцию ввода для класса наследника C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 13:55     Сделать дружественную функцию для критерия Кохрена #2
а зачем? разве нельзя сделать эту ф-цию членом и вызывать ее у экземпляра класса?
Федорец
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 65
24.03.2014, 14:03  [ТС]     Сделать дружественную функцию для критерия Кохрена #3
извините, можно кодом обьяснить?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 14:08     Сделать дружественную функцию для критерия Кохрена #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Sample
{
    ...
public:
    ...
    double kokhren ();
    
};
 
double Sample::kokhren ()
{
  double max=0,s=0,K=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]>max)
            max=a[i];
        s+=a[i];
        K=max/s;
    }
    return K;
 
}
Федорец
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 65
24.03.2014, 14:25  [ТС]     Сделать дружественную функцию для критерия Кохрена #5
так в задании сказано, обязательно дружественной функцией. И, кстати, у меня она не верна. Там формула другая
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 14:28     Сделать дружественную функцию для критерия Кохрена #6
Цитата Сообщение от Федорец Посмотреть сообщение
дружественную функцию для критерия кохрена, все остальное работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double kokhren (Sample& aa)
{
  double max=0,s=0,K=0;
    for(int i=0;i<aa.n;i++)
    {
        if(aa.a[i]>max)
            max=aa.a[i];
        s+=aa.a[i];
        K=max/s;
    }
    return K;
 
}
не работает потому что вы копируете аргумент попробуйте & поставить или конструктор копирования определить вручную
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 15:34     Сделать дружественную функцию для критерия Кохрена
Еще ссылки по теме:

Добавить дружественную функцию C++
C++ Передача строки в дружественную функцию
C++ Разработать (и применить) для классов A и B дружественную функцию, позволяющую определять текущую дату и время

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

Или воспользуйтесь поиском по форуму:
Федорец
1 / 1 / 1
Регистрация: 02.02.2014
Сообщений: 65
24.03.2014, 15:34  [ТС]     Сделать дружественную функцию для критерия Кохрена #7
моя запись рабочая и так, но она не по формуле. Формула:G=Smax / ∑ Si
Преподаватель сказала эти строки написать в мейн:
Sample*a=new Sample [n];
kokhren (Sample *a);
a[i].disp;
Yandex
Объявления
24.03.2014, 15:34     Сделать дружественную функцию для критерия Кохрена
Ответ Создать тему
Опции темы

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