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

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

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

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

20.12.2013, 18:06. Просмотров 467. Ответов 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", только объясните мне, нубу, как эта функция работает и какая для нее библиотека нужна -_-
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 18:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двумерный массив (матрица) (C++):

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

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

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

Одномерный и двумерный массив(матрица) - C++
1.Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все положительные элементы, а в конец массива - все...

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

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

4
palva
2630 / 1857 / 268
Регистрация: 08.06.2007
Сообщений: 7,104
Записей в блоге: 4
20.12.2013, 18:17 #2
Цитата Сообщение от retuse Посмотреть сообщение
swap
по английски это поменать местами. То есть вместо нее можно написать три строчки:
C++
1
2
3
temp=a;
a=b;
b=temp;
1
ПерС
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;
}
1
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()
1
retuse
0 / 0 / 0
Регистрация: 20.12.2013
Сообщений: 5
20.12.2013, 20:33  [ТС] #5
Ребята, спасибо вам всем за помощь! Теперь разобрался.
0
20.12.2013, 20:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2013, 20:33
Привет! Вот еще темы с ответами:

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

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

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

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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