Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
1

Написать программу сортировки двумерного массив и разбить её на функции по пунктам меню

03.12.2016, 10:53. Показов 1097. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мальчикии ,помогите и желательно поясните ,нужно написать программу,которая сортирует двумерный массив и разбить её на функции по пунктам меню,также выделение памяти обязательно должно быть в функции ,я написала,а она не работает!
завтра сдавать уже надо!


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
219
220
221
222
223
224
225
226
227
228
229
230
231
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include<clocale>
#include<memory.h>
#include<stdlib.h>
#include<time.h>
#ifdef _DEBUG
#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
#endif
int vibor(int menu);
int menuodin(int widht, int height);
int massiv(int widht, int height, int** a, int proizv, int strah);
int menudva(int widht, int height, int** a,  int strah, int menu2 ,int proizv);
int menutri(int strah, int widht, int height, int povtor, int proizv, int perem, int **a);
int menuchetire(int strah, int widht, int height,   int **a);
 
 
int main() {
 
    _CrtMemState _ms;
    _CrtMemCheckpoint(&_ms);
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    int proizv = NULL;
    int **a = NULL;
    int perem = 0;
    int height = 0;
    int widht = 0;
    int povtor = 0;
    int menu = NULL;
    int menu2 = NULL;
    int strah = 0;
    do {
        menu=vibor(menu);
        switch (menu) {
        case 1: {
            for (int i = 0; i < widht; i++)
            {
                delete[] a[i];
            }
            delete[] a;
            menuodin(widht, height);
            massiv(widht, height, a, proizv, strah);
            break;
        }
        case 2: {menudva(widht, height, a, menu2, proizv, strah);
            break; }
        case 3: {menutri(strah, widht, height, povtor, proizv, perem, a);
            break; }
        case 4: {menuchetire(strah, widht, height, a);
            break; }
        case 5:
        {break; }
        default: {printf("Ошбика:выбра неверный пункт меню\n");
        }
        }
        }
     while (menu != 5);
        getchar();
 
    return 0;
}
 
