Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43

Проверка статических гипотез методом f-критерия Стьюдента

17.02.2014, 21:26. Показов 3915. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задали задачу, написать программу проверки статических гипотез методом f-критерий Стьюдента в объектно-ориентированной среде программирования с визуальным интерфейсом.

Задачу написал в консоли С++, а не могу реализовать на С++ с визуальным интерфейсом...

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
int Welch (double *data1,double *data2,int n1,int n2,double *criterion,int *n)
//
// Функция сравнивает две выборки по критерию Стьюдента
// при неизвестных неравных дисперсиях (критерий Уэлча).
// Обозначения:
//       data1 - первая выборка,
//       data2 - вторая выборка,
//          n1 - численность первой выборки,
//          n2 - численность второй выборки,
//  *criterion - критериальная статистика,
//          *n - число степеней свободы.
// Возвращаемое значение:
//   0 при нормальном окончании расчета,
//  -2 при ошибке в вычислениях.
//
{
 double d1,d2,  // Дисперсии
        m1,m2,  // Средние
        s1,s2;  // Рабочие величины
 
 d1 = Moment (2,data1,0,&m1,n1);
 d2 = Moment (2,data2,0,&m2,n2);
 
 if (!d1 && !d2)
   return -2;
 
 /////////////////////////////
 // Вспомогательные вычисления
 s1 = d1 / n1;
 s2 = d2 / n2;
 
else 
cout << "Ошибка в вычислениях\n";
getch();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2014, 21:26
Ответы с готовыми решениями:

Рассчёт критических значений критерия Стьюдента
Здравствуйте. Возможно ли, и если возможно, то как на С++ создать программу для рассчёта...

Проверка критерия Пирсона (хи-квадрат)
Всем привет. Поставлена задача заполнить контейнер случайными числами и собственно, проверить...

Найти среднюю оценку каждого стьюдента
Для каждого из N студентов группы известны ФИО и оценки по 4рем дисциплинам. Найти собственно нужно...

13
164 / 49 / 27
Регистрация: 04.06.2013
Сообщений: 636
17.02.2014, 21:51
кидаете на форму несколько Edit, столько сколько переменных.кидаете кнопку.на событие onclick пишете вызов функции.Только вместо cout << "Ошибка в вычислениях\n";
пишете ShowMessage("ошибка в вычеслении");
и там где return -2 пишеш тоже ShowMessage("-2");
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
17.02.2014, 23:14  [ТС]
спасиба, сейчас попробую.

Добавлено через 55 минут
накидал 6 Edit, 1 buttons.

Но каждому Edit нужно ж присваивать переменную. Подскажите пжл. синтаксис. И можно ли вывести ответ через memo ?
0
164 / 49 / 27
Регистрация: 04.06.2013
Сообщений: 636
17.02.2014, 23:17
так что ж сдесь плохого. а чтоб вывод был в мемо то вместо showmessage пиши
C++
1
2
Memo1->text="gfhfgh";
//можно так  Memo1->Lines->Add("fdgdfg"); //тогда текст добавляется в новую строчку
0
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
17.02.2014, 23:29  [ТС]
сделал вот так. как присвоить переменную к Edit1 и 2...?

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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include "megastat.h"
TForm1 *Form1;
int Welch (double *data1,double *data2,int n1,int n2,double *criterion,int *n)
{
 double d1,d2,
        m1,m2,
        s1,s2;
 
 d1 = Moment (2,data1,0,&m1,n1);
 d2 = Moment (2,data2,0,&m2,n2);
 
 if (!d1 && !d2)
    ShowMessage("-2");
 
 s1 = d1 / n1;
 s2 = d2 / n2;
 
 *criterion = fabs (m1 - m2) * sqrt (s1 + s2);
 
 *n = (int) floor ((s1 + s2) * (s1 + s2) /
                   (s1 * s1 / (n1 - 1) + s2 * s2 / (n2 - 1)));
 
 return 0;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(int Welch);
}
//---------------------------------------------------------------------------
0
164 / 49 / 27
Регистрация: 04.06.2013
Сообщений: 636
17.02.2014, 23:32
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
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include "megastat.h"
TForm1 *Form1;
int Welch (double *data1,double *data2,int n1,int n2,double *criterion,int *n)
{
 double d1,d2,
        m1,m2,
        s1,s2;
 
 d1 = Moment (2,data1,0,&m1,n1);
 d2 = Moment (2,data2,0,&m2,n2);
 
 if (!d1 && !d2)
    Memo1->Text="-2";
 
 s1 = d1 / n1;
 s2 = d2 / n2;
 
 *criterion = fabs (m1 - m2) * sqrt (s1 + s2);
 
 *n = (int) floor ((s1 + s2) * (s1 + s2) /
                   (s1 * s1 / (n1 - 1) + s2 * s2 / (n2 - 1)));
 
 return 0;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int Welch(параметры);
}
Добавлено через 1 минуту
вот например переменная int a, float b
делать так
C++
1
2
a=StrToInt(Edit1->Text);
b=StrToFloat(Edit2->Text);
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
18.02.2014, 00:02  [ТС]
int Welch(параметры); Параметры , это вы имели (double *data1,double *data2,int n1,int n2,double *criterion,int *n) ?

и куда правильно вставить этот кусок ?
C++
1
2
3
4
5
6
//*data1=StrToFloat(Edit1->Text);
//*data2=StrToFloat(Edit2->Text);
//n1=StrToInt(Edit3->Text);
//n2=StrToInt(Edit4->Text);
//*criterion=StrToFloat(Edit5->Text);
//n=StrToInt(Edit6->Text);
Добавлено через 12 минут
ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
[C++ Error] Unit1.cpp(24): E2268 Call to undefined function 'fabs'
[C++ Error] Unit1.cpp(24): E2268 Call to undefined function 'sqrt'
[C++ Error] Unit1.cpp(26): E2268 Call to undefined function 'floor'
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'п' (0xef)
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'а' (0xe0)
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'р' (0xf0)
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'а' (0xe0)
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'м' (0xec)
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'е' (0xe5)
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'т' (0xf2)
[C++ Error] Unit1.cpp(40): E2206 Illegal character 'р' (0xf0)
0
164 / 49 / 27
Регистрация: 04.06.2013
Сообщений: 636
18.02.2014, 20:53
да.параметры я имел введу именно то.а
C++
1
2
3
4
5
6
//*data1=StrToFloat(Edit1->Text);
//*data2=StrToFloat(Edit2->Text);
//n1=StrToInt(Edit3->Text);
//n2=StrToInt(Edit4->Text);
//*criterion=StrToFloat(Edit5->Text);
//n=StrToInt(Edit6->Text);
нужно написать в код нажатия кнопки.
PS почитайте про функции С++
0
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
19.02.2014, 00:34  [ТС]
ругается на
C++
1
2
3
[C++ Error] Unit1.cpp(24): E2268 Call to undefined function 'fabs'
[C++ Error] Unit1.cpp(24): E2268 Call to undefined function 'sqrt'
[C++ Error] Unit1.cpp(26): E2268 Call to undefined function 'floor'
0
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
24.02.2014, 23:42  [ТС]
подскажите в чем ошибка

C++
1
2
[C++ Error] Unit1.cpp(76): E2451 Undefined symbol 'buf1'
[C++ Error] Unit1.cpp(76): E2451 Undefined symbol 'buf2'
Код программы
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
//---------------------------------------------------------------------------
#pragma hdrstop
#include <fstream.h>
#include <iomanip.h>
#include <math.h>
#include <iostream>
#include <conio>
#include "megastat.h"
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int Welch (double *data1,double *data2,int n1,int n2,double *criterion,int *n)
{
 double d1,d2,  // ?????????
        m1,m2,  // ???????
        s1,s2;  // ??????? ????????
 
 d1 = Moment (2,data1,0,&m1,n1);
 d2 = Moment (2,data2,0,&m2,n2);
 
 if (!d1 && !d2)
   ShowMessage( -2);
 
 /////////////////////////////
 // ??????????????? ??????????
 s1 = d1 / n1;
 s2 = d2 / n2;
 
 //////////////////////////////////////
 // ?????????? ????????????? ??????????
 *criterion = fabs (m1 - m2) * sqrt (s1 + s2);
 
 ////////////////////////////////////
 // ?????????? ????? ???????? ???????
 *n = (int) floor ((s1 + s2) * (s1 + s2) /
                   (s1 * s1 / (n1 - 1) + s2 * s2 / (n2 - 1)));
 
 return 0;
}
 
void main (void)
{
int n1 = 53,
n2 = 20,
buf2;
 
double
data1[] = { 165, 164, 158, 168, 162, 166, 167, 154, 165, 164, 172, 167, 164, 157,164, 164, 166, 173, 164, 160, 164, 157, 152, 175, 165, 174,163,155,163,162,178,166,165,163,168,161,164,173,161,161,160,164,166, 170, 167, 159, 158, 164, 161, 163, 163, 165, 170},
data2[] = { 182, 183, 168, 174, 165, 174, 163, 168, 179, 185, 171, 174, 180, 175,179,181,169,184,172,174},
buf,buf1;
if (!Welch (data1,data2,n1,n2,&buf,&buf2))
{
buf1 = TDistribution (buf2,buf);
cout << buf
<< ", p = " << buf1
<< ", n = " << buf2 << endl;
}
else
ShowMessage ("?????? ? ???????????");
getch();
}
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(buf1+" "+buf2);
}
//---------------------------------------------------------------------------
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
25.02.2014, 00:29
У тебя путаница. Откуда форма знает о buf1 и buf2? Хотя бы объяви их глобально.
К тому же "перемешаны понятия консольного (cout, getch) и оконного приложения (ShowMessage)".
Как следствие, "рудимент" в виде функции main. Формально она не является ошибкой, но обычно так не делают (нет вызова, автоматом код в main не заработает).
Короче, изучай "мат. часть".
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
25.02.2014, 02:29  [ТС]
а подскажи пжл. как расписать эту строку в С++ Builder

