Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
кастр
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 7
#1

Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла - C++

24.06.2011, 10:28. Просмотров 732. Ответов 6
Метки нет (Все метки)

написать программу которая решает квадратное уравнение вида a*(x^2)+b*x+c=0 данные об a,b,c берутся из файла.
http://www.cyberforum.ru/cpp-beginners/thread1005029.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2011, 10:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла (C++):

нужно написать функцию, которая будет считать квадратное уравнение, данные с клавиатуры ввожу
#include <conio.h> #include <iostream> #include <math.h> using std::cout;...

Описать класс, представляющий квадратное уравнение вида ax2 + bx +c=0
Описать класс, представляющий квадратное уравнение вида ax2 + bx +c=0....

Квадратное уравнение, решение вида действительных и комплексных чисел
Вообщем есть програма, работает нормально но решение віводит неправильно....

Как сделать фильтр по маске в DataGridView, если данные берутся из txt файла
Задача в том, чтобы реализовать динамический поиск по datagridview. Если...

Создать производные классы линейное уравнение и квадратное уравнение, в которых данная функция переопределена
Создать абстрактный базовый класс уравнение с виртуальной функцией - корни...

6
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
24.06.2011, 10:29 #2
и в чем проблема?
0
sirserik
3 / 3 / 2
Регистрация: 12.05.2011
Сообщений: 157
24.06.2011, 10:52 #3
Цитата Сообщение от кастр Посмотреть сообщение
написать программу которая решает квадратное уравнение вида a*(x^2)+b*x+c=0 данные об a,b,c берутся из файла.
из какого файла в чем суть задачи ?
0
JeyKip
53 / 45 / 16
Регистрация: 23.06.2011
Сообщений: 122
24.06.2011, 10:55 #4
файл должен сам создать и занести туда данные в следующем виде:
12
23
34
Записывай только числа...

вот листинг:

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
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
#include <math.h>
using namespace std;
 
void main()
{
    setlocale(0,"");
    ifstream file("C:\\1.txt");
    if (!file)
        cout<<"Создай фал 1.txt в корне диска С: и запиши построчно a,b,c";
    else 
    {
        double * mas = new double [3];
        char * str = new char [10];
 
        for (int i=0; i<3; i++)
        {
            file.getline(str,10);
            mas[i] = atof(str);
        }
 
        double discr = mas[1]*mas[1]-4*mas[0]*mas[2];
        double x1 = (-mas[1]+sqrt(discr))/(2*mas[0]);
        double x2 = (-mas[1]-sqrt(discr))/(2*mas[0]);
 
        cout<<"X1 = "<<x1<<"\nX2 = "<<x2;
        delete [] mas;
        delete [] str;
    }
    getch();
}
0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
24.06.2011, 11:05 #5
Вот запись в файл чисел:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdlib.h>
#include <stdio.h>  
main()
{
int k,i,n=3; 
  char fname[]="c:\\numbers.txt"; 
  FILE *fp; 
  fp = fopen(fname,"w"); 
  printf("Chisla budut zapisani f file %s\n",fname);
   for(i=0; i<n;i++)
    {
     scanf("%i",&k); 
     fprintf(fp,"%d ",k); 
    } 
   fclose(fp);
printf("Vvedenniyi chisla zapisani v file %s\n",fname);
system("pause"); 
}
ТС бы еще указать енто надо в с или с++?
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
24.06.2011, 11:23 #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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
#include <cmath>
 
template<int A, int B, int C, int D>
struct Result
{
    static void apply(double* first_s, double* second_s)
    {
        *first_s = static_cast<double>((-B) + sqrt(static_cast<double>(D))) / (2 * A);
        *second_s = static_cast<double>((-B) - sqrt(static_cast<double>(D)))/ (2 * A);
    }
};
 
template<int A, int B>
struct Result<A, B, 0, 0>
{
    static void apply(double* first_s, double* second_s)
    {
        *first_s = static_cast<double>(-B) / (2 * A);
    }
};
 
template<int A, int B>
struct Result<A, B, 0, -1>
{
    static void apply(double* first_s, double* second_s)
    {
        *first_s = 0;
        *second_s = static_cast<double>(-B) / A;
    }
};
 
template<int A, int C>
struct Result<A, 0, C, -1>
{
    static void apply(double* first_s, double* second_s)
    {
        const double t = static_cast<double>(-C) / A;
        *first_s  = sqrt(t);
        *second_s = -sqrt(t);
    }
};
 
template<int A>
struct Result<A, 0, 0, -1>
{
    static void apply(double* first_s, double* second_s)
    {
        *first_s = 0;
        *second_s = 0;
    }
};
 
template<>
struct Result<0, 0, 0, -1>
{
    static void apply(double* first_s, double* second_s)
    {
        throw 0;
    }
};
 
 
template<int A, int B, int C>
struct Expression
{
    static void apply(double* first_s, double* second_s)
    {
        const int d = (B * B) - (4 * A * C);
        if ( d < 0)
        {
            Result<0, 0, 0, -1>::apply(0, 0);
        }
        else if ( d == 0)
        {
            Result<A, B, 0, 0>::apply(first_s, 0);
        }
        else
        {
            Result<A, B, C, d>::apply(first_s, second_s);
        }
    }
};
 
template<int A, int B>
struct Expression<A, B, 0>
{
    static void apply(double* first_s, double* second_s)
    {
        Result<A, B, 0, -1>::apply(first_s, second_s);
    }
};
 
template<int A, int C>
struct Expression<A, 0, C>
{
    static void apply(double* first_s, double* second_s)
    {
        Result<A, 0, C, -1>::apply(first_s, second_s);
    }
};
 
template<int A>
struct Expression<A, 0, 0>
{
    static void apply(double* first_s, double* second_s)
    {
        Result<A, 0, 0, -1>::apply(first_s, second_s);
    }
};
 
template<int B>
struct Expression<0, B, 0>
{
    static void apply(double* first_s, double* second_s)
    {
        throw 0;    
    }
};
 
template<int C>
struct Expression<0, 0, C>
{
    static void apply(double* first_s, double* second_s)
    {
        throw 0;
    }
};
 
template<>
struct Expression<0, 0, 0>
{
    static void apply(double* first_s, double* second_s)
    {
        throw 0;
    }
};
 
int main()
{
    double first_res = 0, second_res = 0;
    Expression<5,10,1>::apply(&first_res, &second_res);
    std::cout << first_res << ' ' << second_res << '\n';
}
1
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.06.2011, 11:57 #7
Более полное решение, учитывает, что коэффициенты могут быть равны нулю.
Выводит количество корней и сами корни, если корней бесконечное количество выводит 0.
проходит все тесты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <math.h>
#include <iomanip>
int main(){
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    double a,b,c;
    std::cin >> a >> b >> c;
    if (!b&&!a&&!c) { std::cout << -1; return 0;}
    if (!c) {std::cout << "1\n0"; return 0;}
    if (!a&&!b){ std::cout << 0; return 0;}
    std::cout << std::fixed << std::setprecision(9);
    if (!a) {std::cout << "1\n" << 1.*-c/b; return 0;}
    if (!b&&-c/a<0) {std::cout << 0; return 0;}
    long double d=b*b-4.*a*c;
    if (d<0) { std::cout << 0;  return 0; }
    d=sqrt(d);
    if (d>0) std::cout << "2\n" << (-b+d)/(2*a) << '\n'<< (-b-d)/(2*a);
    if (!d) std::cout << "1\n" << -b/(2.*a);
    return 0;
}
0
24.06.2011, 11:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2011, 11:57
Привет! Вот еще темы с решениями:

Как скопировать данные из одного вида таблицы в другою иного вида
Добрый день уважаемые гуру! Вопрос в следующем: есть необходимость скопировать...

Данные из БД берутся в разном порядке
Есть база данных (бэкап базы логинов и паролей) в которой в одной из таблиц 2...

Квадратное уравнение
всем привет!кто нибудь может написать программу решения квадратного уравнения в...

Квадратное уравнение.
Вот задача которую задал препод Дано уравнение вида: x*x*a+x*b+c=0 .Найти...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru