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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2013, 16:53   #1
caliente
Пользователь
 
Аватар для caliente
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию Проблема в вычислении.

Здравствуйте, помогите пожалуйста с кодом.
Не могу понять, где напартачил, в ответе пишет Z=1.#IND
Код:
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
	double a,y;
	double Z;
	double p; //sqrt(a+y).
	double m; //sqrt(a-y).
	char answer;
	setlocale(0,"Russian");
	cout<<"Программа вычисляет выражение\nZ=sqrt((sqrt(a-y)+sqrt(a+y))/(sqrt(a-y)-sqrt(a+y)))\n";
begin:
	cout<<"a="; cin>>a;
	cout<<"y="; cin>>y;
	p=sqrt(a+y);
	m=sqrt(a-y);
	if ((a+y)<0||(a-y)<0)
		cout<<"Отрицательное число под корнем.\n";
	else
		Z=sqrt((m+p)/(m-p));
	if((m-p)==0)
		cout<<"Деление на 0.\n";
	else
		cout<<"Z="<<Z<<"\n";
	cout<<"\n\tВы хотите продолжить работу?(Y/N)";
	cin>>answer;
	if ('Y'==answer||'y'==answer)
	{
		cout<<"\n";
		goto begin;
	}
	system("pause");
	return 0;
}
caliente вне форума Ответить с цитированием
Старый 20.02.2013, 17:21   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ну выводите дополнительно значения m и p. Они - такие как надо?
Abstraction вне форума Ответить с цитированием
Старый 21.02.2013, 01:32   #3
caliente
Пользователь
 
Аватар для caliente
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию

Спасибо, немного подправил и все получилось)
У меня есть еще вопрос,
Код:
if ('Y'==answer||'y'==answer)
в этот if еще нужно поместить русские "Н", "н", а я не знаю как это сделать
Код:
char symb='Н';
	char symb1='н';
	int tr=(int)(symb);
	int tr1=(int)(symb1);
	cout<<tr<<"\n"<<tr1<<"\n";
на сколько я понимая это я получу их код, а что с ним дальше делать?
caliente вне форума Ответить с цитированием
Старый 21.02.2013, 10:36   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
в этот if еще нужно поместить русские "Н", "н", а я не знаю как это сделать
Теоретически, при благоприятном расположении звёзд - точно так же:
Код:
if ('Н'==answer||'н'==answer)
Практически, надо понимать, что 'y' - это уже просто некоторое число, такое, что код символа 'y' равен этому числу (при компиляции программы в бинарный код компилятор подставит это значение). char - это число от 0 до 255, cin >> answer устанавливает значение переменной answer равным коду прочитанного символа.
Но если код символа 'y' известен и понятен, он одинаков во всех кодовых таблицах (т.е. таблицах соответствия символов числам), то со всякими загадочными символами вроде 'æ', 'ш' или 'Σ' всё не так просто. Разные кодовые таблицы задают разные соответствия и вполне может получиться так, что компилятор превратит 'н' в число 237 (код символа 'н' по таблице CP1251), а cin запишет значение 206 (код символа 'н' по таблице КОИ-8R). В результате чего, натурально, результат не сойдётся.

Какой-то конструктивный совет на тему того, что с этим делать, я дать затрудняюсь. Ищите по словам "кодировка в консольном приложении", "локаль"/"LOCALE", "кодировка при вводе"...
Abstraction вне форума Ответить с цитированием
Старый 22.02.2013, 02:56   #5
caliente
Пользователь
 
Аватар для caliente
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию

Подошли коды из таблицы 866 - MS-DOS.
Код:
if ('Y'==answer||'y'==answer||((char)(141))==answer||((char)(173))==answer)
caliente вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодом в VB, ошибка в вычислении факториала Богдан Величко Помощь студентам 1 10.04.2011 22:50
Вычислении функции blondino4ka_milk Общие вопросы C/C++ 17 13.04.2010 09:58
При вычислении максимального значения выдает О kerill385884 Помощь студентам 3 25.03.2010 18:52
Ошибка при вычислении.. CodeExpert Помощь студентам 7 17.02.2010 17:24
ошибка в вычислении wowka Помощь студентам 4 21.07.2008 15:51