Форум программистов, компьютерный форум CyberForum.ru

Решение квадратных уравнений - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.88
Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
23.01.2011, 15:26     Решение квадратных уравнений #1
Имеется программа, которая должна решать квадратные уравнения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <stdio.h>
#include <math.h>
 
int main () {
double a,b,c,x,x1,x2;
int k,n,p;
 
cout << "Программа для решения уравнения\n" << endl;
cout << "вида: ax^2+bx+c=0" << endl;
          cout << "a=" << endl; a=cin.get();
          cout << "b=" << endl; b=cin.get();
          cout << "c=" << endl; c=cin.get();
          if (a==0)
         { linear (b,x1,c,p); }
         else { kwadr (a,b,c,x1,x2,p); }
         cout << "Уравнения с коэффициентами " << a << b << c << endl;
         switch (p) {
          case 0: cout << "\nНе имеет решения\n" << endl;
          case 1: cout << "\nИмеет одно решение " << x1 << endl;
          case 2: cout << "\nИмеет два действительных корня " << x1 << x2 << endl;
           }
 }
int kwadr (double e, double f, double g,double x1, double x2, int p) {
double d;
d=f*f-4*e*g;
if (d<0) { p=0; }
       else {
        e=e*2;
        if (d==0) {
           p=1;
           x1=-f/e; }
           else {
            p=2;
            d=sqrt (d);
            x1=(-f+d)/e;
            x2=(-f-d)/e;
}
}
}
 
int linear (double f, double x1, double g, int p) {
  const eps=0.00.1;
  if (abs(f) > eps) {
    x1 = -g/f; p = 1;
  }
  else {
    if (abs(g) < eps) { p = 3; }
    else p = 0;
  }
}
Но при компиляции очень много ошибок:
Bash
1
2
3
4
5
6
7
8
9
10
11
denis@debian:~$ g++ i.cpp
i.cpp:43:13: error: too many decimal points in number
i.cpp: In function ‘int main()’:
i.cpp:9: error: ‘cout’ was not declared in this scope
i.cpp:9: error: ‘endl’ was not declared in this scope
i.cpp:11: error: ‘cin’ was not declared in this scope
i.cpp:15: error: ‘linear’ was not declared in this scope
i.cpp:16: error: ‘kwadr’ was not declared in this scope
i.cpp: In function ‘int linear(double, double, double, int)’:
i.cpp:43: error: ISO C++ forbids declaration of ‘eps’ with no type
i.cpp:44: error: ‘abs’ was not declared in this scope
Что исправить? Если можно исправленный код...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Escapable
53 / 53 / 1
Регистрация: 09.11.2010
Сообщений: 120
23.01.2011, 15:31     Решение квадратных уравнений #2
Основные ошибки:
1. Забыли
C++
1
using namespace std;
2. Не объявили прототипы функций, в данном случае
C++
1
2
int kwadr (double e, double f, double g,double x1, double x2, int p);
int linear (double f, double x1, double g, int p);
3. Добавить тип "int" в 43 строку
C++
1
int const eps; // о.О eps=0.00.1 - так делать нельзя
Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
23.01.2011, 15:39  [ТС]     Решение квадратных уравнений #3
А эти?

Bash
1
2
3
4
5
denis@debian:~$ g++ i.cpp
i.cpp:45:17: error: too many decimal points in number
i.cpp: In function ‘int linear(double, double, double, int)’:
i.cpp:46: error: ‘abs’ was not declared in this scope
denis@debian:~$
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
23.01.2011, 15:48     Решение квадратных уравнений #4
i.c, Попоробуй написАть вместо math.h - cmath
Escapable
53 / 53 / 1
Регистрация: 09.11.2010
Сообщений: 120
23.01.2011, 15:48     Решение квадратных уравнений #5
У меня другой компилятор (VS) и таких ошибок не было. Но судя по описанию, то
C++
1
2
3
1. i.cpp:45:17: error: too many decimal points in number // слишком много десятичных точек. Т.е. так - eps=0.00.1, делать нельзя
2. i.cpp:46: error:abs’ was not declared in this scope // 'abs' находится за пределами области видимости
3. i.cpp: In function ‘int linear(double, double, double, int): // затрудняюсь ответить
Нужно нормально объявить 'eps'.
Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
23.01.2011, 15:53  [ТС]     Решение квадратных уравнений #6
Скомпилировалось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
int kwadr (double e, double f, double g,double x1, double x2, int p);
int linear (double f, double x1, double g, int p);
int main () {
double a,b,c,x,x1,x2;
int k,n,p;
 
cout << "Программа для решения уравнения\n" << endl;
cout << "вида: ax^2+bx+c=0" << endl;
          cout << "a=" << endl; a=cin.get();
          cout << "b=" << endl; b=cin.get();
          cout << "c=" << endl; c=cin.get();
          if (a==0)
         { linear (b,x1,c,p); }
         else { kwadr (a,b,c,x1,x2,p); }
         cout << "Уравнения с коэффициентами " << a << b << c << endl;
         switch (p) {
          case 0: cout << "Не имеет решения" << endl;
          case 1: cout << "Имеет одно решение " << x1 << endl;
          case 2: cout << "Имеет два действительных корня " << x1 << x2 << endl;
           }
 }
int kwadr (double e, double f, double g,double x1, double x2, int p) {
double d;
d=f*f-4*e*g;
if (d<0) { p=0; }
       else {
        e=e*2;
        if (d==0) {
           p=1;
           x1=-f/e; }
           else {
            p=2;
            d=sqrt (d);
            x1=(-f+d)/e;
            x2=(-f-d)/e;
}
}
}
 
int linear (double f, double x1, double g, int p) {
  int const eps=0.0001;
  if (abs(f) > eps) {
    x1 = -g/f; p = 1;
  }
  else {
    if (abs(g) < eps) { p = 3; }
    else p = 0;
  }
}
Но не правильно работает - не дает ввести b и выводит, какую-то ерунду:
denis@debian:~$ ./a.out
Bash
1
2
3
4
5
6
7
8
9
10
Программа для решения уравнения
 
вида: ax^2+bx+c=0
a=
2
b=
c=
3
Уравнения с коэффициентами 501051
denis@debian:~$
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
23.01.2011, 15:57     Решение квадратных уравнений #7
i.c, Пробуй это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <cmath>
 
using namespace std;
 
 
int main()
{
    
    while (true)
    {
    cout << "Введите значение: " << endl;
     float a;
     cout << "a= ";
     cin >> a;
     float b;
     cout << "b= ";
     cin >> b;
     float c;
     cout << "c= ";
     cin >> c;
     float d = (b * b) - 4 * a * c;
     if (d > 0)
     {
        float x = (-b - sqrt(d)) / (2 * a);
        cout << "D= " << d << endl;
        cout << "x1= " << x << endl;
 
        float k = (-b + sqrt(d)) / (2 * a);
        cout << "x2= " << k << endl;
     }
      if (d == 0)
        {
           float  p = (-b) / (2 * a);
           cout << "D= " << d << endl;
           cout << "x= " << p << endl;
        }
      if (d < 0){
           cout << "D= " << d << endl;
          cout << "Кориней нет!" << endl;
      }
      cout << endl;
      }
 
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.01.2011, 15:58     Решение квадратных уравнений #8
i.c, На кой использовать cin.get()-то для считывания символа???
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
23.01.2011, 16:00     Решение квадратных уравнений #9
Цитата Сообщение от i.c Посмотреть сообщение
Но не правильно работает - не дает ввести b и выводит, какую-то ерунду:
а ты чего хотел? Используй std::cin вместо std::cin.get(), т.к. последний считывает *один* символ из буфера.

Не по теме:

Ошибки какие-то глупые. Мой тебе совет:

  1. читай, что тебе пишет компилятор;
  2. почитай какую-нибудь книжку по основам языка;
  3. если ты используешь какую-то функцию, ты должен четко понимать, что она делает

Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
23.01.2011, 16:09  [ТС]     Решение квадратных уравнений #10
i.c, На кой использовать cin.get()-то для считывания символа???
Цитата Сообщение от Nameless One Посмотреть сообщение
если ты используешь какую-то функцию, ты должен четко понимать, что она делает
После jav'ы:
Java
1
a=in.nextInt();
Раньше не слышал про cin.get(); но увидел его где-то и решил, что можно сделать аналогично jav'е.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
23.01.2011, 16:13     Решение квадратных уравнений #11
Цитата Сообщение от i.c Посмотреть сообщение
Раньше не слышал про cin.get(); но увидел его где-то и провел аналогии.
Как видишь, аналогии не всегда срабатывают, так что лучше бы удостовериться. Как-никак, языки-то разные
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2011, 16:14     Решение квадратных уравнений
Еще ссылки по теме:

C++ Решение квадратных уравнений
Решение квадратных уравнений C++
Среди N квадратных уравнений с заданными коэффициентами подсчитать количество уравнений C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Fedis
608 / 88 / 2
Регистрация: 08.07.2010
Сообщений: 1,893
23.01.2011, 16:14  [ТС]     Решение квадратных уравнений #12
На Jav'е не написал, т.к не везде стоит JRE.
Yandex
Объявления
23.01.2011, 16:14     Решение квадратных уравнений
Ответ Создать тему
Опции темы

Текущее время: 13:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru