45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 83
1

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

09.03.2019, 16:30. Показов 4204. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2019, 16:30
Ответы с готовыми решениями:

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

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

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

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

12
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 83
09.03.2019, 16:59  [ТС] 2
Помогите мне разобраться
у меня выводит с 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
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
09.03.2019, 17:24 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
#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
Модератор
Эксперт С++
12117 / 9785 / 5913
Регистрация: 18.12.2011
Сообщений: 26,255
09.03.2019, 17:39 4
Лучший ответ Сообщение было отмечено 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
Сообщений: 83
09.03.2019, 20:29  [ТС] 5
Поменяйте местами элементы верхней и нижней половины массива
как это сделать чтобы получилось вот так чтобы получилась итоговая
Исходная матрица 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
170 / 122 / 61
Регистрация: 06.02.2015
Сообщений: 300
09.03.2019, 20:34 6
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
Сообщений: 83
09.03.2019, 22:18  [ТС] 7
а как
0
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 83
09.03.2019, 23:28  [ТС] 8
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
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
09.03.2019, 23:32 9
Лучший ответ Сообщение было отмечено 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
Сообщений: 83
09.03.2019, 23:40  [ТС] 10
Спасибо
0
1686 / 1011 / 656
Регистрация: 25.04.2016
Сообщений: 2,861
10.03.2019, 03:11 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
Модератор
Эксперт С++
12117 / 9785 / 5913
Регистрация: 18.12.2011
Сообщений: 26,255
10.03.2019, 07:45 12
G_lion, напишите исходную постановку задачи.
0
45 / 2 / 1
Регистрация: 19.08.2017
Сообщений: 83
10.03.2019, 13:39  [ТС] 13
да я ужу разобрался

Добавлено через 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2019, 13:39
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru