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

Доделать ввод исходных данных в программу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разбиение программы на подпрограммы и обращение к ним http://www.cyberforum.ru/cpp-beginners/thread1193683.html
Напишите, пожалуйста программу Определить вероятность того, что в семье имеющей 6 детей не больше 4 девочек. Веpоятность pождения девочки p=0.5, мальчика q=1-p Веpоятность того, что в семье, имеющей n детей, будет m девочек: P = C (верхний индекс м, нижний индекс н) * p в степени м, q в степени (н-м) Необходимо вычислить вероятности того, что в семье не будет ни одной девочки, одна...
C++ Заменить все локальные минимумы и максимумы данной матрицы на 0 Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если он меньше (больше) всех окружающих его элементов. Заменить все локальные минимумы, максимумы данной матрицы на 0. http://www.cyberforum.ru/cpp-beginners/thread1193675.html
По данной матрице построить массив C++
По данной матрице построить массив, элементы которого являются максимальными элементами диагоналей, параллельных главной
Блок схема программы неправильная, помогите найти ошибку C++
Вывести на экран сообщение в зависимости от введенного значения оценки (по десятибалльной системе), например: оценки 1, 2 - плохо, 3, 4 и 5 - удовлетворительно, и т.д., иначе – неправильный ввод
C++ Определить порядковый номер первого введенного положительного числа http://www.cyberforum.ru/cpp-beginners/thread1193665.html
помогите переделать код на задачу:определить порядковый номер первого введенного положительного числа. #include<iostream> #include<windows.h> using namespace std; int main() { SetConsoleCP(1251);SetConsoleOutputCP(1251); int n,j;//j-индекс или порядковый номер вводимого числа а int k;//к-порядковый номер первого положительного числа а
C++ Ввести код, считать код с файла и при совпадении выдать студента Вот такая функция, если шифр студента 77777 она должна его вывести, но она выводит своершенно случайных студентов. Можете подсказать в чем проблемма? Планируеться улучшить интерфейс чтобы шифр студентта воодился с клавиатуры. void oneman() { FILE *f; char shir=" Code:"; // Шифр: char *tempor=(char*)malloc(255*sizeof(char)); char *str=(char*)malloc(255*sizeof(char)); char cod=" Code:"; //... подробнее

Показать сообщение отдельно
Андрей213
0 / 0 / 0
Регистрация: 21.04.2014
Сообщений: 13

Доделать ввод исходных данных в программу - C++

30.05.2014, 15:04. Просмотров 308. Ответов 2
Метки (Все метки)

Программа для решения нелинейных уравнений, методом дихотомии, касательных хорд, простых итераций.
Ввод коэфициентов как ввод масива. То есть, если уравнение 2X^8+4X^7+5x^6+x^5+ 3x^4+x^3+ 4 = 0 то вводим кожффииенты 2 4 5 1 3 1 0 0 4
вводим промежуток на котором лежат корни, погрешность ( 0.00001) и выдает результат.
ПРоблема в том, что если во время ввода в масив коэфициентов, когда я ввожу букву, программа вылетает, и еще, ввод не оч удобный, как сделать что б перед вводом коэфициента выводило на экран какой именно это коэф?
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
[CPPQT][CPPQT]
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
//вот отличный пример для подстановки
 
/*Решить уравнение x^3+8x+10=0  с точностью 0,000001,
 если известно, что корень уравнения в [-2;-1] */
 
 
 
int stepen[9];  //массив показателей степеней ф-ии
int koef[9];   //массив коэффициентов ф-ии
double e;      //точность
 
double f(double x)   
{
    double y=0;
    for(int i=8;i>=0;i--)
    y+=koef[i]*pow(x,stepen[i]); 
    return y;
}
 
 
 
 
 
 
double f1(double x)   //производная от ф-и 1-го порядка
{
    double y=0;
    for(int i=8;i>=0;i--)
    y+=koef[i]*stepen[i]*pow(x,(stepen[i]-1)); 
    return y;
}
 
double f2(double x)   //производная от ф-и 2-го порядка
{
    double y=0;
    for(int i=8;i>=0;i--)
    y+=koef[i]*stepen[i]*(stepen[i]-1)*pow(x,(stepen[i]-2)); 
    return y;
}
 
void Dichotomy(double a,double b)  
{
    double c,rez;
        while(b-a>e)
        {
            c=(a+b)/2;
            if(f(a)*f(c)<0)
                b=c;
            else a=c;
        
        }
        rez=(a+b)/2;
        cout<<rez;
}
 
 
void transversal(double a,double b)    
{
    double e1,rez,x0,x1,x2;
    if(f(a)*f2(a)>0) x0=a;
    else x0=b;
        x1=x0-f(x0)/f1(x0);
        x2=a-((b-a)*f(a)/(f(b)-f(a)));
        e1=(x1+x2)/2;
    while(abs(e1-x1)>e)
    {
        a=x1;
         b=x2;
         x1= a-f(a)/f1(a);
         x2= a-((b-a)*f(a)/(f(b)-f(a)));
         e1=(x1+x2)/2;
    }
    rez=x1;
    cout<<rez;
}
 
 
void EasyIteration(double a,double b)    //метод простых итераций
{ bool prodolzhenie=true;
  double max,q,x0,x;
    for(int i=a; i<=b; i++)
    {
        if (f1(i)<=0) 
        {
            prodolzhenie=false;
            break;
        }
    }
    if (prodolzhenie==false)
    cout<<"Корней нет"<<endl;
    else
    {
        max=f1(a);
        for(int i=a+1; i<=b; i++)
        {
            if(f1(i)>max)
                max=f1(i);
        }
        q=1/max;
        x0=(a+b)/2;
        x=x0-q*f(x0);
        while(abs(x-x0)>e)
        {
            x0=x;
            x=x0-q*f(x0);
        }
        cout<<x<<endl;
    }
 
 
}
 
int main ()
{
    setlocale(0,"Russian");
    double x1,x2;
    double rez;
    int chooseVar;
    cout<<"Данная программа предназначена для решения уравнений вида x^8+x^7...+x+k=0"<<endl;
    cout<<"------------------------------------------------------------"<<endl<<endl;
    for(int i=8;i>=0;i--)    
        stepen[i]=i;
m1: cout<<"Введите коэффициенты уравнения подряд . Если в вашем уравнении нет члена с данным показателем степеня, введите коэфициент 0"<<endl;
     
    for(int i=8;i>=0;i--)    
        cin>>koef[i];
 
    cout<<"Введите область определения ф-ии"<<endl;
    do{
        cout<<"x1="<<endl;
        cout<<"x2="<<endl;
    cin>>x1>>x2;    
    if (x1>x2) cout<<"x1 должен быть меньше x2"<<endl;}
    while(x1>x2);
 
    cout<<"Введите точность"<<endl;
    do{
    cout<<"e="<<endl;
    cin>>e;  
    if (e<0) cout<<"точность должна быть положительной"<<endl;}
    while(e<0);
 
    if(f(x1)*f(x2)<0)  //проверка на наличие корней на интервале
    {
    
    cout<<"------------------------------------------------------------"<<endl;
    cout<<"Метод дихотомии.Результат:                      ";
    Dichotomy(x1,x2);
    cout<<endl;
    cout<<"Комбинированный метод секущих - хорд.Результат: ";
    transversal(x1,x2);
    cout<<endl;
    cout<<"Метод простых итераций.Результат:               ";
    EasyIteration(x1,x2);
    cout<<endl<<"------------------------------------------------------------"<<endl;
    }
    else 
    {
        cout<<"Корней нет"<<endl;
        cout<<"------------------------------------------------------------"<<endl;
    }
    cout<<"Желаете продолжить работу с программой?"<<endl<<"1 - да"<<endl<<"0 - нет"<<endl<<"-------------"<<endl;
    cin>>chooseVar;
    cout<<"-----------------------------------------------------------"<<endl;
    if (chooseVar==1) goto m1;
    else
    return 0;
}
 
[/CPPQT][/CPPQT]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru