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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 19.12.2010, 18:38   #1
Razza
 
Регистрация: 12.11.2010
Сообщений: 9
Репутация: 10
По умолчанию как избавиться от 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
Адрес: В Visual Studio 2008
Сообщений: 599
Репутация: 70
По умолчанию

Цитата:
выдаёт 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
Репутация: 10
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
>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


17:02.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru