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

С++, оператор return. ПОдскажите, почему не работает? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
10.02.2011, 20:43     С++, оператор return. ПОдскажите, почему не работает? #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
#include<iostream.h>
#include <stdio.h>
int main()
{double a1,b1,c1,d1,e1;
double a2,b2,c2,d2,e2;
double a3,b3,c3,d3,e3;
double a4,b4,c4,d4,e4,x1,x2,x3,x4;
cout<<"Введите коэффициенты матрицы 4Х5:\n";
cin>>a1>>b1>>c1>>d1>>e1>>a2>>b2>>c2>>d2>>e2>>a3>>b3>>c3>>d3>>e3>>a4>>b4>>c4>>d4>>e4;
if (a1==0) return 0;
else b1=b1/a1; c1=c1/a1; d1=d1/a1; e1=e1/a1; a1=1; //получили первый элемент единицу
b2=b2-b1*a2; c2=c2-c1*a2; d2=d2-d1*a2; e2=e2-e1*a2; a2=a2-a1*a2; //получили первый ноль
b3=b3-b1*a3; c3=c3-c1*a3; d3=d3-d1*a3; e3=e3-e1*a3; a3=a3-a1*a3; //получили первый ноль
b4=b4-b1*a4; c4=c4-c1*a4; d4=d4-d1*a4; e4=e4-e1*a4; a4=a4-a1*a4; //получили первый ноль
if (b2==0) cout<<"metod ne primenim"; return 0;
c2=c2/b2; d2=d2/b2; e2=e2/b2; b2=1;    //получили второй элемент единицу
c3=c3-c2*b3; d3=d3-d2*b3; e3=e3-e2*b3; b3=b3-b2*b3;  //получили второй ноль
c4=c4-c2*b4; d4=d4-d2*b4; e4=e4-e2*b4; b4=b4-b2*b4;  //получили второй ноль
if (c3==0) return 0;
d3=d3/c3; e3=e3/c3; c3=1;   //получили третий элемент единицу
d4=d4-d3*c4; e4=e4-e3*c4; c4=c4-c3*c4;   //получили третий ноль
if (d4==0) return 0;
cout<<"\n\nтреугольнайа матрица\n\n";
cout<<a1<<"  "<<b1<<"  "<<c1<<"  "<<d1<<" | "<<e1<<"\n";
cout<<a2<<"  "<<b2<<"  "<<c2<<"  "<<d2<<" | "<<e2<<"\n";
cout<<a3<<"  "<<b3<<"  "<<c3<<"  "<<d3<<" | "<<e3<<"\n";
cout<<a4<<"  "<<b4<<"  "<<c4<<"  "<<d4<<" | "<<e4<<"\n\n\n";
 
x4=e4/d4;
x3=e3-d3*x4;
x2=e2-c2*x3-d2*x4;
x1=e1-b1*x2-c1*x3-d1*x4;
cout<<"x1="<<x1<<"\nx2="<<x2<<"\nx3="<<x3<<"\nx4="<<x4;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2011, 20:43     С++, оператор return. ПОдскажите, почему не работает?
Посмотрите здесь:

C++ Оператор return;
Оператор return C++
C++ Оператор return
C++ Почему не работает перегруженный оператор?
Подскажите почему не работает C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
10.02.2011, 20:46     С++, оператор return. ПОдскажите, почему не работает? #2
Аммм... Операторные скобки?.. Вообще-то не очень понятно. Код-"вырвиГлаз".
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
10.02.2011, 20:49  [ТС]     С++, оператор return. ПОдскажите, почему не работает? #3
я понимаю...
просто я многие короткие операции писала подряд в строчку, чтоб длинная прога не была...
Но меня больше интересует правильное написание ретёрн =)
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
10.02.2011, 20:55     С++, оператор return. ПОдскажите, почему не работает? #4
Тут главное не компактное расположение кода, а его "удобоваримость". Так что настоятельно советую все-таки его по-человечески форматировать.
Кстати, тут есть всякие клевые кнопочки в менюшке, когда постишь сообщения.

