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

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

17.02.2014, 21:26. Показов 3886. Ответов 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
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
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
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
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
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru