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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
#1

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

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

помоги отсортировать двумерный массив как в примере
пример: 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
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;
}
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 11:46  [ТС]     сортировка двумерного массива #3
спасибо , но можно ещё вариант без указателей
и что делается на 16 строчке ????
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
18.04.2010, 12:22     сортировка двумерного массива #4
suv121, в 16 строчке создается указатель на матрицу, как на одномерный массив. И больше указателей явно нигде не используется.
suv121
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]);}}
а что у меня не так ???? после того как я ввожу массив , программа закрывается
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
18.04.2010, 12:33     сортировка двумерного массива #6
suv121, нужно остановить выполнение, используя, например, system("pause") или getch(). Да, и пользуйтесь тегами выделения кода...
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:38  [ТС]     сортировка двумерного массива #7
а как тегами пользоваться для выделения???
и как именно остановить выполнение???
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
18.04.2010, 12:39     сортировка двумерного массива #8
Зачем вы используете указатели?
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:42  [ТС]     сортировка двумерного массива #9
мне так подсказали , а как без указателей???
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
18.04.2010, 12:43     сортировка двумерного массива #10
suv121, остановить выполнение, поставив перед закрывающей скобкой system("pause"); или getch();. Для того, чтобы выделить код, нажмите на кнопку с надписью "C" или "C++" над полем ввода сообщения.


Jony Wocker, а как сделать проще без указателей?
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:46  [ТС]     сортировка двумерного массива #11
а можете показать где именно паузу ставить , а то я ставил и всё равно после того как ввёл массив , всё закрывается
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
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"); // Вот оно
 
}
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 12:54  [ТС]     сортировка двумерного массива #13
теперь не компилируется
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
18.04.2010, 13:00     сортировка двумерного массива #14
suv121, а, добавьте заголовок <stdlib.h>. И еще как-то странно у вас в конце выводится массив, добавьте пробелы и в конце внешнего цикла перенос строки
suv121
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(); }
вот такой код теперь работает
помогите теперь написать вариант без указателей
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
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"); // Âîò Г®Г*Г®
 
}
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
18.04.2010, 13:29  [ТС]     сортировка двумерного массива #17
спасибо, кстати как раз у тебя в конце нужно систем заменить на гетч
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2010, 13:30     сортировка двумерного массива
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.04.2010, 13:30     сортировка двумерного массива #18
suv121,
Ну я твой код взял и доделал))) Ничего не менял больше
Yandex
Объявления
18.04.2010, 13:30     сортировка двумерного массива
Ответ Создать тему
Опции темы

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