Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2009, 19:01   #1
aurora_87
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 16
По умолчанию сортировка строк матрицы

В матрице расположить строки по возрастанию сумм их елементов.

Подскажите пожалуйста, правильно ли делать так: я нашла сумму элементов в каждой строке, вписала эти значения в последний столбец массива и сортировала строки по возрастанию этих сумм, но в одном случае сортировка происходит не до конца, когда ввожу, например
4 5 6 в результате получаю 4 5 6
7 8 9 1 2 3
1 2 3 7 8 9
Вот моя прога:
Код:
#include<stdio.h>
#include<conio.h>
#define N 10
#define M 10

void main()

{
char a[M][N];
int i,j,n,m,k,l,min,imin,sum;

clrscr();

printf("\n vvedite kol-vo strok:");
scanf("%d",&m);
printf("\n vvedite kol-vo stolbcov:");
scanf("%d",&n);
printf("\n vvedite matricy:\n");
for(i=0;i<m;i++)
  for(j=0;j<n;j++)
    scanf(" %d",&a[i][j]);


printf("\n");
sum=0;
for(i=0;i<m;i++)
  {
    for(j=0;j<n;j++)
      sum=sum+a[i][j];
    a[i][n]=sum;
    sum=0;
  }
printf("\n\n");
for(i=0;i<m;i++)
 { printf("\n");
  for(j=0;j<n+1;j++)
    printf(" %d",a[i][j]);
 }

printf("\n\n");

for(l=1;l<m;l++)
for(i=0;i<m-l;i++)
  for(j=0;j<n;j++)
     if (a[i][n]>a[i+1][n])
      {
      k=a[i][j];
      a[i][j]=a[i+1][j];
      a[i+1][j]=k;
      printf("+");
      }
     else printf("*");

printf("\n\n");

for(i=0;i<m;i++)
 { printf("\n");
  for(j=0;j<n;j++)
    printf(" %d",a[i][j]);
 }
}

Последний раз редактировалось MaTBeu; 28.03.2009 в 22:16.
aurora_87 вне форума Ответить с цитированием
Старый 28.03.2009, 19:07   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Нужно поменять местами две строчки:
Код:
for(l=1;l<m;l++)
for(i=0;i<m-l;i++)
if (a[i][n]>a[i+1][n])
for(j=0;j<n;j++)
{
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.04.2009, 11:09   #3
_grusha_
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 21
По умолчанию

А можно этот код переписать с динамическими массивами?
_grusha_ вне форума Ответить с цитированием
Старый 23.04.2009, 12:29   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А можно этот код переписать с динамическими массивами?
Так а в чем сложность-то?
Объявить как:
Код:
char **a;
после ввода m и n выделяем память:
Код:
a = new char*[m];
for(i=0;i<m;i++)
 a[i] = new char[n];
и в конце программы освобождаем:
Код:
for(i=0;i<m;i++)
 delete[] a[i];
delete[] a;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
замена строк матрицы Rom@shka Общие вопросы C/C++ 1 16.01.2009 15:47
Упорядочивание строк матрицы CodeError Помощь студентам 2 25.12.2008 19:42