Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 19.12.2010, 18:38   #1
Razza
 
Регистрация: 12.11.2010
Сообщений: 9
По умолчанию как избавиться от 1.#INF ?

Добрый вечер, программа на выходе выдаёт 1.#INF, как вылечить?

Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <math.h>


int main()
{
	using namespace std;
	ifstream in_stream;
	in_stream.open("RND1.dat");

	
	const int n=4096, t=6;
	double MassSeq[n], MassPt[t]={0,0,0,0,0,0};

		for (int i=0; i<n; i++)
			in_stream>>MassSeq[i];

	for (int i=0; i<n; i=i+3)
		{
			if (MassSeq[i] < MassSeq[i+1] && MassSeq[i+1] < MassSeq[i+2])
				MassPt[0]=MassPt[0]+1;
			if (MassSeq[i] < MassSeq[i+2] && MassSeq[i+2] < MassSeq[i+1])
				MassPt[1]++;
			if (MassSeq[i+1] < MassSeq[i] && MassSeq[i] < MassSeq[i+2])
				MassPt[2]++;
			if (MassSeq[i+1] < MassSeq[i+2] && MassSeq[i+2] < MassSeq[i])
				MassPt[3]++;
			if (MassSeq[i+2] < MassSeq[i] && MassSeq[i] < MassSeq[i+1])
				MassPt[4]++;
			if (MassSeq[i+2] < MassSeq[i+1] && MassSeq[i+1] < MassSeq[i])
				MassPt[5]++;
		}
	for (int i=0; i<t; i++)
	cout << MassPt[i] << "\n";

	double func=0, ps=0;
	ps=(n/3)*(1/t);

	cout.setf(ios::fixed);
	cout.setf(ios::showpoint);
	cout.precision(4);

		for (int i=0; i<t; i++)
			func = func + (((MassPt[i] - ps)*(MassPt[i] - ps)) / ps) ;

	cout << endl << endl << func << endl;
	in_stream.close();
	system("PAUSE");
	return 0;
}
Razza вне форума Ответить с цитированием
Старый 19.12.2010, 18:43   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
выдаёт 1.#INF, как вылечить?
Не делить на 0.
В вашем случае, первое, что попадается на глаза, попробуйте так поменять, может заработает:
Код:
ps=(static_cast<double>(n)/3)*(1/static_cast<double>(t));
Или так (но в этом я уверен меньше):
Код:
ps=(n/3.0)*(1.0/t);
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 19.12.2010, 18:45   #3
Razza
 
Регистрация: 12.11.2010
Сообщений: 9
По умолчанию

Syuf спасибо большое, очень помогли!
Razza вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
>40 ESTABLISHED, как избавиться? pavel25 Работа с сетью в Delphi 0 29.10.2010 21:39
Как избавиться от атозамены Vatrolf Microsoft Office Excel 2 06.08.2010 14:45
Как избавиться от ошибки faraon1792 Помощь студентам 0 11.05.2010 20:24
как избавиться от 2.26188E+19?? banker Microsoft Office Excel 11 12.12.2007 10:35
как избавиться от закладки ЧИЖ Общие вопросы Delphi 3 24.06.2007 00:05