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

сортировка двумерного массива

17.04.2010, 18:29. Показов 2085. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помоги отсортировать двумерный массив как в примере
пример: 2 4 6 1 2 3
1 5 9 4 5 6
7 8 3 отсортировался в 7 8 9
вот мои наработки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include<stdio.h>
 
void main()
{
    int A[3][3],i,j;
    printf("vvedute elementu \n");
    //ввод массива//
    for(i=0;i<3;i++){
        for(j=0;j<3;j++)
        {
            printf("A[%d][%d]=", i,j);
            scanf("%d",&A[i][j]);}}
    //сортировка массива//
 
 
//вывод ввиде матрицы//
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
                printf("%d", A[i][j]);}
Добавлено через 18 минут
пример:
2 4 5
1 3 7
8 9 6
в
1 2 3
4 5 6
7 8 9
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2010, 18:29
Ответы с готовыми решениями:

Сортировка двумерного массива
Необходимо отсортировать массив сортировкой Шелла с шагом d=N /2^i: в одной программе сортировать...

Сортировка двумерного массива
Задание звучит так: &quot;Сформировать двумерный массив целых чисел размерности nxm, где n,m&lt;10 –...

Сортировка двумерного массива
Есть задачка с 3-ох пунктов. Первый я сделал(создать многомерный целочисельный масив заданый...

Сортировка двумерного массива
Здесь код, который вычисляет произведения всех отрицательных чисел каждой строки. Вконце концов мне...

17
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
17.04.2010, 22:31 2
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
#include <stdio.h>
#include <conio.h>
 
#define H 3
#define W 3 
int main(){
    int matrix[H][W] = {
    {2,4,5},
    {1,3,7},
    {8,9,6}
    };
int i,j;
 
 
//ñîðòèðóåì
int *t = (int*)matrix;
for( i = 0 ; i < H*W-1 ; i++ ){
    for( j = i+1 ; j < H*W ; j++){
        if(t[j]<t[i]){
                int tmp = t[i];
        t[i]=t[j];
        t[j] = tmp;
        }
    }
}
for( i = 0 ; i < H ; i++ ){
    for( j = 0 ; j < W ; j++){
    printf("%d " ,matrix[i][j]);
    }
printf("\n");
}
 
getch();
return 0;
}
2
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 11:46  [ТС] 3
спасибо , но можно ещё вариант без указателей
и что делается на 16 строчке ????
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 353
18.04.2010, 12:22 4
suv121, в 16 строчке создается указатель на матрицу, как на одномерный массив. И больше указателей явно нигде не используется.
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:29  [ТС] 5
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
#include "stdafx.h"
#include<stdio.h>
#include <conio.h>
 
int main()
{
int A[3][3],i,j;
printf("vvedute elementu \n");
//ввод массива//
for(i=0;i<3;i++){
for(j=0;j<3;j++)
{
printf("A[%d][%d]=", i,j);
scanf("%d",&A[i][j]);}}
//сортировка массива//
int *t = (int*)A;
for( i = 0 ; i < 8; i++ ){
        for( j = i+1 ; j < 9; j++){
                if(t[j]<t[i]){
                int tmp = t[i];
                t[i]=t[j];
                t[j] = tmp;
                }
        }
}
 
 
 
 
//вывод ввиде матрицы//
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d", A[i][j]);}}
а что у меня не так ???? после того как я ввожу массив , программа закрывается
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 353
18.04.2010, 12:33 6
suv121, нужно остановить выполнение, используя, например, system("pause") или getch(). Да, и пользуйтесь тегами выделения кода...
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:38  [ТС] 7
а как тегами пользоваться для выделения???
и как именно остановить выполнение???
0
45 / 45 / 3
Регистрация: 19.11.2009
Сообщений: 362
18.04.2010, 12:39 8
Зачем вы используете указатели?
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:42  [ТС] 9
мне так подсказали , а как без указателей???
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 353
18.04.2010, 12:43 10
suv121, остановить выполнение, поставив перед закрывающей скобкой system("pause"); или getch();. Для того, чтобы выделить код, нажмите на кнопку с надписью "C" или "C++" над полем ввода сообщения.


Jony Wocker, а как сделать проще без указателей?
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:46  [ТС] 11
а можете показать где именно паузу ставить , а то я ставил и всё равно после того как ввёл массив , всё закрывается
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 353
18.04.2010, 12:48 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
#include "stdafx.h"
#include<stdio.h>
#include <conio.h>
 
int main()
{
int A[3][3],i,j;
printf("vvedute elementu \n");
//ввод массива//
for(i=0;i<3;i++){
for(j=0;j<3;j++)
{
printf("A[%d][%d]=", i,j);
scanf("%d",&A[i][j]);}}
//сортировка массива//
int *t = (int*)A;
for( i = 0 ; i < 8; i++ ){
for( j = i+1 ; j < 9; j++){
if(t[j]<t[i]){
int tmp = t[i];
t[i]=t[j];
t[j] = tmp;
}
}
}
//вывод ввиде матрицы//
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d", A[i][j]);}
 
system("pause"); // Вот оно
 
}
1
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:54  [ТС] 13
теперь не компилируется
0
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 353
18.04.2010, 13:00 14
suv121, а, добавьте заголовок <stdlib.h>. И еще как-то странно у вас в конце выводится массив, добавьте пробелы и в конце внешнего цикла перенос строки
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 13:07  [ТС] 15
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
#include "stdafx.h"
#include<stdio.h>
#include <conio.h>
 
int main()
{
int A[3][3],i,j;
printf("vvedute elementu \n");
//ввод массива
for(i=0;i<3;i++){
for(j=0;j<3;j++)
{
    printf("A[%d][%d]=", i,j);
  scanf("%d",&A[i][j]);}
}
//сортировка массива
int *t = (int*)A;
for( i = 0 ; i < 8; i++ ){
for( j = i+1 ; j < 9; j++){
if(t[j]<t[i]){
int tmp = t[i];
t[i]=t[j];
t[j] = tmp;
}
}
}
//вывод ввиде матрицы//
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d ", A[i][j]);
printf("\n");} 
getch(); }
вот такой код теперь работает
помогите теперь написать вариант без указателей
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
18.04.2010, 13:24 16
Ставьте там вместо system("pause") getch();

Сорри, не угнался за вами)))

Добавлено через 15 минут
Вот без указателей:
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
#include <stdio.h>
#include <conio.h>
 
int main()
{
int A[3][3],i,j;
int temp[9]; // Âðåìåííûé ìàññèâ
int k = 0;   // Äîïîëíèòåëüíûé ñ÷¸ò÷èê
 
printf("vvedute elementu \n");
//ââîä ìàññèâà//
for(i=0;i<3;i++){
for(j=0;j<3;j++)
{
printf("A[%d][%d]=", i,j);
scanf("%d",&A[i][j]);}}
 
// Êîïèðîâàíèå èñõîäíîãî ìàññèâà âî âðåìåííûé
for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++, k++)
        temp[k] = A[i][j];
 
//ñîðòèðîâêà ìàññèâà//
for( i = 0 ; i < 8; i++ ){
for( j = i+1 ; j < 9; j++){
if(temp[j]<temp[i]){
int tmp = temp[i];
temp[i]=temp[j];
temp[j] = tmp;
}
}
}
 
// Êîïèðîâàíèå òåìïîâîãî ìàññèâà â èñõîäíûé
for (i = 0, k = 0; i < 3; i++)
    for (j = 0; j < 3; j++, k++)
        A[i][j] = temp[k];
 
//âûâîä ââèäå ìàòðèöû//
for(i=0;i<3;i++)
{
    for(j=0;j<3;j++)
        printf("%d ", A[i][j]);
    printf("\n");
}
 
system("pause"); // Âîò îíî
 
}
1
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 13:29  [ТС] 17
спасибо, кстати как раз у тебя в конце нужно систем заменить на гетч
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
18.04.2010, 13:30 18
suv121,
Ну я твой код взял и доделал))) Ничего не менял больше
0
18.04.2010, 13:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2010, 13:30
Помогаю со студенческими работами здесь

Сортировка двумерного массива
Задача: Написать код сортировки двумерного массива размерностью m*n. Переставить строки матрицы...

Сортировка двумерного массива...
Дано: одномерный массив А заполненный случайными числами одномерный массив В заполненный...

Сортировка двумерного массива
Дан двумерный массив, размерностью N на N. Надо взять отдельно каждую строку и каждый столбец,...

Сортировка двумерного массива
суть кода в сортировке двумерного массива по столбцам по возрастанию, использовал метод сортировки...


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

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