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

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

Войти
Регистрация
Восстановить пароль
 
retuse
0 / 0 / 0
Регистрация: 20.12.2013
Сообщений: 5
#1

Двумерный массив (матрица) - C++

20.12.2013, 18:06. Просмотров 460. Ответов 4
Метки нет (Все метки)

Здравствуйте, ребята. В программе нужно поменять местами максимальный и минимальный элементы в каждом столбце матрицы. Основной код я написал, остался только третий case, с которым я никак не могу разобраться.
Подскажите, пожалуйста, как это можно реализовать (простым способом, без использования библиотек, скриптов, функции "swap" и прочего)
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
#include "stdafx.h"
#include <clocale>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
 
    srand(time(NULL));
 
    int **a = NULL;
    int height = 0;
    int width = 0;
    int menu = 0;
    int done = 0;
 
    printf("Произвольные матрицы.\n");
    printf("Поменять местами максимальный и минимальный элементы в каждом столбце.\n");
    printf("\nВведите размерность матрицы\n");
    printf("\nШирина: ");
    scanf("%d", &width);
    printf("Высота: ");
    scanf("%d", &height);
    printf("\n");
 
    a = new int*[height];
    for (int i = 0; i < height; i = i + 1)
    {
        a[i] = new int[width];
    }
 
    do
    {
        printf("1. Ввести элементы матрицы с клавиатуры\n");
        printf("2. Заполнить элементы матрицы случайными значениями\n");
        printf("3. Обработать матрицу\n");
        printf("4. Вывести обработанную матрицу на экран\n");
        printf("---------------------\n");
        printf("0. Выход\n\n");
        
        scanf("%d", &menu);
 
        switch(menu)
        {
        case 1:
            printf("\n");
            printf("Введите элементы: \n");
            for (int i = 0; i < height; i = i + 1)
            {
                for (int j = 0; j < width; j = j + 1)
                {
                    printf("Элемент %d строки, %d столбца ", i+1, j+1);
                    scanf("%d", &a[i][j]);
                }
            }
            printf("\nВаша матрица:\n");
            for (int i = 0; i < height; i = i + 1)
            {
                for (int j = 0; j < width; j = j + 1)
                {
                    printf("%d ", a[i][j]);
                }
                printf("\n");
            }
            printf("\n");
 
            break;
        case 2:
            for (int i = 0; i < height; i = i + 1)
            {
                for (int j = 0; j < width; j = j + 1)
                {
                    a[i][j] = rand() % 10;
                }
            }
            
            printf("\nМатрица заполнена случайными элементами:\n");
            for (int i = 0; i < height; i = i + 1)
            {
                for (int j = 0; j < width; j = j + 1)
                {
                    printf("%d ", a[i][j]);
                }
                printf("\n");
            }
            printf("\n");
 
            break;
        case 3:
 
            printf("Матрица успешно обработана.\n");
 
            break;
        case 4:
            printf("Обработанная матрица:\n");
 
            for (int i = 0; i < height; i = i + 1)
            {
                for (int j = 0; j < width; j = j + 1)
                {
                    printf("%d ", a[i][j]);
                }
                printf("\n");
            }
            printf("\n");
 
            break;
        case 0:
            break;
        default:
            break;
        }
    } while (menu != 0);
 
 
 
    for (int i = 0; i < height; i = i + 1)
    {
        delete [] a[i];
    }
 
    delete [] a;
 
    getchar();
 
    return 0;
}
Хотя можно и со "swap", только объясните мне, нубу, как эта функция работает и какая для нее библиотека нужна -_-
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 18:06     Двумерный массив (матрица)
Посмотрите здесь:

двумерный массив ( матрица ) - C++
Для заданной матрицы размером 8х8. Найдите: 1). Такие j i k, когда j -я строка матрицы совпадает из k -м столбиком 2). Сумму элементов...

Двумерный массив (матрица) - C++
Задание: Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести...

Двумерный массив-матрица - C++
помогите,пожалуйста. Нужно составить программу, которая выводит на экран квадратную матрицу A размером n*n . Входные данные: n – порядок...

Двумерный массив(квадратная матрица) - C++
Мне нужна помощь в выполнении следующего задания:дано двумерный массив(квадратная матрица,которую должен вводить пользователь-тоесть...

Двумерный массив (квадратная матрица) - C++ - C++
Помогите Вот задача 6. В квадратной матрице найти С6х6 сумму элементов, находящихся по периметру.

Двумерный массив: целочисленная квадратная матрица - C++
Вот ещё программка нужна, теперь уже массив двумерный

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
2595 / 1817 / 260
Регистрация: 08.06.2007
Сообщений: 6,964
Записей в блоге: 4
20.12.2013, 18:17     Двумерный массив (матрица) #2
Цитата Сообщение от retuse Посмотреть сообщение
swap
по английски это поменать местами. То есть вместо нее можно написать три строчки:
C++
1
2
3
temp=a;
a=b;
b=temp;
ПерС
371 / 287 / 89
Регистрация: 05.11.2013
Сообщений: 820
Записей в блоге: 5
Завершенные тесты: 1
20.12.2013, 18:18     Двумерный массив (матрица) #3
C++
1
2
3
4
5
6
7
8
for (int j=0; j< width; j++) {
 int max=a[0][j],imax=0,min=a[0][j],imin=0;
 for (int i=1; i< height; i++) {
  if (a[i][j]<min) { min=a[i][j]; imin=i; }
  if (a[i][j]>max) { max=a[i][j]; imax=i; }
 }
 a[imin][j]=max; a[imax][j]=min;
}
ZeR_0
117 / 109 / 37
Регистрация: 30.01.2013
Сообщений: 297
20.12.2013, 18:38     Двумерный массив (матрица) #4
1) Взяли строку.
2) Нашли min и max
C++
1
2
3
4
5
6
7
8
9
10
int min,max; //будем хранить здесь номера столбцов
for(int i = 0; i < n; i++){
    min = 0; max = 0;
    for(int j = 0; j < m; j++){
        if(array[i][j] < array[i][min])
           min = j;
        if(array[i][j] > array[i][max])
           max = j;
    }
}
3) Поменяли местами
C++
1
2
3
buf = array[i][min];
array[i][min] = array[i][max];
array[i][max] = buf;
4) Перешли к следующей строке

2+3 как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int buf;
int min,max; //будем хранить здесь номера столбцов
for(int i = 0; i < n; i++){
    min = 0; max = 0;
    for(int j = 0; j < m; j++){
        if(array[i][j] < array[i][min])
           min = j;
        if(array[i][j] > array[i][max])
           max = j;
    }
    buf = array[i][min];
    array[i][min] = array[i][max];
    array[i][max] = buf;
}
Добавлено через 17 минут
Цитата Сообщение от retuse Посмотреть сообщение
Хотя можно и со "swap", только объясните мне, нубу, как эта функция работает и какая для нее библиотека нужна -_-
swap()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2013, 20:33     Двумерный массив (матрица)
Еще ссылки по теме:

Класс матрица, описывающий двумерный массив - C++
Здравствуйте. Хочу разобраться и создать класс. Имеется код, но мне он кажется слишком сложным, как можно упростить его для лучшего...

Матрица (двумерный массив). Преобразовать элементы построчно - C++
Ребят,всем добрый вечер ! Очень и очень срочно нужна помощь,вообще не пойму как делать ...помогите пжл Дано такое задание : Каждый...

Задан массив и матрица, получить другой массив по правилу - C++
Здравствуйте,Помогите решить пожалуйста:swoon: Буду очень благодарен) Задан массив B=\left и матрица ...

Двумерный массив C++ - C++
В матрице удалить номера строк с совпадающими первыми элементами, но не совпадающими остальными,вывести матрицу после резекции.


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

Или воспользуйтесь поиском по форуму:
retuse
0 / 0 / 0
Регистрация: 20.12.2013
Сообщений: 5
20.12.2013, 20:33  [ТС]     Двумерный массив (матрица) #5
Ребята, спасибо вам всем за помощь! Теперь разобрался.
Yandex
Объявления
20.12.2013, 20:33     Двумерный массив (матрица)
Ответ Создать тему
Опции темы

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