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

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

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

Преобразование матрицы - C++

08.11.2013, 01:44. Просмотров 294. Ответов 4
Метки нет (Все метки)

Дана матрица размера M × N. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке.
Не могу поменять местами max и min элементы с строке матрицы
#include <iostream.h>
#include <math.h>
int main ()
{ int n,m,a[100][100],i,j,max,min,temp;
cin>>n;
cin>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
{ max=a[i][1]; min=a[i][1];
for(j=1;j<=m;j++)
{if(a[i][j]>max)
max=a[i][j];
if(a[i][j]<min)
min=a[i][j];
}
cout<<"max="<<max<<" "<<"min="<<min<<endl;

temp=max;
max=min;
min=temp;
}
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{cout<<a[i][j]<<" ";}
cout<<endl;}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2013, 01:44     Преобразование матрицы
Посмотрите здесь:

C++ Преобразование матрицы nxm
C++ Преобразование квадратной матрицы
Преобразование матрицы C++
C++ Преобразование матрицы
C++ преобразование матрицы
C++ характеристика и преобразование матрицы
преобразование матрицы C++
Преобразование матрицы C++
C++ Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов)
C++ Преобразование двумерной матрицы
C++ Преобразование целочисленной матрицы
Выполнить преобразование матрицы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.11.2013, 01:49     Преобразование матрицы #2
Цитата Сообщение от Noka94 Посмотреть сообщение
Не могу поменять местами max и min элементы с строке матрицы
Код сами писали?
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
08.11.2013, 01:51     Преобразование матрицы #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int buf,max,min;
for(int i=0;i<n;i++)
{
 max=0;
 min=0;
 for(int j=1;j<m;j++)
 {
  if(a[i][max]<a[i][j]) max=j;
  if(a[i][min]>a[i][j]) min=j;
 }
 buf=a[i][max];
 a[i][max]=a[i][min];
 a[i][min]=buf;
}
Noka94
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 25
08.11.2013, 02:04  [ТС]     Преобразование матрицы #4
Цитата Сообщение от Мимино Посмотреть сообщение
Код сами писали?
да, сама
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.11.2013, 02:13     Преобразование матрицы #5
Цитата Сообщение от Noka94 Посмотреть сообщение
да, сама
Никому его не показывайте

Вот
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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int M = 10;
    const int N = 15;
    int matrix[M][N];
 
    cout << "Матрица:" << endl;
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            matrix[i][j] = 1 + rand() % 99;
            cout << setw(3) << matrix[i][j];
        }
 
        cout << endl;
    }
 
    int min = 0, max = 0;
 
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (matrix[i][j] < matrix[i][min])
                min = j;
            if (matrix[i][j] > matrix[i][max])
                max = j;
            if (j == N - 1)
            {
                matrix[i][min] ^= matrix[i][max];
                matrix[i][max] ^= matrix[i][min];
                matrix[i][min] ^= matrix[i][max];
            }
        }
    }
 
    cout << endl << "Преобразованная матрица:" << endl;
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
            cout << setw(3) << matrix[i][j];
        cout << endl;
    }
 
    system("pause");
    return 0;
}
Добавлено через 4 минуты
Только единственный момент. Смена переменных местами вот тут 100% вызовет вопросы
C++
1
2
3
matrix[i][min] ^= matrix[i][max];
                matrix[i][max] ^= matrix[i][min];
                matrix[i][min] ^= matrix[i][max];
Так можно поменять переменные местами без использования временной переменной для хранения. Чтобы преподаватель не цеплялся, можно почитать тут Алгоритм обмена при помощи исключающего ИЛИ
Если сможете ему это объяснить, 5-ка гарантирована (или какие там сейчас оценки максимальные ставят?).
Yandex
Объявления
08.11.2013, 02:13     Преобразование матрицы
Ответ Создать тему
Опции темы

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