C++
1
2
3
cout << buf
<< ", p = " << buf1
<< ", n = " << buf2 << endl;
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
25.02.2014, 04:15
Попробуй так:
C++
1
ShowMessage(String(buf) + ", p = " + String(buf1) + ", n = " + String(buf2));
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
25.02.2014, 18:27  [ТС]
спасиба за мысль, сделал так
C++
1
2
3
Memo1->Lines->Add(buf);
Memo1->Lines->Add("p = "+ FloatToStr(buf1));
Memo1->Lines->Add("n = " + IntToStr(buf2));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2014, 18:27
Помогаю со студенческими работами здесь

Нахождение критерия делимости
Помогите пожалуйста с нахождением критерия делимости большого десятичного числа, реализованное в...

Сделать дружественную функцию для критерия Кохрена
Не знаю как сделать дружественную функцию для критерия кохрена, все остальное работает ...

Вычисление критерия Пирсона: исправить программу
Листинг программы: // генератор-псевдочисел.cpp: определяет точку входа для консольного...

Подпрограмма: Разработать дружескую функцию для расчета критерия Фишера (F = σ 1 / σ 2).
Здраствуйте , есть задание: Создать класс выборка Sample размерности N. Предусмотреть функции для...

Составить программу для вычисления суммы k членов ряда, где k определяется из критерия
Составить программу для вычисления суммы k членов ряда, где k определяется из критерия, ||Uk|...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru