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

Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Olesya9
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 3
16.01.2014, 19:40     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку #1
Не понимаю массивы. Помогите,пожалуйста, написать программу,меняющую местами в произвольной квадратной матрице столбец, содержащий минимальный элемент и строку,содержащую максимальный элемент матрицы. Написать функции:
-заполнения двумерного массива случайными числами из диапазона [-200;+200] ;
-вывода двумерного массива;
-поиска индексов минимального и максимального элемента матрицы;
-обмена значениями элементов произвольного столбца и произвольной строки квадратной матрицы.
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 19:40     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку
Посмотрите здесь:

C++ Дана матрица размера M × N. Продублировать столбец матрицы, содержащий ее минимальный элемент.
C++ Поменять местами строку и столбец в матрице
Поменять местами столбцы матрицы: столбец, содержащий максимальный элемент матрицы, и столбец, содержащий минимальный элемент матрицы. C++
C++ Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным
C++ Написать программу, меняющую местами в произвольной квадратной матрице столбец
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
16.01.2014, 19:47     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку #2
Olesya9, вот, пожалуйста:
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
/*
ÏðîãðГ*ììГ* âûïîëГ*ГїГҐГІ ñëåäóþùåå:
1) ñîçäГ*ВёГІ äâóìåðГ*ûé Г¬Г*Г±Г±ГЁГў 10Гµ10;
2) Г§Г*ïîëГ*ГїГҐГІ ГҐГЈГ® ñëó÷Г*Г©Г*ûìè Г·ГЁГ±Г«Г*ìè ГЁГ§ äèГ*ГЇГ*çîГ*Г* [-200;200];
3) ГЁГ№ГҐГІ ìèГ*ГЁГ¬Г*ëüГ*ûé ГЁ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûé ýëåìåГ*ГІГ» Г¬Г*Г±Г±ГЁГўГ*;
4) ìåГ*ГїГҐГІ ìåñòГ*ìè ñòîëáåö, ñîäåðæГ*Г№ГЁГ© ìèГ*ГЁГ¬Г*ëüГ*ûé ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ*, Г±Г® ñòðîêîé, ñîäåðæГ*Г№ГҐГ© Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûé ýëåìåГ*ГІ Г¬Г*Г±Г±ГЁГўГ*.
*/
#include <iostream>
#include <iomanip>
#include <cstdlib>
 
using namespace std;
//////////ÃëîáГ*ëüГ*ûå ïåðåìåГ*Г*ûå, ñòðóêòóðû, ГЄГ«Г*Г±Г±Г»////////
const int N=10;
int mas[N][N];
struct element {
    int x;
    int y;
};
//////////Ïðîòîòèïû ГґГіГ*êöèé///////////////////////////////
void zapolnenie_massiva();
void vivod_massiva();
void poisk_elementov(element &min, element &max);
void obmen_strokami(int &a, int &b);
//////////////////////////////////////////////////////////
int main()
{
    element min, max;               // ñòðóêòóðГ*ûå ïåðåìåГ*Г*ûå, õðГ*Г*ГїГ№ГЁГҐ ГЁГ*äåêñû
                                    // ìèГ*ГЁГ¬Г*ëüГ*îãî ГЁ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*
    zapolnenie_massiva();
    vivod_massiva();
    poisk_elementov(min, max);
    
    cout << endl;
    cout << "Min: a[" << min.x+1 << "][" << min.y+1 << "]" << endl;
    cout << "Max: a[" << max.x+1 << "][" << max.y+1 << "]" << endl;
    cout << endl;   
    
    obmen_strokami(min.y, max.x);
    vivod_massiva();
        
    return 0;
}
//////////////////////////////////////////////////////////
void zapolnenie_massiva() {
    for (int i=0; i<N; i++) {
        for (int j=0; j<N; j++) {
            mas[i][j] = rand()%401 - 200;
        }       
    }
}
void vivod_massiva(){
    for (int i=0; i<N; i++) {
        for (int j=0; j<N; j++) {
            cout << setw(6) << mas[i][j];
        }
        cout << endl;
    }
}
void poisk_elementov(element &min, element &max) {
    int MIN=200;
    int MAX=-200;
    for (int i=0; i<N; i++) {
        for (int j=0; j<N; j++) {
            if (MIN > mas[i][j]) {
                MIN = mas[i][j];
                min.x=i;
                min.y=j;
            }
            if (MAX < mas[i][j]) {
                MAX = mas[i][j];
                max.x=i;
                max.y=j;
            }
        }
    }
}
void obmen_strokami(int &a, int &b) {
    int empty;
    for (int i=0; i<N; i++){
        empty=mas[i][a];
        mas[i][a]=mas[b][i];
        mas[b][i]=empty;
    }
}
В следующий раз постарайтесь пользоваться поиском
Olesya9
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 3
16.01.2014, 20:00  [ТС]     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку #3
Спасибо. У меня парень с этой программой разобраться не может, а мне её сдавать в универе завтра надо, а результат не выдаётся или ошибки появляются.

Добавлено через 6 минут
а куда там нужно _getch() поставить чтоб видеть результат? Или как посмотреть что он всё таки поменял строку со столбцом, а потом уже закрыть консоль?
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 202
16.01.2014, 20:03     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку #4
getch(); вставь перед последней }
можно и system("pause");
выбирай
Olesya9
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 3
16.01.2014, 20:11  [ТС]     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку #5
Ошибку выдаёт. Может другую команду надо типа паузы? Или как-то надо getch заранее объявить?

Добавлено через 5 минут
Спасибо. Вроде работает. Тему как закрыть?
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
16.01.2014, 20:12     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку #6
Olesya9, Еще как вариант
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
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<iomanip>
 
void SetRandom(int **mas,int N)
{
    srand(time(NULL));
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
            mas[i][j] =  rand() % 10;
}
 
void Display(int **mas,int N)
{
    for(int i=0;i<N;i++,std::cout<<std::endl)
        for(int j=0;j<N;j++)
            std::cout<<std::setw(5)<<mas[i][j];
}
 
void FindIndex(int **mas,int N,int &posJMin,int &posIMax)
{
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
    {
        if(mas[i][j]>mas[posIMax][j])
            posIMax = i;
        if(mas[i][j]<mas[i][posJMin])
            posJMin = j;
    }
}
 
void SWAP(int **mas,int N,int &posJMin,int &posIMax)
{
    int temp;
    for(int i=0;i<N;i++)
    {
        temp = mas[i][posJMin];
        mas[i][posJMin] = mas[posIMax][i];
        mas[posIMax][i] = temp;
    }
}
 
int main()
{
    int N;
    std::cout<<"Enter N:";
    std::cin>>N;
    int **mas = new int *[N];
    for(int i=0;i<N;i++)
        mas[i] = new int[N];
 
    std::cout<<"Array:\n";
    SetRandom(mas,N);
    Display(mas,N);
    int posMin = 0,posMax = 0;
    FindIndex(mas,N,posMin,posMax);
    SWAP(mas,N,posMin,posMax);
    std::cout<<" \nNew Array:\n";
    Display(mas,N);
 
    system("pause");
    return 0;
}
Yandex
Объявления
16.01.2014, 20:12     Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку
Ответ Создать тему
Опции темы

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