С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Двумерный двусвязанный список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Однонаправленный список http://www.cyberforum.ru/cpp-beginners/thread618001.html
Доброго времени суток! Помогите поправить программу(Однонаправленный список, удалить все положительные элементы кроме последнего). Надеюсь на вашу помощь. #include <iostream.h> #include <conio.h>...
C++ wxDev-C++ непонятно Я скачал себе wxDev-C++, мне очень очень понравилась эта IDE. Вопросов правда несколько. Я раньше учился писать в консольных приложениях и с визуальными никогда не работал. Не знаю как реализовывать... http://www.cyberforum.ru/cpp-beginners/thread617984.html
Генеалогическое дерево» C++
Создать приложение «Генеалогическое дерево». Паспортные данные членов некоторого родового клана; ссылки на детей ( или на родителей). Поиск всех потомков или всех предков для указанного лица,...
Массив и кое-что ещё C++
Доброго дня. Не объясните мне пожалуйста что значит этот код? Здесь x задан макросом #define IX(i,j) ((i)+(N+2)*(j)) В частности что значит знак вопроса и двоеточие? for ( i=1 ; i<=N ; i++ ) {...
C++ Запрет ввода любых символов кроме цифр в консоли http://www.cyberforum.ru/cpp-beginners/thread617974.html
Ребята подскажите пожалуйста можно ли как-то разрешать ввод в консоль только цифр. Я делаю проверку или с помощью isdigit() или через условие, но даже если это не цифра ,введёный символ появляется в...
C++ 2х мерные массивы Скажите пожалуйста ПОЧЕМУ равны данные "адресса" есть массив a а в нем a+2=*(a+2) Как это? подробнее

Показать сообщение отдельно
hazerot
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 47
02.07.2012, 22:33  [ТС]
sandye51, Работает
И последний момент я хотел бы у вас уточнить. Используя все то что вы мне написали. Я попытался высчитать определитель по минорам. Но как ни странно программа не работает. Просто напросто циклится.
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
list2d* func1(list2d *a,int d){
    int k=1;
    struct list2d* current_row = NULL, *head = new struct list2d();
    current_row = head;
    list2d *b=new list2d,*c=new list2d;
    b=a;c=a;
for (;b;b=b->down,k++)
    {
        if(k==d)
            b=b->down;
        
        
        
        struct list2d *current_cell = current_row;
        
        c=b;
        for (;c;c=c->next)
        {
            current_cell->inf=c->inf;
            if (c->next)
            {
                current_cell->next = new struct list2d();
                current_cell->next->prev = current_cell;
                current_cell = current_cell->next;
            }
        }
        
        if (b->down)
        {
            current_row->down = new struct list2d();
            current_row = current_row->down;
        }
        
    }
 
struct list2d *str1 = head, *str2 = head->down;
while (str2)
    {
        struct list2d *cell1 = str1->next, *cell2 = str2->next;
        while (cell1)
        {
            cell1->down = cell2;
            cell1 = cell1->next;
            cell2 = cell2->next;
        }
        str1 = str2;
        str2 = str2->down;
    }
return head;
 
}
void func(list2d *a,int &i,int &j){
    list2d *asw=a;
    while(asw){asw=asw->next;i++;}
    asw=a;
    while(asw){asw=asw->down;j++;}
}
int templf(list2d *a){
    int i=1,j=1,d=1,s=0;
    func(a,i,j);
    if(i==3 && j==3)
        return (a->inf*a->down->next->inf - a->next->inf*a->down->inf);
    else{
        list2d *b=a;
        while(b->down){
            list2d *li=new list2d;
            li=func1(b->next,d);
            
            if(d+1%2==0){
                //list2d *li=new list2d;
                //li=func1(b->next,d);
                s+=b->inf*templf(li);
            }
            else{
                //list2d *li=new list2d;
                //li=func1(b->next,d);
                s-=b->inf*templf(li);
            }
 
        }
        b=b->down;
    }
    return s;
}
int main(){
    list2d *w;
int s;
int size=3;
struct list2d* current_row = NULL, *head = new struct list2d();
    current_row = head;
for (int i = 0; i < size; ++i)
    {
        struct list2d *current_cell = current_row;
        for (int j = 0; j < size; ++j)
        {
            cin >> current_cell->inf;
            if (j != size - 1)
            {
                current_cell->next = new struct list2d();
                current_cell->next->prev = current_cell;
                current_cell = current_cell->next;
            }
        }
        
        if (i != size - 1)
        {
            current_row->down = new struct list2d();
            current_row = current_row->down;
        }
    }
struct list2d *str1 = head, *str2 = head->down;
while (str2)
    {
        struct list2d *cell1 = str1->next, *cell2 = str2->next;
        while (cell1)
        {
            cell1->down = cell2;
            cell1 = cell1->next;
            cell2 = cell2->next;
        }
        str1 = str2;
        str2 = str2->down;
    }
s=templf(head);
cout<<s<<endl;
    return EXIT_SUCCESS;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.