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

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

Восстановить пароль Регистрация
 
кастр
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 7
24.06.2011, 10:28     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла #1
написать программу которая решает квадратное уравнение вида a*(x^2)+b*x+c=0 данные об a,b,c берутся из файла.
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++
C++ С++ квадратное уравнение
C++ Квадратное уравнение
Квадратное уравнение C++
Квадратное уравнение C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
24.06.2011, 10:29     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла #2
и в чем проблема?
sirserik
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 156
24.06.2011, 10:52     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла #3
Цитата Сообщение от кастр Посмотреть сообщение
написать программу которая решает квадратное уравнение вида a*(x^2)+b*x+c=0 данные об a,b,c берутся из файла.
из какого файла в чем суть задачи ?
JeyKip
53 / 45 / 2
Регистрация: 23.06.2011
Сообщений: 122
24.06.2011, 10:55     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла #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();
}
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
24.06.2011, 11:05     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла #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"); 
}
ТС бы еще указать енто надо в с или с++?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.06.2011, 11:23     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла #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';
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2011, 11:57     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла
Еще ссылки по теме:

Описать класс, представляющий квадратное уравнение вида C++
C++ Квадратное уравнение
Создать производные классы линейное уравнение и квадратное уравнение, в которых данная функция переопределена C++

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.06.2011, 11:57     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла #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;
}
Yandex
Объявления
24.06.2011, 11:57     Квадратное уравнение вида a*(x^2)+b*x+c=0, данные об a,b,c берутся из файла
Ответ Создать тему
Опции темы

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