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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2011, 18:49   #1
ezik-kolotun
 
Регистрация: 05.09.2011
Сообщений: 5
По умолчанию Программа решения квадратного уравнения ( С/С++ )

На 1 курсе задали задачку - написать программу решения квадратного уравнения. И все бы ничего, да вот только ошибки в синтаксисе нет, а программа считать отказывается. Кто сможет найти? я уже всю голову сломал - вроде корректно написано.. Помогите новичку!

вот исходный код.

Код:
#include "stdafx.h"
#include <cmath>
#include "conio.h"
using namespace std;
#include <iostream>
#include "stdio.h"

int _tmain(int argc, _TCHAR* argv[])
{float a,b,c,D,x1,x2,d;
printf ("input a,b,c separated by space, then press enter \n");
scanf ("%f%f%f", &a, &b, &c);
D=(b*b)-(4*a*c);

if (D>=0) 
{
d=sqrt(D);
x1=(d-b)/(2*a);
x2=(-d-b)/(2*a);
}
else printf ("\nthe root does not exist \n");

if (x1 = x2) 
{
printf ("roots are the same ");
printf ("x=%4.2f",x1);
}
else printf ("x1=%4.2f",x1,"x2=%4.2f",x2);

getch ();
return 0;
}
______________
1)
Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В последующем, темы с подобным названием будут закрываться или удаляться,
а автор такой темы будет получать штрафные баллы.

2)
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

Учтите это на будущее.

Модератор.

Последний раз редактировалось Serge_Bliznykov; 05.09.2011 в 19:00.
ezik-kolotun вне форума Ответить с цитированием
Старый 05.09.2011, 19:48   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

вот тебе работающая программа на С++, одна из первых, написанная в далёком 2002 году...
Вложения
Тип файла: rar Anton3.rar (512 байт, 120 просмотров)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 05.09.2011, 19:50   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

вот тебе код работающей программы на С++, одна из первых, написанная в далёком 2002 году...

Обращаюсь к модераторам: я не специально два раза сообщение прислал, это у меня инет вырубился и СМС пришла, что, мол, 99 рубликов осталось на счету... одно лишнее можете удалить.
Вложения
Тип файла: rar Anton3.rar (512 байт, 45 просмотров)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 05.09.2011 в 19:58.
NetSpace вне форума Ответить с цитированием
Старый 05.09.2011, 20:12   #4
ezik-kolotun
 
Регистрация: 05.09.2011
Сообщений: 5
По умолчанию

открылась кракозябами на Windows Studio 2008.
спасибо, конечно, но вопрос стоит почему моя программа не работает? что в ней не так? стоит принципиально, чтобы найдя ошибку никогда ее не повторить. сам правда не могу уже.
ezik-kolotun вне форума Ответить с цитированием
Старый 05.09.2011, 20:19   #5
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
почему моя программа не работает?
Потому что...
Код:
if (x1 = x2)
Сами догадаетесь, в чем ошибка?
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 05.09.2011, 21:20   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

там не присваивание, а сравнение надо? типа так:
Код:
if (x1==x2)
?
а то, что русский текст не отображается нормально, так эти программы ещё в Windows 98 писались. хотя, если открыть в FAR'е, то нормально будет.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 05.09.2011 в 21:23.
NetSpace вне форума Ответить с цитированием
Старый 05.09.2011, 21:29   #7
ezik-kolotun
 
Регистрация: 05.09.2011
Сообщений: 5
По умолчанию

Run-Time Check Failure #3 - The variable 'x2' is being used without being initialized.
вот эту сообщение выдает, если ввожу данные отрицательного дискриминанта.
если положительного, то пишет, что корни равны и выдает один из них.
изменил "=" на "==". ничего не поменялось к сожалению...
ezik-kolotun вне форума Ответить с цитированием
Старый 05.09.2011, 21:31   #8
ezik-kolotun
 
Регистрация: 05.09.2011
Сообщений: 5
По умолчанию

но ведь "х2" инициализированная переменная! ведь я же пишу "х2 =..." значит инициализация происходит! но не запоминается? или ошибка в синтаксисе?
ezik-kolotun вне форума Ответить с цитированием
Старый 06.09.2011, 00:45   #9
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
там не присваивание, а сравнение надо?
Да.
Цитата:
Сообщение от ezik-kolotun Посмотреть сообщение
но ведь "х2" инициализированная переменная! ведь я же пишу "х2 =..." значит инициализация происходит! но не запоминается? или ошибка в синтаксисе?
У вас еще одна ошибка - в случае, если дискриминант меньше нуля, выводится сообщение об ошибке, но программа продолжает работать. А так как инициализация происходит в блоке, который выполняется при неотрицательном дискриминанте, то и переменная x2 остается непроинициализированной.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 06.09.2011, 01:03   #10
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

А вообще, вот, набросал сейчас код работающей программы, пользуйтесь:
Код:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	cout << "Input a, b, c: ";
	double a, b, c;
	cin >> a >> b >> c; cin.get();

	double d = b*b - 4*a*c;
	cout << "d = " << d << endl;

	if (d > 0)
	{
		double x1 = (-b - d) /2 /a;
		double x2 = (-b + d) /2 /a;
		cout << "x1 = " << x1 << '\t';
		cout << "x2 = " << x2 << endl;
	}
	else if (d == 0)
	{
		double x = (-b) /2 /a;
		cout << "x = " << x << endl;
	}
	else if (d < 0)
	{
		cout << "There are no real roots." << endl;
	}
	else
	{
		cerr << "Unexpected 'd' value." << endl;
		//TODO: throw an exception
	}

	cout << "Thank you for using our product! See more at " << /* your website here */ "example.com" << endl;
	cin.get();
}
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решения квадратного уравнения ( Html ) Sobaka_ru HTML и CSS 4 08.06.2011 21:38
Решение квадратного уравнения Эммануэль Общие вопросы Delphi 13 26.12.2010 15:21
Вычисления корней квадратного уравнения Наталья111 Общие вопросы Delphi 4 25.12.2008 11:06
Решение квадратного уравнения Stiv Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 30.11.2007 15:15
корни квадратного уравнения InseR Общие вопросы Delphi 12 01.06.2007 17:30