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

Формируем во внешнем файле матрицу 100х100 случайным образом. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести график функции http://www.cyberforum.ru/cpp-beginners/thread533766.html
Вывести график функции: y= 10/(1+x*x) диапазон изменения аргумента, количество точек графика 30. вывести значения аргумента Х, значения функции Y в виде таблицы, max и min функции:
C++ Ввести телефонный код райцентра. Вывести его название. Создать программу, которая выполняет следующие действия: користуач выбирает из списка значение, в результате чего на экране "является краткая характеристика выбранного значения и соответствующее ему изображение. Программа заканчивает работу при нажатии на главное меню программы" Выход ". Тематику значений выбрать по указанному варианту Ввести телефонный код райцентра. Вывести его название. http://www.cyberforum.ru/cpp-beginners/thread533754.html
Создать приложение для решения связи задачи C++
Цены на два вида товаров выросли на р процентов. Вывести старые и новые цены
C++ Размер внешнего глобального массива
У меня возник такой вопрос : Есть глобальный массив в одном файле: //1.cpp int arr = {4,6,0,1,2}; Есть код в другом файле, его использующий: //2.cpp #include <iostream> using namespace std;
C++ Определить отношение лексикографического порядка http://www.cyberforum.ru/cpp-beginners/thread533737.html
Здравствуйте, такое задание по ООП. Для класса символьной строки определить отношение лексикографического порядка, перегрузив с помощью дружественной функции операцию «<». Заранее благодарен.
C++ Матрица. Сдвиг по строкам на заданное количество элементов. Пропускал занятия по C# и не могу выполнить задание :( ПОМОГИТЕ, больше некуда обратиться :( Буду благодарен за любую помощь Задана матрица из целых чисел. Осуществить циклический сдвиг по строкам на заданное с клавиатуры количество элементов. Выполнить задание процедурным и объектно-ориентированным методами. Правила2.4. На каждый вопрос создавайте по одной теме - это помогает избежать... подробнее

Показать сообщение отдельно
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
05.04.2012, 16:14     Формируем во внешнем файле матрицу 100х100 случайным образом.
Сделал, но не всё - только пузырёк вставки.
Кусорт тоже, но некорректно работающий, его ещё отладить надо.
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <fstream>
#include <windows.h>
using namespace std;
const int MAXA=5;
HANDLE ohandle;
COORD cursor;
int arr[MAXA][MAXA];
 
void create_file(){
    ofstream text("input.txt");
    int i,j;
    srand( time( NULL ) );
    
    for(i=0; i<MAXA; i++){
        for (j=0; j<MAXA; j++)
        {
            text<<rand()%100;;
            text<<" ";
        }
        text<<endl;
    }
    text.close();
}
void read_file(){
    ifstream text("input.txt");
    int i, j;
    for(i=0; i<MAXA; i++){
        for (j=0; j<MAXA; j++)
        {
            text>>arr[i][j];
        }
    }
    text.close();
}
void write_file(){
    ofstream text("output.txt");
    int i, j;
    for(i=0; i<MAXA; i++){
        for (j=0; j<MAXA; j++)
        {
            text<<arr[i][j];
            text<<" ";
        }
        text<<endl;
    }
    text.close();
}
void print_arr(){
    int i, j;
    cursor.X=1; cursor.Y=13;
    SetConsoleCursorPosition(ohandle, cursor);
    for(i=0; i<MAXA; i++){
        for (j=0; j<MAXA; j++)
        {
            cout<<arr[i][j]<<" ";
        }
        cout<<endl;
    }
 
}
void getnext(int* i, int* j){
    if ((*j)==MAXA-1){
        (*i)=(*i)+1;
        (*j)=0;
    }
    else 
        (*j)=(*j)+1;
}
void getpre(int* i, int* j){
    if ((*j)==0){
        (*i)=(*i)-1;
        (*j)=MAXA-1;
    }
    else 
        (*j)=(*j)-1;
}
void bubble_sort(){
    bool sorted=false;
    int Ilimit=MAXA-1; 
    int Jlimit=MAXA-1;
    int i, j;
    int inext, jnext;
    int tmp;
     print_arr();
    while(!sorted){
        sorted=true;
        i=0; j=0;
        while((i!=Ilimit)||(j!=Jlimit)){
                inext=i;
                jnext=j;
                getnext(&inext, &jnext);
 
                if (arr[i][j]>arr[inext][jnext]){
                    tmp=arr[i][j];
                    arr[i][j]=arr[inext][jnext];
                    arr[inext][jnext]=tmp;
                     print_arr();
                    sorted=false;
                }
                i=inext;
                j=jnext;
            }
        getpre(&Ilimit, &Jlimit);
    }
}
void quick_sort(int lefti, int leftj, int righti, int rightj){
    int elem, tmp;
    int lip, rip, ljp, rjp;
    if ((lefti!=righti)||(leftj!=rightj)){
        elem=arr[lefti][leftj];
        lip=lefti; rip=righti; ljp=leftj; rjp=rightj; 
        while ((lip!=rip)||(ljp!=rjp)){
            while (arr[lip][ljp]<=elem) getnext(&lip, &ljp);
            while (arr[rip][rjp]<=elem) 
                getpre (&rip, &rjp);
            if ((lip<rip)||((lip==rip)&&(ljp<rjp))){
                tmp=arr[lip][ljp];
                arr[lip][ljp]=arr[rip][rjp];
                arr[rip][rjp]=tmp;
            }
            else break;
        }
        quick_sort(lefti, leftj, lip, ljp);
        quick_sort(rip, rjp, righti, rightj);
    }
}
void insert_sort(){
    int ins_mark_i=0, ins_mark_j=1;
    int i, j;
    int ipre, jpre;
    int elem;
    //print_arr();
    while ((ins_mark_i<MAXA)&&(ins_mark_j<MAXA)){
        elem=arr[ins_mark_i][ins_mark_j];
        i=ins_mark_i;      j=ins_mark_j;
        ipre=i;            jpre=j;
        getpre(&ipre,      &jpre);
        
        while (  ((i+j)>0) && (elem<arr[ipre][jpre])  ){
            arr[i][j]=arr[ipre][jpre];
            i=ipre;        j=jpre;
            getpre(&ipre,      &jpre);
            //print_arr();
        } 
        arr[i][j]=elem;
        
        
        ///increment loop cnt
        getnext(&ins_mark_i, &ins_mark_j);
    }//main loop
}
 
int menu(){
    int result=0;
    cursor.X=5; cursor.Y=3;
    SetConsoleCursorPosition(ohandle, cursor);
    cout <<"    MENU. SELECT (1..5)"<<endl;
    cout <<"1. New File"<<endl;
    cout <<"2. Not sorted"<<endl;
    cout <<"3. Bubble sort"<<endl; 
    cout <<"4. Insertion sort"<<endl;
    cout <<"5. Quick sort"<<endl;
    cout <<"6. Merge sort"<<endl;
    cout <<"7. Exit"<<endl;
    cursor.X=0; cursor.Y=11;
    while ((result<1)||(result>7)){
        SetConsoleCursorPosition(ohandle, cursor);
        cin>>result;
    }
    return result;
}
void clear_window(){
    int i, j;
    cursor.X=0; cursor.Y=12;
    SetConsoleCursorPosition(ohandle, cursor);
            
    for(i=0; i<MAXA+1; i++){
        for (j=0; j<MAXA; j++)
        {
            cout<<"   ";
        }
        cout<<endl;
    }
    cursor.X=0; cursor.Y=12;
    SetConsoleCursorPosition(ohandle, cursor);  
}
int main()
{
    char c;
    bool run=true;
    int item;
    ohandle=GetStdHandle(STD_OUTPUT_HANDLE);
    
    //create_file();
    //read_file();
    //print_arr();
    while (run){
        item=menu();
        clear_window();
        switch (item){
            case 1: cout<<"New file selected      \n"; create_file(); break;
            case 2: cout<<"No sort selected       \n"; read_file(); print_arr(); break;
            case 3: cout<<"bubble sort selected   \n"; read_file(); bubble_sort(); print_arr();  break;
            case 4: cout<<"insertion sort selected\n"; read_file(); insert_sort(); print_arr(); break;
            case 5: cout<<"qsort selected         \n"; read_file(); quick_sort(0,0,MAXA-1, MAXA-1);  print_arr();break;
            case 6: cout<<"merge sort selected    \n"; break;
            case 7: run=false; break;
        }
 
    }
    
    return 0;
}
 
Текущее время: 14:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru