Показать полную графическую версию : Решение квадратных уравнений на С++
помоему слово signed лишнее »
Нужно указывать signed float »Мнения разделились? :dont-know
[hr]
Без signed ошибки нет, но появляется ошибка:
[C++ Ошибка] PolinomTwoStepeny1.cpp(75): E2203 Goto bypasses initialization of a local variableПопробовал, прикинул, если все
goto end;заменить на break;логично? Логично. Тогда программа компилируется и работает. :yes:
Но всё же два вопроса:
1. Эта замена в данном случае мне кажется равноценной, верно?
2. Чего всё же надо было при ошибке goto? (Этот вопрос я ещё сегодня вечером попробую решить, возьму книгу, сверюсь, уточню)
1. Нет. Так как автор предлагал этим трюком закончить выполнение программы окончательно, а break лишь выводит из текущего блока и все идет далее по тексту. Лучше уж тогда exit.
2. Потому что между goto end и самим есть есть два объявления переменных (выходит что они могут быть не объявлены - как будто вырезается часть исходника между goto end и самой меткой, но не в момент компиляции а в реал тайм. Что приведет к ошибки. Исправляется переносом объявления переменных и их инициализации до первого использования goto end. В данном случаи это переменные int i и float D.
1. Нет. Так как автор предлагал этим трюком закончить выполнение программы окончательно, а break лишь выводит из текущего блока и все идет далее по тексту. Лучше уж тогда exit. »Спасибо за поправку. Неучёл этого, думал будет выход в конец программы. :up
2. Потому что между goto end и самим есть есть два объявления переменных (выходит что они могут быть не объявлены - как будто вырезается часть исходника между goto end и самой меткой, но не в момент компиляции а в реал тайм. Что приведет к ошибки. Исправляется переносом объявления переменных и их инициализации до первого использования goto end. В данном случаи это переменные int i и float D. »Спасибо!!! :yahoo: Получилось. :up Сместил объявления вверх:
...
int main()
{
int i;
float D = 0;
...
Код:
4х^2 + 3х – 5 = 0
Оно же в общем виде
Код:
ах^2 + bх – с = 0. »
Ошибка в минусе. Общий случай неизменный
ax^2 + bx + c = 0
При вводе в программу, мы указываем с = -5. предварительно указав правильный тип переменной.
Нашел здесь (http://www.sourcepole.com/sources/programming/cpp/cppqref.html)
float f; double d; // Single or double precision real (never unsigned)
Т.е. тип float он в любом случае знаковый.
В справке NetBeans ничего про unsignet float не нашел.
Drongo, алгоритм ответа был таков, я помнил что для типов существует такая приставка как signed, но не был уверен доступна ли она для float. Через поиск провёл данную комбинацию (вместо того что б проверить компилятором) и вышел на ту тему. Как оказал безграмотное. Насчёт signed float я ошибся - ибо signed/unsigned только для char/int Is unsigned float legal? (http://www.velocityreviews.com/forums/t284165-is-unsigned-float-legal.html)
Компилятор говорит что много типов так как, по его мнению объявляют signed int и float.
Что делать, оставить всё как есть. Я проверил, на практике никакого минуса выставлять не требуется. Минус сохраняется в переменной, скомпилив #include <stdio.h>
int main(int argc, char* argv[])
{
float b,a,c,D;
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
D = (b * b) - (4 * a * c);
printf("Answer %f",D);
return 0;
}
И запустив на выполнение с предложенными параметрами a=3
b=4
c=-5
Answer 76.000000
Если интересно то минус можно задать так c=-c.
Мнение не разделись, а были предложены варианты.
Alan85 не просто лишние, а кардинально не к месту и недопустимо его с float использовать.
Кроме exit можно использовать return 0 если конечно не void main/WinMain/etc то есть если главная функция программы не без типовая.
lxa85 видимо и в Java (или NetBeans может быть IDE и для С\С++?) решили не вносить путаницу по данному вопросу.
или NetBeans может быть IDE и для С\С++? »
NetBeans - это просто среда разработки. У нее есть модули и для C\C++ как одного из основных языков программирования. Есть и для Java, Python, Ruby, MySQL, Pascal и пр.
Но сама среда да, написана на Java.
XEN_STRANGER
24-03-2009, 11:08
Вот мой вариант проги:
int x2yravn ()
{
double a, b, c, x1, x2;
double error;
unsigned short int back;
cout << "Ввод уравнения: " << endl;
cout << endl << "(a=) ";
cin >> a;
cout << "(b=) ";
cin >> b;
cout << "(c=) ";
cin >> c;
error = GetX2yravn (a, b, c, &x1, &x2);
if (!error)
{
backer ();
}
else
{
cout << endl << "Ошибка! а=0, уравнение не квадратное" << endl;
}
char response;
cin >> response;
return 0;
}
// Функция нахождения корней
double GetX2yravn (double a, double b, double c, double *px1, double *px2)
{
double value = 0;
if (a == 0)
value = 1;
else
{
double D;
D = b*b - 4*a*c;
cout << endl << "Дискриминант равен " << D << endl;
if (D < 0)
{
cout << "=====РЕЗУЛЬТАТ============================================";
cout << endl << "Корней не найдено, дискриминант меньше ноля" << endl;
cout << "==========================================================" << endl;
}
if (D == 0)
{
*px1 = -b / (2*a);
cout << "=====РЕЗУЛЬТАТ============================================";
cout << endl << "Найден один корень, x = " << *px1 << endl;
cout << "==========================================================" << endl;
}
if (D > 0)
{
*px1 = (-b + sqrt(D)) / (2*a);
*px2 = (-b - sqrt(D)) / (2*a);
cout << "=====РЕЗУЛЬТАТ============================================";
cout << endl << "Найдено два корня, x1 = " << *px1 << ", x2 = " << *px2 << endl;
cout << "==========================================================" << endl;
}
value = 0;
}
return value;
//----Функция возврата------------------------------------------------------------------------------
int backer ()
{
unsigned short int back;
cout << endl << endl<< "Вернуться в главное меню? (Да - 1, Нет - 2)";
cin >> back;
cout << endl << endl;
switch (back)
{
case 1:
{
cout << "-----END---------------------------------------------------------";
cout << endl << endl << endl << endl << endl << endl << endl;
return int x2yravn();
}
break;
case 2:
{
cout << endl << "Можете закрыть программу.";
char response;
cin >> response;
return 0;
}
break;
default:
{
cout << endl << "<Ошибка! Введите коректное число!>" << endl << endl;
return backer ();
}
}
}
gusenkovs
19-05-2011, 19:55
Программа решения квадратных уравнений (http://turbobit.net/uurkqwqgvmyp.html)
gusenkovs, где описание программы? Что она делает и т.д.?
gusenkovs
20-05-2011, 17:23
Программа решает уравнния вида ax^2+bx+c
#include <math.h>
#include <iostream>
#include <fstream>
using namespace std;
double kkui_discremenant (double a,double b,double c)
{double discreminant=pow(b,2)-4*a*c;
return discreminant;
}
double x1v (double a,double b,double c)
{double discreminant=kkui_discremenant(a,b,c);
if (discreminant>=0)
{double x1=(sqrt(discreminant)-b)/(2*a);
return x1;}return 0;}
double x2v (double a,double b,double c)
{double discreminant=kkui_discremenant(a,b,c);
if (discreminant>=0)
{double x2=(-sqrt(discreminant)-b)/(2*a);
return x2;};return 0;}
void log(double a,double b,double c,double discremenant,double x1,double x2)
{
ofstream outfile("C:\\kku.log",ios::app);
outfile<<a<<"x^2+"<<b<<"x+"<<c<<endl<<"дискрименант"<<discremenant<<endl<<"x1="<<x1<<endl<<"x2="<<x2<<endl<<"Теорема Виетта"<<"(x-("<<x1<<")(x-("<<x2<<"))"<<endl;
outfile.close();}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.