int vibor( int menu){
    printf("|-------------------------------------------------|\n");
    printf("|                Доброго времени суток,           |\n");
    printf("|             программа приветствует вас,         |\n");
    printf("|            Выберите пункт меню                  |\n");
    printf("|         1.Ввести размер Массива                 |\n");
    printf("|         2.Задать значения массива               |\n");
    printf("|         3.Обработка массива                     |\n");
    printf("|         4.вывод массива на экран                |\n");
    printf("|         5.выход из программы                    |\n");
    printf("|-------------------------------------------------|\n\n");
    scanf("%d", &menu);
    return (menu);
}
int menuodin(int widht,int height){
    printf("\n введиет ширину и высоту массива  \n");
    do
    {
        scanf("%d %d", &widht, &height);
        if (height < 0) {
            printf("\a Error:размер массива должен быть неотрицательным ");
        }
        if (widht < 0)
        {
            printf("\a Error:размер массива должен быть неотрицательным ");
        }
    } while (widht < 0, height < 0);
    return(widht, height);
}
int massiv(int widht, int height,int** a, int proizv, int strah) {
    a = new int *[height];
    for (int i = 0; i < height; i = i + 1)
    {
        a[i] = new int[widht];
    }
    proizv = height*widht;
    strah = 1;
    return(strah, proizv ); 
}
int menudva(int widht, int height, int** a, int strah, int menu2, int proizv)
{
    if (strah != 1) {
        printf("\n Сначала задайте разсер массива \n");
    }
 
 
    else {
        printf("|-------------------------------------------------|\n");
        printf("|        Вы хотели бы задать значение массива     |\n");
        printf("|         2-автоматически(случайными числами )    |\n");
        printf("|         1-вручную с клавиатуры                  |\n");
        printf("|-------------------------------------------------|\n\n");
 
        scanf("%d", &menu2);
        switch (menu2) {
 
        case 1: {
 
            printf(" \n");
            printf("Введите значений %d  \n", proizv);
            for (int i = 0; i < height; i = i + 1)
            {
                for (int j = 0; j < widht; j = j + 1) {
                    scanf("%d", &a[i][j]);
                }
            }
            for (int i = 0; i < height; i = i + 1) {
                for (int j = 0; j < widht; j = j + 1)
                {
                    printf("%d ", a[i][j]);
                }
                printf("\n");
            }
            strah = 2;
            break; }
        case 2: {
            for (int i = 0; i < height; i = i + 1)
            {
                for (int j = 0; j < widht; j = j + 1) {
                    a[i][j] = rand() % 10;
                }
            }
            for (int i = 0; i < height; i = i + 1) {
                for (int j = 0; j < widht; j = j + 1)
                {
                    printf("%d ", a[i][j]);
                }
                printf("\n");
            }
            strah = 2;
            break; }
        }
        return(strah, **a, height, widht, menu2, proizv);
    }
}
        int menutri(int strah, int widht, int height, int povtor, int proizv, int perem, int **a) {
            
                if (strah != 2) {
                    printf("\n Сначала задайте значения \n");
 
                }
                else {
                    for (int povtor = 0; povtor < proizv; povtor = povtor + 1) {
                        for (int i = 0; i < (height - 1); i = i + 1) {
                            for (int j = 0; j < widht; j = j + 1)
                            {
 
                                if (a[i][j] < a[i + 1][j])
                                {
                                    perem = a[i][j];
                                    a[i][j] = a[i + 1][j];
                                    a[i + 1][j] = perem;
 
                                }
 
 
 
 
                                if (a[i][j] < a[i][j + 1])
                                {
                                    perem = a[i][j];
                                    a[i][j] = a[i][j + 1];
                                    a[i][j + 1] = perem;
 
                                }
 
                                if (a[i + 1][0] > a[i][j])
                                {
                                    perem = a[i][j];
                                    a[i][j] = a[i + 1][0];
                                    a[i + 1][0] = perem;
 
                                }
 
                            }
                        }
                    }
                    printf("\n Массив отсортирован \n");
                    strah = 3;
 
                }
                return( strah,  widht, height,  povtor,  proizv,  perem,  **a);
            }
        
        int menuchetire(int strah, int widht, int height, int **a) 
        {
            if (strah != 3) {
                printf("\n Сначала отсортирйте массив \n");
 
            }
 
            else
            {
                printf("Отсортированный массив\n ");
                for (int i = 0; i < height; i = i + 1) {
                    for (int j = 0; j < widht; j = j + 1)
                    {
                        printf("%d ", a[i][j]);
                    }
                    printf("\n");
                }
            }
 
            return(strah, widht, height,  **a);
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2016, 10:53
Ответы с готовыми решениями:

Написать программу, которая методом сортировки выбором сортирует введенный пользователем массив слов
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;string.h&quot; //char...

Вывод меню с привязыными к пунктам этого меню материалами
Вывод меню с привязыными к пунктам этого меню материалами. Подскажите пожалуйста нет ли такого...

Написать функцию для сортировки одномерного массива методом пузырька. Массив и его длина – параметры функции
Написать функцию для сортировки одномерного массива методом пузырька. Массив и его длина –...

Написать программу сортировки массива с помощью алгоритма внешней сортировки
1. Дан текстовый файл, в котором записана последовательность целых чисел. Написать программу...

14
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
03.12.2016, 10:55 2
В общем случае, для оформления кода,
выделите код и нажмите на кнопку соответствующего языка (см. изображение)
0
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
04.12.2016, 16:28  [ТС] 3
Мальчики,помогите глупой студентке, выяснить,почему этот говнокод не работает и выдает вышеупомянутую ошибку



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
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include<clocale>
#include<memory.h>
#include<stdlib.h>
#include<time.h>
#ifdef _DEBUG
#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
#endif
#include <string.h>
#include<iostream>
#include <string>
#include<conio.h>
#include<Windows.h>
#include <numeric>
using namespace std;
int vibor(int menu );
char odin(char* stroka ,char *newstroka ,string *mas);
char dva(char* stroka, char *newstroka, string mas[] ,int &index ,string &t);
char tri(char* stroka, char *newstroka, string mas[]);
 
int main(int args,_TCHAR* argd[])
{
    _CrtMemState _ms;
    _CrtMemCheckpoint(&_ms);
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int menu = 0;
    string t = NULL;
    int index = 0;
    char *newstroka;
    char stroka[1024]; 
    string mas[1000];
    do {
        menu = vibor(menu); 
        switch (menu) {
        case 1: {
            
            *newstroka=odin( stroka,  newstroka, mas);
            break;
        }
        case 2: {dva(stroka, newstroka, mas, index,t);
            break; }
        case 3: {tri(stroka, newstroka, mas);
            break; }
        case 4: {
            break; }
        
        default: {printf("Ошбика:выбра неверный пункт меню\n");
        }
        }
    } while (menu != 4);
    getchar();
    
    
    
        getchar();
    
 
    return 0;
}
int vibor(int menu)
{printf("|-------------------------------------------------|\n");
printf("|                Доброго времени суток,           |\n");
printf("|             программа приветствует вас,         |\n");
printf("|            Выберите пункт меню                  |\n");
printf("|         1.Ввести строку                         |\n");
printf("|         2.обработка строки                      |\n");
printf("|         3.Вывод строки                          |\n");
printf("|         4.выход                                 |\n");
printf("|-------------------------------------------------|\n\n");
scanf("%d", &menu);
return (menu);
}
 
char odin(char* stroka, char *newstroka, string *mas){
    printf("введите строку \n");
    gets_s(stroka,1024);
    newstroka = (char *)malloc(strlen(stroka) + 1);
    strcpy(newstroka, stroka);
    return(*newstroka);
}
char dva(char* stroka, char *newstroka, string mas[], int &index,string &t){
    
    char * pch = strtok(newstroka, " ,.?!-");
 
 
 
    while (pch != NULL)
    {
        mas[index] = pch;
        pch = strtok(NULL, " ");
        index++;
    }
 
    for (int i = 0; i < 1000; i = i + 2) {
          t = mas[i];
        mas[i] = mas[i + 1];
        mas[i + 1] = t;
    }
    printf("СТРОКА ОТСОРТИРОВАННА\n");
    return NULL;
}
char tri(char* stroka, char *newstroka, string mas[]){
    printf("НОВАЯ СТРОКА\n");
    for (int i = 0; i < 10; ++i) {
        std::cout << mas[i] << " ";
 
        return NULL;
    }
}
0
4 / 4 / 5
Регистрация: 25.08.2016
Сообщений: 44
04.12.2016, 16:39 4
C++
1
string t = NULL;
Инициализировать таким образом строку лучше не стоит. Это все таки не указатель. std::string и так создается пустой. Можно так:
C++
1
string t = "";
0
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
04.12.2016, 16:46  [ТС] 5
исправила ,теперь выдает такую ошибку
Миниатюры
Написать программу сортировки двумерного массив и разбить её на функции по пунктам меню  
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
04.12.2016, 16:56 6
Цитата Сообщение от SvetlanaMoskva Посмотреть сообщение
Мальчики,помогите глупой студентке, выяснить,почему этот говнокод не работает
Потому что это говнокод.
Цитата Сообщение от SvetlanaMoskva Посмотреть сообщение
исправила ,теперь выдает такую ошибку
Возможно, поможет char *newstroka; char newstroka[1024];
0
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
04.12.2016, 16:59  [ТС] 7
теперь вот так
Миниатюры
Написать программу сортировки двумерного массив и разбить её на функции по пунктам меню  
0
4 / 4 / 5
Регистрация: 25.08.2016
Сообщений: 44
04.12.2016, 17:04 8
зачем вам вообще возвращать char. Измените на
C++
1
void odin(char* stroka, char *newstroka, string *mas);
А newstroka инициализируйте:
C++
1
newstroka = NULL;
Только смотря в ф-цию odinodinodinodin и там явно утечка памяти.
0
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
04.12.2016, 17:11  [ТС] 9
А с этим что делать?
Миниатюры
Написать программу сортировки двумерного массив и разбить её на функции по пунктам меню  
0
4 / 4 / 5
Регистрация: 25.08.2016
Сообщений: 44
04.12.2016, 17:12 10
C++
1
2
3
4
5
6
void odin(char* stroka, char *newstroka, string *mas) {
    printf("введите строку \n");
    gets_s(stroka, 1024);
    newstroka = (char *)malloc(strlen(stroka) + 1);
    strcpy(newstroka, stroka);
}
смените определение ф-ции тоже
0
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
04.12.2016, 17:23  [ТС] 11
Спааааааааасибо большое!!!!!!!!!!!!!!
все работает!
0
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
04.12.2016, 20:42  [ТС] 12
Мальчики,теперь программа зацикливается и выдает фигню ,что делать?
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 "stdafx.h"
#include <stdio.h>
#include <math.h>
#include<clocale>
#include<memory.h>
#include<stdlib.h>
#include<time.h>
#ifdef _DEBUG
#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
#endif
#include <string.h>
#include<iostream>
#include <string>
#include<conio.h>
#include<Windows.h>
#include <numeric>
#include<cstdio>
using namespace std;
int vibor(int menu );
void odin(char* stroka, char *newstroka, string *mas);
char dva(char* stroka, char *newstroka, string mas[] ,int &index ,string t);
char tri(char* stroka, char *newstroka, string mas[]);
 
int main(int args,_TCHAR* argd[])
{
    _CrtMemState _ms;
    _CrtMemCheckpoint(&_ms);
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int menu = 0;
    int strah = 0;
    string t = "";
    int index = 0;
    char *newstroka=NULL;
    char stroka[1024]; 
    string mas[1000];
    do {
        menu = vibor(menu); 
        switch (menu) {
        case 1: {
            
            odin( stroka,  newstroka, mas);
            strah = 1;
            break;
        }
        case 2: { if (strah != 1) {
            printf("Сначала введите строку\n");
        }
                else {
                    dva(stroka, newstroka, mas, index, t);
                    strah = 2;
                }
            break; }
        case 3: {if (strah != 2) {
            printf("Сначала обработайте строку \n");
        }
                else {
                    tri(stroka, newstroka, mas);
                }           break; }
        case 4: {
            break; }
        
        default: {printf("Ошбика:выбра неверный пункт меню\n");
        }
        }
    } while (menu != 4);
    getchar();
    
    
    
        getchar();
    
 
    return 0;
}
int vibor(int menu)
{printf("|-------------------------------------------------|\n");
printf("|                Доброго времени суток,           |\n");
printf("|             программа приветствует вас,         |\n");
printf("|            Выберите пункт меню                  |\n");
printf("|         1.Ввести строку                         |\n");
printf("|         2.обработка строки                      |\n");
printf("|         3.Вывод строки                          |\n");
printf("|         4.выход                                 |\n");
printf("|-------------------------------------------------|\n\n");
scanf("%d", &menu);
return (menu);
}
 
void odin(char* stroka, char *newstroka, string *mas) {
    printf("введите строку \n");
    gets_s(stroka, 1024);
    newstroka = (char *)malloc(strlen(stroka) + 1);
    strcpy(newstroka, stroka);
}
char dva(char* stroka, char *newstroka, string mas[], int &index,string t){
    
    char * pch = strtok(newstroka, " ,.?!-");
 
 
 
    while (pch != NULL)
    {
        mas[index] = pch;
        pch = strtok(NULL, " ");
        index++;
    }
 
    for (int i = 0; i < 1000; i = i + 2) {
          t = mas[i];
        mas[i] = mas[i + 1];
        mas[i + 1] = t;
    }
    printf("СТРОКА ОТСОРТИРОВАННА\n");
    return NULL;
}
char tri(char* stroka, char *newstroka, string mas[]){
    printf("НОВАЯ СТРОКА\n");
    for (int i = 0; i < 10; ++i) {
        std::cout << mas[i] << " ";
 
        return NULL;
    }
}
Миниатюры
Написать программу сортировки двумерного массив и разбить её на функции по пунктам меню  
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
04.12.2016, 20:51 13
C++
1
menu = vibor();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int vibor()
{
int menu;
 
printf("|-------------------------------------------------|\n");
printf("|                Доброго времени суток,           |\n");
printf("|             программа приветствует вас,         |\n");
printf("|            Выберите пункт меню                  |\n");
printf("|         1.Ввести строку                         |\n");
printf("|         2.обработка строки                      |\n");
printf("|         3.Вывод строки                          |\n");
printf("|         4.выход                                 |\n");
printf("|-------------------------------------------------|\n\n");
scanf("%d", &menu);
scanf("\n");
return (menu);
}
0
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 8
04.12.2016, 21:00  [ТС] 14
не помогло(
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
04.12.2016, 22:05 15
Актуальный вариант покажи.
0
04.12.2016, 22:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2016, 22:05
Помогаю со студенческими работами здесь

Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел
Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный...

Написать программу, упорядочивающую массив строк в порядке возрастания длины их первого слова методом пузырьковой сортировки
Доброго времени суток, Прошу помочь с задачей: Написать программу, упорядочивающую массив строк в...

Написать программу сортировки данных в массиве методом быстрой сортировки по возрастанию номеров маршрутов
Описать класс с именем Route, содержащий следующие поля: start (название начального пункта...

Написать две функции сортировки массива целых чисел, реализующих заданные алгоритмы сортировки – один из класса квадрат
#include &lt;stdio.h&gt; #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;stdlib.h&gt; #include...

Написать функцию сортировки двумерного массива, содержащего имена людей
Задание: Дан двумерный строковый массив, содержащий имена людей (Boris, Vladimir, Anna, Petr)....

Разбить программу на процедуры и вывести её в меню
заранее спасибо за помощь. есть программа. нужно разбить на процедуры и сделать вывод в меню....


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru