Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 86

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

09.03.2019, 16:30. Показов 4907. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Просьба перевести с паскаля на си/си++
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const
  n=5;
  m=5;
var
  i,j,k:integer;
  a:array[1..n,1..m] of integer;
begin
  k:=0;
  for i:=1 to n do
    begin
      for j:=1 to m do
        begin
          k:=(i-1)*m+j;
          a[i,j]:=k;
          write(a[i,j]:4);
        end;
      writeln;
    end;
  readln;
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.03.2019, 16:30
Ответы с готовыми решениями:

Поменять местами наибольшие элементы в верхней и нижней половинах матрицы
В матрице A( n- строк, m- столбцов; n- четное) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов...

Поменять местами элементы матрицы, расположенные в верхней и нижней четвертях
В квадратной матрице поменять местами элементы, расположенные в верхней и нижней четвертях, ограниченных главной и побочной диагоналями (за...

Поменять местами наибольшие элементы в верхней и нижней половинах матрицы (подпрограммы)
В матрице A( n- строк, m- столбцов; n- четное) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов...

12
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 86
09.03.2019, 16:59  [ТС]
Помогите мне разобраться
у меня выводит с 5 по
а нужно 1 по
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>
#include <math.h> 
#include <stdio.h>
#include <ctime>
#include <conio.h> 
#include <locale.h>
#define M 5
#define N 5
 
  using namespace std;
int main() {
  setlocale(LC_ALL, "Rus");
  int a[M][N];
  int i, j ; // M Ñòðîêà N ñòîëáåö i 
    int k=0;
  for(i = 0; i < M; ++i) 
  {
    for(j = 0; j < N; ++j)
     {
      k=(i+1)*M+j;
    a[i][j]=k;
          
    }
   
  }
 
  for(i = 0; i < M; ++i) {
    for(j = 0; j < N; ++j){
    
      printf("%5d", a[i][j]);
  }
    putchar('\n');
  }
 
  return 0;
}
0
 Аватар для Andrey B
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
09.03.2019, 17:24
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
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int n = 5;
    int m = 5;
    int i = 0, j = 0, k = 0;
    int** a = (int**)malloc(n*sizeof(int*));
    for (i = 0; i < n; ++i){
        a[i] = (int*)malloc(m*sizeof(int));
    }
 
    for (i = 0; i < n; i++){
        for (j = 0; j < m; j++){
            k = i*m + (j+1);
            a[i][j] = k;
        }
    }
 
    for (i = 0; i < n; i++){
        for (j = 0; j < n; j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
 
    for (i = 0; i < n; ++i){
        free(a[i]);
    }
    
    free(a);
    getchar();
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
09.03.2019, 17:39
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Задачи лучше не переводить с другого языка, а писать заново.
И практика, и код будет получше.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() {
    cons int n = 5;
    const int m = 5;
    int a[n][m];
    int* p=&a[0][0];
    for (int i = 1; i <= n*m; i++)
            *(p++) = i;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
           cout<<a[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}
0
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 86
09.03.2019, 20:29  [ТС]
Поменяйте местами элементы верхней и нижней половины массива
как это сделать чтобы получилось вот так чтобы получилась итоговая
Исходная матрица 5 × 5 Итоговая матрица 5 × 5

1 2 3 4 5 \\\\\\\\\\\\16 17 18 19 20

6 7 8 9 10 \\\\\\\\\\21 22 23 24 25

11 12 13 14 15 \\\\\\\11 12 13 14 15

16 17 18 19 20 \\\\\\\\\\1 2 3 4 5

21 22 23 24 25 \\\\\\\\\\6 7 8 9 10



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> 
#include <math.h> 
#include <stdio.h> 
#include <ctime> 
#include <conio.h> 
#include <locale.h> 
#define M 5 
#define N 5 
 
using namespace std; 
int main() { 
setlocale(LC_ALL, "Rus"); 
int a[M][N]; 
int i, j ; // M Ñòðîêà N ñòîëáåö i 
int k=0; 
for(i = 0; i < M; ++i) 
{ 
for(j = 0; j < N; ++j) 
{ 
k=1+i*M+j; 
a[i][j]=k; 
 
} 
 
} 
 
for(i = 0; i < M; ++i) { 
for(j = 0; j < N; ++j){ 
 
printf("%5d", a[i][j]); 
} 
putchar('\n'); 
} 
 
return 0; 
}
0
 Аватар для Andrey B
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
09.03.2019, 20:34
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void interchange(int **arr, int n, int i1, int i2) {
    for (int i = 0; i < n; i++) {
        int t = arr[i1][i];
        arr[i1][i] = arr[i2][i];
        arr[i2][i] = t;
    }
}
 
int main(){
    ...........
    interchange(a, n, 0, 3);
    interchange(a, n, 1, 4);
    return 0;
}
0
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 86
09.03.2019, 22:18  [ТС]
а как
0
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 86
09.03.2019, 23:28  [ТС]
Pascal
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
program matrix_59;
uses crt;
var
a:array[1..1000,1..1000] of integer;
m,n,i,j,k,temp,t1,t2,l:integer;
begin
clrscr;
       write('vvedite razmer matrixi ');
       writeln;
       readln(m,n);
 
       randomize;
       for i:=1 to m do
       for j:=1 to n do
       begin
            a[i,j]:=random(25);
       end;
 
       writeln ('Ishodnaya matrixa:');
       for i:=1 to m do
       begin
            for j:=1 to n do
            write (a[i,j]:3);
            writeln;
       end;
 
       writeln;
      k:=m div 2;
       if odd(m)then l:=m div 2+1
       else l:=m div 2;
       for i:=1 to k do
       for j:=1 to n do
        begin
         temp:=a[i,j];
         a[i,j]:=a[l+i,j];
         a[l+i,j]:=temp;
        end;
            t1:=t1+1;
            t2:=t2-1;
   
 
       writeln('rezultatiruyshaya matrixa:');
 
       for i:=1 to m do
       begin
            for j:=1 to n do
            write (a[i,j]:3);
            writeln;
       end;
readln;
end.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.03.2019, 23:32
Лучший ответ Сообщение было отмечено G_lion как решение

Решение

G_lion,
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, m;
    cout <<"n="; cin >>n;
    cout <<"m="; cin >>m;
    
      double **a = new double*[n]; 
    for (int i = 0; i < n; i++)
       a[i]=new double[m];
    
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++)
    {
    a[i][j]=rand()%9 + 1;
    cout <<a[i][j]<<" ";
    }
    cout <<"\n";
    }
    cout <<"\n";
    
    for (int i = 0; i < n/2; i++)
    if (n%2==0) swap (a[i],a[n/2+i]);
    else swap (a[i],a[n/2+1+i]);
    
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++) 
    cout <<a[i][j]<<" ";    
    cout <<"\n";
    }    
 
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
 
system("pause");
return 0;
}
1
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 86
09.03.2019, 23:40  [ТС]
Спасибо
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
10.03.2019, 03:11
Лучший ответ Сообщение было отмечено G_lion как решение

Решение

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
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main (void) {
    int a[1000][1000];
    int n, m, i, k;
 
    cout << "vvedite razmer matrixi " << endl;
    cin >> m >> n;                          // readln(m,n);
 
    srand((unsigned int)time(NULL)/2);      // randomize;
    cout << "Ishodnaya matrixa:" << endl;
    for (i=0; i<m; i++) {
        for (k=0; k<n; k++) {
            a[i][k] = rand() %25;
            cout << setw(3) << a[i][k];     // write (a[i,j]:3);
        }
        cout << endl;                       // writeln;
    }
 
    int t1, t2;
    for (t1=0, t2=m-1; t1<t2; t1++, t2--)
        for (k=0; k<n; k++)
            swap(a[t1][k], a[t2][k]);
 
    cout << endl << "rezultatiruyshaya matrixa:" << endl;
    for (i=0; i<m; i++) {
        for (k=0; k<n; k++)
            cout << setw(3) << a[i][k];
        cout << endl;
    }
 
    cin.get(); cin.get();                   // readln;
    return 0;
}
Миниатюры
Поменять местами элементы верхней и нижней половины массива  
1
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
10.03.2019, 07:45
G_lion, напишите исходную постановку задачи.
0
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 86
10.03.2019, 13:39  [ТС]
да я ужу разобрался

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
  k= M / 2;
  if (l!=M)
      l=M / 2+1;
  else
      l=M / 2;
  for(i = 0; i < M/2; ++i){
     for (j = 0;j<N; j++){
         temp= a[i][j];
         a[i][j]=a[l+i][j];
         a[l+i][j]=temp;
     }
  }
этот для перемещение строк верх и нижней строки

Добавлено через 4 часа 10 минут
подскажите как получить доступ к предпоследняя строке матрицы и измен элементы предпоследний строки на n-1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2019, 13:39
Помогаю со студенческими работами здесь

Поменять местами элементы первой половины массива с элементами второй половины
Сформировать массив А из 20 случайных целых чисел в диапазоне от минус 30 до 30. Напечатать его. Поменять местами 0 элемент массива с...

Поменять местами символы в массиве в нижней и верхней четверти
суть такова. есть код, который созддает массив случайных чисел заданного размера. диагонали равны 0. нужно просто поменять местами верхнюю...

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

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

Строки верхней половины массива поменять местами со строками нижней половины
Недавно начал изучать Java. Помогите с заданием пожалуйста. Нужно строки верхней половины массива поменять местами со строками...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru