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

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

Восстановить пароль Регистрация
 
Beingmaker
 Аватар для Beingmaker
0 / 0 / 0
Регистрация: 29.03.2012
Сообщений: 8
29.03.2012, 13:55     Формируем во внешнем файле матрицу 100х100 случайным образом. #1
Нужно сделать следующую задачу:

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

Пользователь задает параметр сортировки:
1 - пузырьковая
2 - вставками
3 - быстрая
4 - слиянием (формируем в другом файле матрицу 50х50 случайным образом)

Открываем файл, сортируем, закрываем файл. Считаем время работы алгоритма, выводим время на экран.

Необходим код с небольшими комментариями.

За работу готов отблагодарить. Кто-нибуть может помочь?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2012, 13:55     Формируем во внешнем файле матрицу 100х100 случайным образом.
Посмотрите здесь:

Создать матрицу А(nxn), сгенерировать елементы случайным образом C++
Образовать матрицу A(nxn), сгенерировав элементы случайным образом. Определить индексы минимального элемента матрицы. Определить индексы максимального C++
C++ Образовать матрицу A(nxn), сгенерировав элементы случайным образом. Определить индексы минимального элемента матрицы.
делим массив на n равных частей и из них формируем матрицу C++
C++ Дата случайным образом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.03.2012, 13:57     Формируем во внешнем файле матрицу 100х100 случайным образом. #2
Цитата Сообщение от Beingmaker Посмотреть сообщение
матрицу 100х100
А по какому принципу сортировать то?
Beingmaker
 Аватар для Beingmaker
0 / 0 / 0
Регистрация: 29.03.2012
Сообщений: 8
29.03.2012, 14:03  [ТС]     Формируем во внешнем файле матрицу 100х100 случайным образом. #3
Kuzia domovenok, сортировать как линейный массив из 10000 элементров
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.04.2012, 18:56     Формируем во внешнем файле матрицу 100х100 случайным образом. #4
Цитата Сообщение от Beingmaker Посмотреть сообщение
Kuzia domovenok, сортировать как линейный массив из 10000 элементров
То есть так
{pmatrix}
2 4 9
12 17 18
18 25 125
{/pmatrix}
построчно?
Beingmaker
 Аватар для Beingmaker
0 / 0 / 0
Регистрация: 29.03.2012
Сообщений: 8
02.04.2012, 18:58  [ТС]     Формируем во внешнем файле матрицу 100х100 случайным образом. #5
Kuzia domovenok, да
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
05.04.2012, 16:14     Формируем во внешнем файле матрицу 100х100 случайным образом. #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
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2012, 21:13     Формируем во внешнем файле матрицу 100х100 случайным образом.
Еще ссылки по теме:

C++ Разработать программу, которая формирует случайным образом вещественную матрицу размером n x m
C++ Сгенерировать матрицу 100х100
C++ Поиск нужной строки во внешнем файле ( блокнот )

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
06.04.2012, 21:13     Формируем во внешнем файле матрицу 100х100 случайным образом. #7
Исправил работу quick sort теперь работает
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
void quick_sort(int lefti, int leftj, int righti, int rightj){
    int elem, tmp;
    int lip, rip, ljp, rjp;
    
    if ((lefti!=righti)||(leftj!=rightj)){
        //print_arr();
        elem=arr[lefti][leftj];
        lip=lefti; rip=righti; ljp=leftj; rjp=rightj; 
        while ((lip!=rip)||(ljp!=rjp)){
            while (/**/(arr[lip][ljp]<=elem)/**/ && ((lip!=rip)||(ljp!=rjp))       )
                getnext(&lip, &ljp);
            while ((arr[rip][rjp]>elem) && ((lip!=rip)||(ljp!=rjp))     )
                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;
        }
        if (arr[lip][ljp]>elem) getpre (&lip, &ljp);
        arr[lefti][leftj]=arr[lip][ljp];
        arr[lip][ljp]=elem;
        
        //print_arr();
        quick_sort(rip, rjp, righti, rightj);
        
        quick_sort(lefti, leftj, lip, ljp);
    }
}
Yandex
Объявления
06.04.2012, 21:13     Формируем во внешнем файле матрицу 100х100 случайным образом.
Ответ Создать тему
Опции темы

Текущее время: 03:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru