11 / 8 / 4
Регистрация: 10.03.2016
Сообщений: 121
1

Описать функцию, которая меняет местами максимальные элементы двух матриц

10.04.2016, 21:01. Показов 330. Ответов 0
Метки нет (Все метки)

Задача: Описать функцию, которая меняет местами максимальные элементы двух матриц. Дополнительно написать функцию поиска макс. элементов.

Проблема заключается в том, что если я ввожу две одинаковые матрицы, все работает, если ввожу с разными строками, но одинаковыми столбцами все работает, а вот если абсолютно разные матрицы, то не выводит результата. И почему то при выводе двух найденных максимумов (при разных матрицах) он выводит на экран только max1, а вместо max2 выдает мусор. Подскажите пж что не так

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <stdio.h>
#include <stdlib.h>
 
int Max(int*c,int n, int m)//функция поиска максимального элемента
{
  int i,j,max;
  max=*c;
  for(i=0; i<n; i++)
   {
    for(j=0; j<m; j++)
     {
       if(max < *(c+i*m+j))
        max=*(c+i*m+j);
     }
   }
   return max;
}
 
int Mesto(int *a, int n, int m, int *b, int k, int r)// функция перемены местами макс. элементов
{
 int i,j,max1,max2,x=0,y=0,i1,j1,i2,j2,t;
 max1=Max(a,n,m);
 max2=Max(b,k,r);
  for(i=0; i<n; i++)
   {
    for(j=0; j<m; j++)
     {
       if((*(a+i*m+j) == max1)&&(y==0))//y тут нужно для нахождение первого макс. элемента
        {i1=i;//фиксирую координаты
        j1=j;
        y++;}
     }
   }
  for(i=0; i<k; i++)
   {
    for(j=0; j<r; j++)
     {
        if((*(b+i*m+j) == max2)&&(x==0))//х для того же, что и y
        {i2=i;
        j2=j;
        x++;}
     }
   }
   t = *(a+i1*m+j1);//меняю 2 найденных макс элемента местами
   *(a+i1*m+j1) = *(b+i2*m+j2);
   *(b+i2*m+j2) = t;
   printf("\n");
  for(i=0; i<n; i++)
   {
    for(j=0; j<m; j++)
     {
         printf("%5d", *(a+i*m+j));
     }
     printf("\n");
   }
   printf("\n");
  for(i=0; i<k; i++)
   {
    for(j=0; j<r; j++)
     {
         printf("%5d", *(b+i*m+j));
     }
     printf("\n");
   }
   return 0;
}
 
 
int main() {
  int *a,*b;
  int i, j;
  int m,n,k,r;
  printf("Vvedite kolichestvo strok massiva A: ");
  scanf("%d", &n);
  printf("Vvedite kolichestvo stolbcov massiva A: ");
  scanf("%d", &m);
  printf("Vvedite kolichestvo strok massiva B: ");
  scanf("%d", &k);
  printf("Vvedite kolichestvo stolbcov massiva B :");
  scanf("%d", &r);
  a = (int*) malloc(n*m*sizeof(int));
  b = (int*) malloc(k*r*sizeof(int));
  for(i=0; i<n; i++)
   {
    for(j=0; j<m; j++)
     {
       *(a+i*m+j)=rand()%100;
     }
   }
  for(i=0; i<k; i++)
   {
    for(j=0; j<r; j++)
     {
       *(b+i*m+j)=rand()%100;
     }
   }
  for(i=0; i<n; i++)
   {
    for(j=0; j<m; j++)
     {
         printf("%5d",*(a+i*m+j));
     }
     printf("\n");
   }
   printf("\n");
  for(i=0; i<k; i++)
   {
    for(j=0; j<r; j++)
     {
         printf("%5d", *(b+i*m+j));
     }
     printf("\n");
   }
  Mesto(a,n,m,b,k,r);
  return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2016, 21:01
Ответы с готовыми решениями:

Описать функцию, меняющую местами максимальные элементы двух матриц произвольного порядка
После вывода на экран &quot;repl&quot; программа вылетает. Объясните, пожалуйста, почему? #include...

Массив: Описать фукцию swap(A,B) которая меняет местами максимальные элементы мтариц А и В
Есть код на С++, который писался в Borland 3.1 C++ В нем как я поняла очень много ошибок....

Массив: Описать функцию swap(A,B), меняющую местами максимальные элементы матриц А и В.
Надо исправить программу чтобы заработала. У самой уже ничего не получается=(( Описать функцию...

Описать функцию которая меняет местами значения двух параметров
Описать функцию которая меняет местами значения двух параметров. Используя эту функция поменять...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2016, 21:01
Помогаю со студенческими работами здесь

Описать процедуру swap(A,B), меняющую местами максимальные элементы матриц А и В
const n=...;{целые константы&gt;1} type матрица= array of real; Описать процедуру swap(A,B),...

Описать процедуру swap (A,B) меняющую местами максимальные элементы матриц A и B.
пожалуйста, решите. я дуб в паскале! 1.В радиоателье хранятся квитанции о сданной в ремонт...

Поменять местами максимальные элементы двух матриц
Даны матрицы A и В размерностью NxM, элементы которых вводятся с клавиатуры. Нужно найти...

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

Написать функцию, которая меняет местами значения двух целых
Нужен рабочий код по решению задачи в С++ : «Напишите функцию которая меняет местами значения двух...

Написать функцию, которая меняет местами элементы с заданными номерами
lst = def swap_elemets(lst, x , y): xt, yt = lst, lst lst, lst = yt, xt ...


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

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

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