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

Двумерный массив с уникальными элементами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передать файл в процедуру http://www.cyberforum.ru/cpp-beginners/thread858748.html
Как передать файл в процедуру? Вот код: #include <cstdlib> #include <iostream> #include <stdio.h> using namespace std; char simvol; void E(void );
C++ Натуральные числа (НОД) Даны натуральные числа n,m; найти НОД(n,m). Использовать программу, включающую рекурсивную процедуру вычисления НОД, основанную на соотношении НОД(n,m)=НОД(m,r), где r-остаток от деления n на m. Чем эта программа хуже нерекурсивной программы вычисления НОД(n,m)? http://www.cyberforum.ru/cpp-beginners/thread858745.html
Написать коментарии C++
#include <iostream> class S { public: virtual int get() = 0;}; class A1 : public S { public: virtual int get() { return a1; } private:
C++ Как сделать, чтобы окно выполнения сразу не закрывалось?
помогите пожалуйста, после компиляции при выполнении окно очень быстро пропадает. как сделать что бы оно сразу не закрывалось?
C++ Надо переделать немного программу http://www.cyberforum.ru/cpp-beginners/thread858733.html
Смотрите есть программа на решение методом хорд нелинейных уравнений. Но проблема в том что я не могу ее переработать так чтоб данные можно было вводить с клавиатуры #include <iostream> #include <math.h> using namespace std; float m_ch(float, float, float); float your_function(float); int main() {
C++ чтение из файла определенной строки Доброго времени суток. Передо мной встала задача, прочитать определённую строку из текстового файла. прочитать весь файл целиком я могу. Но вот определённую строку... С чего начать, не подскажете? подробнее

Показать сообщение отдельно
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
09.05.2013, 19:32     Двумерный массив с уникальными элементами
Удалил кучу кода, вроде работает, как ты хотел.
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
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
const int rowcols=9;
bool check(int row,int**table) {
    int i,j,k;
    //check cols
    for (i = 0; i < rowcols; i++) {     //ñòîëáöû
        for (j = 0; j < rowcols; j++) {   //öèôðû
            int count=0;
            for (k=0; k<row+1; k++)    //ñòðî÷êè
                if (table[k][i]==j+1) count++;
            if (count>1) return false;
        }
    }
    return true;
}
void swap(int**table,int i, int j, int k) {
    int temp=table[i][j];
    table[i][j]=table[i][k];
    table[i][k]=temp;
}
bool generate(int i, int**current_table) {
    int j,k;
    if (current_table[i][0]==-1) {
        for (j=0; j<rowcols; j++) {
            current_table[i][j]=j+1;
        }
        return true;
    }
    else {
        // Г*Г*õîäèì ýëåìåГ*ГІ ìåГ*ГјГёГҐ èëè Г°Г*ГўГ*îãî ïîñëåäóþùåìó
        int pos = -1;
        for (j=rowcols-2;j>=0;j--)
            if (current_table[i][j] < current_table[i][j+1]) {
                pos=j;
                break;
            }
        if (pos == -1)
            return false; // ГІГҐГЄГіГ№Г*Гї ïåðåñòГ*Г*îâêГ* ïîñëåäГ*ГїГї Гў ëåêñèêîãðГ*ôè÷åñêîì ïîðÿäêå
        // Г*Г*õîäèì ìèГ*ГЁГ¬Г*ëüГ*ûé ýëåìåГ*ГІ ïðåâûøГ*ГѕГ№ГЁГ© Г*Г*éäåГ*ûé
        int value = current_table[i][pos];
        int swapIndex = -1;
        for (j=rowcols-1;j>=pos;j--)
        if (current_table[i][j]>value) {
            swapIndex = j;
            break;
        }
        swap(current_table,i,pos,swapIndex);
        //ðåâåðñ ïîäñòðîêè ГЇГ°Г*ГўГҐГҐ ГЁГ*äåêñГ* pos
        int f = pos+1, s = rowcols-1;
        while (f<s) {
            swap(current_table,i,f,s);
            f++;
            s--;
        }
        return true;
    }
}
bool rekurs(int i, int** current_table) { 
 while (true) {
  if (generate(i,current_table)==false) { 
    current_table[i][0]=-1;
    return false;
   }
  if (check(i,current_table)==true) {
    if (i<rowcols-1) {
        if (rekurs(i+1,current_table)) {
            return true;
        }
    }
    else return true;
  }
  }
}
int _tmain(int argc, _TCHAR* argv[])
{
    int i,j,k;
    int **result=new int*[rowcols];
    for (i = 0; i < rowcols; i++) {
        result[i]=new int[rowcols];
        for (j = 0; j < rowcols; j++) {
            result[i][j]=-1;
        }
    }
    srand(time(NULL));
    for (j=0;j<rowcols;j++) {
        bool unique=false;
        int number;
        while (!unique) {
            number=rand()%9+1;
            unique=true;
            for (i=0;i<j;i++) {
                if (result[0][i]==number) {
                    unique=false;
                    break;
                }
            }
        }
        result[0][j]=number;
    }
    rekurs(1,result);
    int swaps=rand()%9;
    for (int swap_index=0;swap_index<swaps;swap_index++) {
        int row1=rand()%9;
        int row2=rand()%9;
        while (row1==row2) row2=rand()%9;
        int*temp=new int[rowcols];
        for (i=0;i<rowcols;i++) {
            temp[i]=result[row1][i];
            result[row1][i]=result[row2][i];
            result[row2][i]=temp[i];
        }
        delete [] temp;
    }
    
    for (i=0;i<rowcols;i++) {
        std::cout<<std::endl;
        for (j=0;j<rowcols;j++) {
            std::cout<<result[i][j]<<" ";
        }
    }
    
    for (i = 0; i < rowcols; i++) {
        delete [] result[i];
    }
    delete [] result;
    
    std::cout<<std::endl<<"Press any key to exit...";
    getch();
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru