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

Не могу найти ошибку, сравнение целочисленных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как сделать так, чтоб при работе программы можно было вводить в качестве данных русские слова? http://www.cyberforum.ru/cpp-beginners/thread253586.html
мммм?
C++ типы данных int x1, x2; float summa; x1 = 5; x2 = 6; summa = (x1 + x2)/2; cout << summa << endl; почему в результате 5, а не 5.5 ? http://www.cyberforum.ru/cpp-beginners/thread253573.html
C++ STL stack
не мог бы кто нить обьяснить этот код!Гуглил и нашел!не могли бы комменты поставить По идее так должен выводить! Ввод $VOlendomord$ __________________ Вывод <i>VOlendomord</i> #include...
C++ Найти суммы элементов, расположенных по периметру и записать их в массив
задача Найти суммы элементов, расположенных по периметру и записать их в массив, если размерность исходной матрицы четная, то получить mas, если нечётная то mas. Проблема в цикле:...
C++ Изменить строчные буквы на прописные http://www.cyberforum.ru/cpp-beginners/thread253540.html
Встал вопрос: как сделать строчные буквы прописными. В Turbo Pascal есть очень удобная операция upcase. Есть ли что-то подобное на Си? Если нет, то как более рационально сделать замену. У меня идея...
C++ Цилиндр объёма единица имеет в высоту h Помогите решить задачу. язык Си Цилиндр объёма единица имеет в высоту h. Определить радиус основания цилиндра для значений h, равных Результат выполнения занести в массив чисел. подробнее

Показать сообщение отдельно
antoxin
0 / 0 / 0
Регистрация: 07.03.2011
Сообщений: 3
08.03.2011, 01:55  [ТС]
Ошибка найдена)

Вот исправленный код(если кому интересно):
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
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <windows.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    ofstream out_file("file.txt");
    
    int c;
    cout << "Введите количество готовых цепочек или 0 для выхода: ";
    cin >> c;
    while(c)
    {
            //Создаем массив значений
            int value[15][2];
            value[0][0] = 1; value[0][1] = 2;
            value[1][0] = 1; value[1][1] = 3;
            value[2][0] = 1; value[2][1] = 4;
            value[3][0] = 1; value[3][1] = 5;
            value[4][0] = 1; value[4][1] = 6;
            value[5][0] = 2; value[5][1] = 3;
            value[6][0] = 2; value[6][1] = 4;
            value[7][0] = 2; value[7][1] = 5;
            value[8][0] = 2; value[8][1] = 6;
            value[9][0] = 3; value[9][1] = 4;
            value[10][0] = 3; value[10][1] = 5;
            value[11][0] = 3; value[11][1] = 6;
            value[12][0] = 4; value[12][1] = 5;
            value[13][0] = 4; value[13][1] = 6;
            value[14][0] = 5; value[14][1] = 6;
            
            //Объявляем переменные
            int value2[15][2];
            int temp;
            int temp2;
            int r1;
            int r2;
            int first = 0;
            int second; // Здесь было int second = first + 2;
            int all = 14;
            int x1, x2, y1, y2;
            
            srand((unsigned)time(NULL));
            
            //Перемешиваем массив
            for (int i(0); i < 1000; ++i)
            {
                r1 = rand() % 15;
                r2 = rand() % 15;
                temp = value[r1][0];
                temp2 = value[r1][1];
                
                value[r1][0] = value[r2][0];
                value[r1][1] = value[r2][1];
                value[r2][0] = temp;
                value[r2][1] = temp2;
                }
                
            //Копируем массив
            for (int i(0); i < 15; ++i)
            {
                for(int j(0); j < 2; ++j)
                {
                        value2[i][j] = value[i][j];
                        }
                }
                
            //Выводим копию массива в консоль 
            for (int i = 0; i < 15; ++i)
            {
                cout << value2[i][0] << value2[i][1] << " ";
                }
                cout << "\n";
     
            //Проверяем цепочку
            for(int i(0); i !=1;)
            {
                    second = first + 2; // Поставил вычесление переменной в начало проверки
                                        // и все заработало!
                    if (all < 2) //Если в цепочке осталось два значения,
                    {            //пишем её в файл
                    
                            for(int o(0); o < 15; ++o)
                            {
                                    out_file << value[o][0] << value[o][1] << " ";
                                    }
                            out_file << "\n";
                            cout << "\nCложилось!\n\n";
                            Sleep(1000); //Ждем секунду и выходим из цикла
                            c--;
                            break;
                            }
                            
                    //Сравниваем значения
                    x1 = value2[first][0];
                    x2 = value2[first][1];
                    y1 = value2[second][0];
                    y2 = value2[second][1];
                    
                    if(x1 != y1 and x1 != y2 and x2 != y1 and x2 != y2) //Если значения различны,
                    {
                          if(second == all) //и сравнивается последнее значение в цепочке
                          {
                                    cout << "\nНе сложилось!\n\n";
                                    Sleep(1000); //ждем секунду и выходим из цикла
                                    break;
                                    }
                          first++; //если значение не последнее, берем следующие.
                          continue;
                          }
                    
                    for(int j(first); j < all; ++j) //Если равенство есть,
                    {
                            value2[j][0] = value2[j + 1][0]; //сдвигаем
                            value2[j][1] = value2[j + 1][1]; //цепочку вперед
                            }
                            --all; //Укорачиваем цепочку и,
                            first = 0; //начинаем проверку сначала
                            }
                    }
    return 0;
}
Я почему-то думал что, переменная second будет вычисляться каждый раз при обращении к ней, ан нет))

Всем спасибо! Отладка рулит(правда пока в ней разобрался...)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.