И вообще, с точки зрения компа получается вот такая ересь:
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
#include <iostream.h>
#include <stdio.h>
using namespace std;
 
int main()
{
    double a1,b1,c1,d1,e1;
    double a2,b2,c2,d2,e2;
    double a3,b3,c3,d3,e3;
    double a4,b4,c4,d4,e4,x1,x2,x3,x4;
    cout<<"Введите коэффициенты матрицы 4Х5:\n";
    cin>>a1>>b1>>c1>>d1>>e1>>a2>>b2>>c2>>d2>>e2>>a3>>b3>>c3>>d3>>e3>>a4>>b4>>c4>>d4> >e4;
    if (a1==0) {
        return 0;
    } else {
        b1=b1/a1;
    }
    c1=c1/a1; 
    d1=d1/a1; 
    e1=e1/a1; 
    a1=1; 
    //получили первый элемент единицу
    b2=b2-b1*a2; 
    c2=c2-c1*a2; 
    d2=d2-d1*a2; 
    e2=e2-e1*a2; 
    a2=a2-a1*a2; //получили первый ноль
    b3=b3-b1*a3; 
    c3=c3-c1*a3; 
    d3=d3-d1*a3; 
    e3=e3-e1*a3; 
    a3=a3-a1*a3; //получили первый ноль
    b4=b4-b1*a4; 
    c4=c4-c1*a4; 
    d4=d4-d1*a4; 
    e4=e4-e1*a4; 
    a4=a4-a1*a4; //получили первый ноль
    if (b2==0) {
        cout<<"metod ne primenim";
    }
    return 0;
    c2=c2/b2;
    d2=d2/b2;
    e2=e2/b2;
    b2=1; //получили второй элемент единицу
    c3=c3-c2*b3;
    d3=d3-d2*b3;
    e3=e3-e2*b3;
    b3=b3-b2*b3; //получили второй ноль
    c4=c4-c2*b4;
    d4=d4-d2*b4;
    e4=e4-e2*b4;
    b4=b4-b2*b4; //получили второй ноль
    if (c3==0) {
        return 0;
    }
    d3=d3/c3; 
    e3=e3/c3; 
    c3=1; //получили третий элемент единицу
    d4=d4-d3*c4; 
    e4=e4-e3*c4; 
    c4=c4-c3*c4; //получили третий ноль
    if (d4==0) {
        return 0;
    }
    cout<<"\n\nтреугольнайа матрица\n\n";
    cout<<a1<<" "<<b1<<" "<<c1<<" "<<d1<<" | "<<e1<<"\n";
    cout<<a2<<" "<<b2<<" "<<c2<<" "<<d2<<" | "<<e2<<"\n";
    cout<<a3<<" "<<b3<<" "<<c3<<" "<<d3<<" | "<<e3<<"\n";
    cout<<a4<<" "<<b4<<" "<<c4<<" "<<d4<<" | "<<e4<<"\n\n\n";
    x4=e4/d4;
    x3=e3-d3*x4;
    x2=e2-c2*x3-d2*x4;
    x1=e1-b1*x2-c1*x3-d1*x4;
    cout<<"x1="<<x1<<"\nx2="<<x2<<"\nx3="<<x3<<"\nx4="<<x4;
    return 0;
}
Попробуйте сначала правильно расставить операторные скобки.

41ая строчка. Вот потому и завершается раньше времени.
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
10.02.2011, 21:15  [ТС]     С++, оператор return. ПОдскажите, почему не работает? #5
спасибо огромное =))
просто я не особо сильна в программировании =))))
Yandex
Объявления
10.02.2011, 21:15     С++, оператор return. ПОдскажите, почему не работает?
Ответ Создать тему
Опции темы

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