4 / 4 / 4
Регистрация: 22.12.2012
Сообщений: 70
1

Заменить матрицу, чтобы первой стояла строка с max суммой элементов, а последней - с min суммой

03.05.2016, 16:25. Показов 1667. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
заменить заданную прямоугольную матрицу так, чтобы на первом месте стояла строка максимальной а на последнем месте строка с минимальной суммой элементов, сохранив все элементы исходной матрицы.
Что не так, поправьте пожалуйста.
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
int i, j, l, maxstr, sum, minstr, n, max, min, k, u;
int main()
{
int a[i][j], b[i][j];   
printf("kolichestvo strok matrici=");
scanf("%d",&n);
printf("kolichestvo stolbcov matrici=");
scanf("%d",&l);
for(i = 0; i < n; i++)
 {
   for (j = 0; j <l; j++)
  { 
    printf("Vvedite b[%d][%d]", i, j);
    scanf("%d",&b[i][j]); 
  }
 }   
 
for (i=0;i<n;i++)
{
     printf("\n");
    for (j=0;j<l;j++)
   {
   
    printf("%d  ",b[i][j]);
     
   } 
}
sum=0;
for (j=0;j<l;j++)
{
sum=sum+b[1][j];
max=sum;
maxstr=0;
min=sum;
minstr=0;
}
for (i=0;i<n;i++)
{ sum=0;
  for (j=0; j<l;j++)
    { sum=sum+b[i][j];
      if (max>sum)
      {
        max=sum;
        maxstr=i;
      }
      if (min<sum)
      {
        min=b[i][j];
        minstr=i;
      } 
    }
}
if(min!=max)
{
for (j=0;j<l;j++)
 {
   a[0][j]=b[maxstr][j];
 }
 for (i=0;i<n;i++)
 {
     k=0;   
    if (i!=maxstr) 
    {
     if (i!=minstr)
      {
        k++;
        for (j=0;j<l;j++)
            {
              b[k][j]=a[i][j];      
            }
      }
    }
}
 for (j=0;j<l;j++)
 {
 a[n][j]=b[minstr][j];
 }
}
else
{
printf(summa vseh stroc ravna);
}
 
for (i=0;i<n;i++)
{
     printf("\n");
    for (j=0;j<l;j++)
   {
   
    printf("%d  ",a[i][j]);
     
   } 
}
system("PAUSE");
return 0; 
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2016, 16:25
Ответы с готовыми решениями:

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

Переставить каждую пару строк матрицы таким образом, чтобы первой была строка с меньшей суммой элементов
Дана матрица размером 12х4. В прямоугольной матрице, имеющей чет-ное количество строк, переставить...

Если в матрице есть нули, то заменить их суммой max и min последнего столбца
Дана матрица порядка n. Найти в последнем столбце max и min. Если в матрице есть нули, то заменить...

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

4
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
03.05.2016, 16:42 2
Елизавета21, и как,компилируется?
0
4 / 4 / 4
Регистрация: 22.12.2012
Сообщений: 70
03.05.2016, 16:52  [ТС] 3
Если else убрать, то да, но результат не верен
0
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
04.05.2016, 05:54 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Елизавета21, хм,у меня тоже компилируется,а не должен,ибо нельзя инициализировать массив переменными если не используется динамическое выделение памяти. Возможно это потому что переменные объявлены как глобальные....для чего кстати вы объявили все переменные выше чем main?
anyway
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
#include <stdio.h>
#include <stdlib.h>
//заменить заданную прямоугольную матрицу так, чтобы на первом месте стояла
//строка максимальной а на последнем месте строка с минимальной суммой элементов,
// сохранив все элементы исходной матрицы.
int main()
{
    int i, j, l, maxstr, minstr, n, max = 0, min, sum, **p = NULL, *tmp;
    printf("kolichestvo strok matrici=");
    scanf("%d",&n);
    printf("kolichestvo stolbcov matrici=");
    scanf("%d",&l);
    p = malloc(n * sizeof(*p));
    for(i = 0; i < n; i++){
        p[i] = malloc(l * sizeof(p));
        for (j = 0; j <l; j++){
            printf("Vvedite b[%d][%d]", i, j);
            scanf("%d", &p[i][j]);
            if(i == 0)
                max += p[i][j];
        }
    }
    min = max;
    maxstr = minstr = 0;
    puts("Source matrix:");
    for (i = 0; i < n; i++){
        sum = 0;
        for (j = 0; j < l; j++){
            printf("%6d",p[i][j]);
            sum += p[i][j];
        }
        if(sum > max){
            max = sum;
            maxstr = i;
        }
        if(sum < min){
            min = sum;
            minstr = i;
        }
        printf("\n");
    }
    printf("maximum sum is row %d = %d minimum sum is row  %d = %d\n", maxstr, max, minstr, min);
    puts("Sorted matrix:");
    tmp = p[0];
    p[0] = p[maxstr];
    p[maxstr] = tmp;
    tmp = p[n - 1];
    p[n - 1] = p[minstr];
    p[minstr] = tmp;
    for(i = 0; i < n; i++){
        for(j = 0; j < l; j++)
            printf("%6d", p[i][j]);
        printf("\n");
    }
    for(i = 0; i < n; i++)
        free(p[i]);
    free(p);
    p = NULL;
return 0;
 
}
1
4 / 4 / 4
Регистрация: 22.12.2012
Сообщений: 70
06.05.2016, 20:56  [ТС] 5
Спасибо большое, извините, что по благодарила так поздно)

Добавлено через 30 минут
Цитата Сообщение от LFC Посмотреть сообщение
Для чего кстати вы объявили все переменные выше чем main?
Просто я чайник(
0
06.05.2016, 20:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2016, 20:56
Помогаю со студенческими работами здесь

Дана матрица размера N×M. Поменять местами столбцы матрицы с min и max суммой положительных элементов
Здравствуйте задали написать код, и я не понимаю как сделать, всё что смог написал, но дальше я не...

В матрице заменить все строки с наибольшей суммой элементов последней строкой.
В матрице заменить все строки с наибольшей суммой элементов последней строкой. begin for i:=1 to...

Заменить все элементы последнего столбца суммой элементов последней строки матрицы
1) дана матрица целых чисел размером 4х4.Заменить все элементы последнего столбца суммой элементов...

Заменить отрицательные значения элементов матрицы суммой элементов первой строки
Напишите программу формирования массива размером 5 x 5 с помощью датчика случайных чисел. Замените...


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

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

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