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

Исполнитель Водолей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод Зейделя в С++ http://www.cyberforum.ru/cpp-beginners/thread233660.html
всем доброго времени суток... у меня такая проблема, есть программа по решению систем линейных уравнений методом Зейделя написали мне её.. даже не пойму в чем, потому как знаком только с С++ и то еле еле можно ли эту ерунду быстро переписать на С++ заранее благодарен! Uses CRT; Const maxn = 10; Type
C++ Найти максимальный элемент матрицы под главной диагональнью Подскажите как найти максимальный элемент матрицы под главной диагональнью в С++? http://www.cyberforum.ru/cpp-beginners/thread233643.html
C++ Не могу найти ошибку
переменная newk передается по адресу. В начале все нормально, но когда заканчивается функция obrabotka, то newk возвращает свое исходное(-8843543) значение. Почему? #include <iostream> using namespace std; bool proverka(int *mas, int k) { for(int i=0;i<k;i+=2) if(mas<0) return false; return true;
Программа выводящая слова и их количество. C++
Ввести строку. Вывести различные слова вместе с количеством их появления в строке. Буду очень признателен если ктото напишет это дело в синтаксисе C. Если сдам это завтра, то получу зачет, а его очень хочется получить)
C++ Кубики, динамическое программирование http://www.cyberforum.ru/cpp-beginners/thread233632.html
Здраствуйте! Есть задача ( на украинском) Незважаючи на те, що Петрик П’яточкін ходить до школи, він все ще продовжує гратися з кубиками. З однакових кубиків він викладає сходинки вздовж стіни. Для цього складає стовпчики з кубиків таким чином: перший стовпчик стоїть впритул до стіни; другий стовпчик стоїть впритул до стіни і впритул до першого стовпчика праворуч від нього; третій...
C++ Время выполнения(сложность) Как вычислить время выполнения программы? и что такое NlogN? подробнее

