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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2016, 19:46   #1
ZRoman31
 
Регистрация: 30.10.2016
Сообщений: 5
По умолчанию Ошибка в консольном приложении

Программа компиллируется, но выполняется не полностью

Код:
#include <iostream>
#include <locale.h>
#include <conio.h>
#include <math.h>


using namespace std;

int main()
{
    setlocale(0,"");
    float f,k,sum1,mid,mid2,sum2,sum3,sum4,S,Ss,tpN,df,tt,rf,T[10],N[10],M[10],L[10][20],o,p,c,vpn;
    int n,i,h,g,m,u,x;
    start:;
    char form[200];
    o=0;
    sum1=0;
    sum2=0;
    cout<<"введите размер выборки"<<endl;
    cin>>n;
    cout<<"введите выборку"<<endl;
    for(i=1;i<=n;i++)
    {
        cin>>f;
        N[i]=f;
        sum1=sum1+f;
    }
    cout<<"введите приборную погрешность"<<endl;
    cin>>tt;
    mid=sum1/n;
    cout<<"выборочное среднее значение: "<<mid<<endl;
    for(i=1;i<=n;i++)
    {
        sum2=sum2+pow((N[i]-mid),2);
    }
    S=sqrt(sum2/(n-1));
    cout<<"выборочное среднее квадратичное: "<<S<<endl;
   

	
	if (n == 3)
            {
                vpn = 1.4;
            }

	else    if (n == 4)
            {
                vpn = 1.7;
            }

	else  if (n == 5)
            {
                vpn = 1.9;
            }

	else   if (n == 10)
            {
                vpn = 2.3;
            }



	m=n;
	for(i=1;i<=n;i++)
	{
	 if((fabs(N[i]-mid))/S >=vpn)
	 {
		 M[i]=0;
		 m--;
		 cout<<"N["<<i<<"] - промах"<<mid<<endl;
	 }
	 else
	 {
		 M[i]=N[i];
	 }

	  for(i=1;i<=m;i++)
    {
        cin>>k;
        M[i]=k;
        sum3=sum3+k;
    }

	  mid2=sum3/m;
	  cout<<"выборочное среднее значение с учетом промахов: "<<mid<<endl;

	  for(i=1;i<=m;i++)
    {
        sum4=sum4+pow((M[i]-mid2),2);
    }
    S=sqrt(sum4/(m-1));
    cout<<"выборочное среднее квадратичное с учетом промахов: "<<S<<endl;
    Ss=S/sqrt((float)m);

    cout<<"выборочное среднее квадратичное отклонение среднего: "<<Ss<<endl;
    if(n==3)
    {
        tpN=4.3;
    }
    if(n==4)
    {
        tpN=3.2;
    }
    if(n==5)
    {
        tpN=2.8;
    }
    if(n==10)
    {
        tpN=2.3;
    }
    df=Ss*tpN;
    cout<<"доверительная граница: "<<df<<endl;
    rf=df+tt;
    cout<<"погрешность измерений: "<<rf<<endl;
    cout<<"результат измерений: "<<mid<<"+/-"<<rf<<endl;
    cout << "Повторить? 1/0" << endl;
cin >> x;
if ( x == 1)
{
    goto start;
}

     return 0;
}
Выполняется до строчки "cout<<"выборочное среднее квадратичное: "<<S<<endl;"
Изображения
Тип файла: jpg ПИ(4).jpg (81.1 Кб, 150 просмотров)
ZRoman31 вне форума Ответить с цитированием
Старый 03.11.2016, 19:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Начните с того, что массивы нумеруются с 0
p51x вне форума Ответить с цитированием
Старый 04.11.2016, 14:49   #3
ZRoman31
 
Регистрация: 30.10.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Начните с того, что массивы нумеруются с 0
исправил, не заработала
ZRoman31 вне форума Ответить с цитированием
Старый 04.11.2016, 15:40   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Отладчик что говорит? Где программа висит или падает?
p51x вне форума Ответить с цитированием
Старый 05.11.2016, 16:34   #5
ZRoman31
 
Регистрация: 30.10.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Отладчик что говорит? Где программа висит или падает?
После исправлений на 22 строке вылетает
Изображения
Тип файла: jpg ПИ(5).jpg (65.7 Кб, 142 просмотров)
Тип файла: jpg ПИ(6).jpg (97.0 Кб, 129 просмотров)
ZRoman31 вне форума Ответить с цитированием
Старый 05.11.2016, 16:44   #6
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Массив размера n принимает индексы от 0 до n-1.

У тебя стоит проверка на i<=m в цикле, поэтому у тебя выход за границы массива.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 05.11.2016, 18:30   #7
ZRoman31
 
Регистрация: 30.10.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
Массив размера n принимает индексы от 0 до n-1.

У тебя стоит проверка на i<=m в цикле, поэтому у тебя выход за границы массива.
поменял на n-1 и m-1, не помогло
ZRoman31 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdTelnetClient + консольном приложении nikcpp Работа с сетью в Delphi 0 16.05.2016 17:06
Информация в консольном приложении demigod82 Общие вопросы C/C++ 1 10.03.2012 09:26
PopupMenu в консольном приложении anger Общие вопросы Delphi 7 08.09.2011 13:56
Timer в консольном приложении Lauri Общие вопросы Delphi 8 05.04.2011 04:20
Вывод в консольном приложении Акунёк Общие вопросы C/C++ 6 16.02.2011 18:01