Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
romamarynysh
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 11
1

Поменять местами верхнюю и нижнюю половины матрицы

11.09.2015, 22:42. Просмотров 1209. Ответов 6
Метки нет (Все метки)

написать программы по своим вариантам, которые реализуют алгоритм работы с прямоугольными или квадратными матрицами с помощью двухмерных массивов.

Реализовать алгоритм преобразования матрицы размера nхm , меняя местами верхнюю и нижнюю половины матрицы . Значение n и m определяются пользователем ( n- четное число).

Помогите с решением пожалуйста)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2015, 22:42
Ответы с готовыми решениями:

Поменять местами верхнюю и нижнюю половины матрицы.
Дана матрица размера M × N (M — четное число). Поменять местами верхнюю и...

Поменять местами левую верхнюю и правую нижнюю четверти матрицы - С и C++
Добрый вечер. Я новичок в программировании и не могу понять, как нужно делать...

Поменять местами левую верхнюю и правую нижнюю четверти матрицы (с указателями)
есть задача Дана матрица размера M × N (M и N — четные числа). Поменять...

Столбцы левой половины матрицы поменять местами со столбцами правой половины
Написать программу с выделением памяти для динамического массива с рандомными...

Поменять местами левую и правую половины матрицы
Помогите с матрицей плс Matrix56. Дана матрица размера M × N (N — четное...

6
nworm
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 180
12.09.2015, 01:15 2
Надо воспользоваться циклом for.
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
#include <iostream.h>
#include <conio.h>
 
int main()
{
 double t,a[100][100];
 int  i,j,n,m;
 
 cout<<"Enter n ";
 cin>>n;
 cout<<"Enter m ";
 cin>>m;
 cout<<"Enter matrix\n\r";
 for(i=0; i<=n-1; i++)
  for(j=0; j<=m-1; j++)
   {
    cout<<"Enter a["<<i<<"]"<<"["<<j<<"] ";
    cin>>a[i][j];
   }
 for(i=0; i<=n-1; i++)
   {
    for(j=0; j<=m-1; j++)
     cout<<a[i][j]<<" ";
    cout<<"\n\r";
   }
 
 for(i=0; i<=n-1; i++)
  for(j=i; j<=m-1; j++)
   {
    t = a[i][j];
    a[i][j] = a[j][i];
    a[j][i] = t;
   }
 for(i=0; i<=m-1; i++)
   {
    for(j=0; j<=n-1; j++)
     cout<<a[i][j]<<" ";
    cout<<"\n\r";
   }
 getch();
 return 0;
}
0
Bespridelschic
Eternal junior
253 / 223 / 109
Регистрация: 31.07.2013
Сообщений: 991
Завершенные тесты: 10
12.09.2015, 05:47 3
Решение с проверкой четности количества строк, использованы указатели:
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
#include <iostream>
#include <iomanip>  // Заголовочный файл для форматирования расположения элементов матрицы setw()
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    int n, m, i, j, temp;
    cout << "Введите необходимое количество строк, количество строк должно быть четным: ";
    cin >> n;
    if (n % 2 != 0){ // Проверка на четность строк
        cout << "Стока должна быть четно!\n";
        system("Pause");
        return 0;
    }
    cout << "Введите необходимое количество столбцов: ";
    cin >> m;
    int **a = new int *[n];
    for (i = 0; i < n; i++)
        a[i] = new int[m];
    cout << "Введите матрицу:\n";
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++){
            cout << "a[" << i + 1 << "." << j + 1 << "]: ";
            cin >> a[i][j];
        }
    for (i = 0; i < n/2; i++)
        for (j = 0; j < m; j++){
            temp = a[i][j];
            a[i][j] = a[n / 2 + i][j];
            a[n / 2 + i][j] = temp;
        }
    for (i = 0; i < n; i++){
        for (j = 0; j < m; j++){
            cout << setw(3) << a[i][j];
        }
        cout << endl << endl;
    }
    system("Pause");
    return 0;
}
0
romamarynysh
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 11
12.09.2015, 16:06  [ТС] 4
Есть задание!
написать программы по своим вариантам, которые реализуют алгоритм работы с прямоугольными или квадратными матрицами с помощью двухмерных массивов.

Реализовать алгоритм преобразования матрицы размера nхm , меняя местами верхнюю и нижнюю половины матрицы . Значение n и m определяются пользователем ( n- четное число).

Написал такой код , нужно лишь добавить код чтобі местами поменять половины
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
#include <iostream>
 
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    int n, m, i, j;
    cout << "Ââåäèòå Г*åîáõîäèìîå êîëè÷åñòâî ñòðîê, êîëè÷åñòâî ñòðîê äîëæГ*Г® áûòü Г·ГҐГІГ*ûì: ";
    cin >> n;
    if (n % 2 != 0){ // ÏðîâåðêГ* Г*Г* Г·ГҐГІГ*îñòü ñòðîê
        cout << "ГЋГёГЁГЎГЄГ*!\n";
        system("Pause");
        return 0;
    }
    cout << "Ââåäèòå Г*åîáõîäèìîå êîëè÷åñòâî ñòîëáöîâ: ";
    cin >> m;
    int **a = new int *[n];
    for (i = 0; i < n; i++)
        a[i] = new int[m];
    cout << "Ââåäèòå Г¬Г*òðèöó:\n";
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++){
            cout << "a[" << i << "." << j << "]: ";
            cin >> a[i][j];
        }
        for (i = 0; i < n; i++){
        for (j = 0; j < m; j++)
        cout <<a[i][j];
        cout<< endl;}
        
 
    
    
    system("Pause");
    return 0;
}
0
Bespridelschic
Eternal junior
253 / 223 / 109
Регистрация: 31.07.2013
Сообщений: 991
Завершенные тесты: 10
12.09.2015, 17:49 5
В моём коде использован следующий алгоритм:
C++
1
2
3
4
5
6
for (i = 0; i < n/2; i++)
        for (j = 0; j < m; j++){
            temp = a[i][j];
            a[i][j] = a[n / 2 + i][j];
            a[n / 2 + i][j] = temp;
        }
Не забудьте объявить переменную temp
0
nmcf
6398 / 5661 / 2580
Регистрация: 14.04.2014
Сообщений: 23,942
12.09.2015, 18:15 6
Лучший ответ Сообщение было отмечено romamarynysh как решение

Решение

C++
1
2
3
for (i = 0; i < n/2; i++)
        for (j = 0; j < m; j++)
            std::swap(a[i][j], a[n / 2 + i][j]);
2
romamarynysh
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 11
12.09.2015, 19:37  [ТС] 7
Спасибо вам большое! ваш вариант самый легкий и полезный.
0
12.09.2015, 19:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2015, 19:37

Столбцы левой половины массива поменять местами со столбцами правой половины
Дан двумерный массив из четного числа столбцов. Столбцы левой половины массива...

Отобразить верхнюю половину матрицы на нижнюю зеркально симметрично
Заполнить матрицу случайными числами. Отобразить верхнюю половину матрицы на...

Поменять местами 2 половины строки // С++
Всем привет. Visual C++. Задание: На входе строка. Необходимо разделить её...


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

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

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