Показать сообщение отдельно
rrrFer
Заблокирован
25.01.2011, 10:59     Исполнитель Водолей
Hi4ko, открою секрет почему на другие темы отвечают, а на твою - нет. Когда я вижу
C++
1
}}}}
появляется непреодолимое желание покинуть тему.
ЗЫ. если хочешь чтобы помогли - не издевайся над форумчанами, форматируй код нормально.
Начал смотреть код, вижу:
C++
1
2
3
y=0;
{
        do{
зачем первая фигурная скобка?(после y=0

Добавлено через 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
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int A,B,N,x=0,y=0,z;
    cin>>A>>B>>N;
    z=2*A-B;
    if(z>0)
        z=2*A-B;
    else
        z=B-2*A;
    if((A<N)&&(B<N))
        cout<<"Impossible"<<endl;
    else{
        if(A<B){
            if((N%z==0)||(z%N==0)){//проверка возможности действия
                if(N==2*A-B){//1 случай
                    y=A;
                    x=0;
                    do{
                        x=x+y;
                        if(x<B)
                            y=0;
                        else{
                            y=x-B;
                            x=B;
                        }
                        cout<<">A"<<endl;
                        cout<<"A>B"<<endl;
                    }while((x!=N)||(y!=N));
                }
                else{//2 случай
                    x=B; cout<<">B"<<endl;
                    y=0;
                    do{
                        y=A;
                        if(x>A){
                            x=x-A;
                            cout<<"B>A"<<endl;
                            cout<<"A>"<<endl;
                            if((x-A)==N){
                                cout<<">B"<<endl;
                                cout<<"B>A"<<endl;
                                break;
                            }
                        }
                        else{
                            A=x;
                            x=B;
                        }
                    }while((x!=N)||(y!=N));
                }
            }
            else
                cout<<"Impossible"<<endl;
        }
        else{
            if(A>B){
                if((N%z==0)||(z%N==0)){//проверка возможности действия
                    if(N==2*B-A){//1 случай
                        y=B;
                        x=0;
                        do{
                            x=x+y;
                            if(y<A){
                                x=x+y;
                                y=0;
                            }
                            else{
                                y=x-A;
                                x=A;
                            }
                            cout<<">B"<<endl;
                            cout<<"B>A"<<endl;
                        }while((x!=N)||(y!=N));
                    }
                    else{//2 случай
                        x=A; 
                        cout<<">A"<<endl;
                        y=0;
                        do{
                            y=B;
                            if(x>B){
                                x=x-B;
                                cout<<"A>B"<<endl;
                                cout<<"B>"<<endl;
                                if((x-B)==N){
                                    cout<<">A"<<endl;
                                    cout<<"A>B"<<endl;
                                    break;
                                }
                            }
                            else{
                                B=x;
                                x=A;
                            }
                        }while((x!=N)||(y!=N));
                    }
                }
                else
                    cout<<"Impossible"<<endl;
            }
            else
                cout<<"Impossible"<<endl;
        }
    }
}
Добавлено через 1 минуту
C
1
int main(){
return в конце не хватает, по теме: попробуй переписать программу с нуля

Добавлено через 51 минуту
вот вариант(не оптимальный, но на небольших N работает N<8 проверял). На больших N будет очень долго считать. Использовал перебор с возвратами.
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
#include <iostream>
using namespace std;
class glass{
    int capacity,
        value;
public:
    glass(int);
    void full();
    void pour();
    bool hit(int N);
    friend void pour(glass&,glass&);
    friend bool Aquarius (glass&,glass&,int N,int T);
};
int main(){
    glass   A(2),
            B(11);
    int N=9;
    
    if(Aquarius(A,B,N,8))
        cout<<"yes";
    else
        cout<<"no";
 
    cin.get();
    return 0;
}
 
glass::glass(int C){
    capacity=C;
    value=0;
}
void glass::full(){
    value=capacity;
}
void glass::pour(){
    value=0;
}
bool glass::hit(int N){
    return N==value;
}
 
void pour(glass& g1,glass& g2){
    int t=g1.capacity-g1.value;
    if(t<=g2.value){
        g1.full();
        g2.value-=t;
    }
    else{
        g1.value+=g2.value;
        g2.pour();
    }
}
bool Aquarius(glass& g1,glass& g2,int N, int T){
    glass g(0),gg(0);
    if(T<0) return 0;
    if(g1.hit(N)||g2.hit(N))
        return 1;
    //наполняю А
    g.capacity=g1.capacity;
    g.value=g1.capacity;
    if(Aquarius(g,g2,N,T-1)){
        cout<<"<-\"A>\"";
        return 1;
    }
    //наполняю В
    g.capacity=g2.capacity;
    g.value=g2.capacity;
    if(Aquarius(g1,g,N,T-1)){
        cout<<"<-\"B>\"";
        return 1;
    }
    //выливаю из А
    g.capacity=g1.capacity;
    g.value=0;
    if(Aquarius(g,g2,N,T-1)){
        cout<<"<-\"A<\"";
        return 1;
    }
    //выливаю из В
    g.capacity=g2.capacity;
    g.value=0;
    if(Aquarius(g1,g,N,T-1)){
        cout<<"<-\"B<\"";
        return 1;
    }
    //переливаю из В в А
    g.capacity=g1.capacity;
    g.value=g1.value;
    gg.capacity=g2.capacity;
    gg.value=g2.value;
    pour(g,gg);
    if(Aquarius(g,gg,N,T-1)){
        cout<<"<-\"B>A\"";
        return 1;
    }
    //переливаю из А в В
    g.capacity=g1.capacity;
    g.value=g1.value;
    gg.capacity=g2.capacity;
    gg.value=g2.value;
    pour(gg,g);
    if(Aquarius(g,gg,N,T-1)){
        cout<<"<-\"A>B\"";
        return 1;
    }   
    return 0;
 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru