Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.03.2009, 22:43
Новичок

Отправить личное сообщение для lavan Посмотреть профиль Найти все сообщения от lavan
 
Регистрация: 16.03.2009
Сообщений: 3

помогите разобраться с сортировкой
подскажите кто знает.я уже запарился.
надо сгенерировать квадратную матрицу n*n и сортировать ее в порядке возрастания.
у меня проблема в том,что цикл отвечающий за сортировку(сортирую прямым перебором.язык С)сортирует массив но он заменяет там цифры
т.е есть такой набор
8 6 9 5 0
получаю после сортировки
0 5 5 8 9
т.е 6 заменилась на 5 вместо исходной одной 5 и 6 стало две 5.из -за этого последняя строка матрици,вообще не сортируется.ПОДСКАЖИТЕ ЧТО ДЕЛАТЬ??Где ошибка???
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define M 5
#define N 5
int main(){
int m[M][N];
int a[M];
int i,j,buf,min,k;
printf("sgener mas\n");
randomize();
for(i=0;i<M;i++) {
printf("\n");
for(j=0;j<N;j++) {
m[i][j]=random(10);
printf("%3d",m[i][j]);
}
}

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

for(i=0;i<M*N-1;i++){ //sortiryem a[i]
min=i;
for(j=i+1;j<M*N;j++)
if(a[j]<a[min])
min=j;
buf=a[i];
a[i]=a[min];
a[min]=buf;
}
for(i=0;i<M;i++){ //teper prisvaivaem m[i][j]
for(j=0;j<N;j++){ //otsortir massiv a[i]
m[i][j]=a[i];
printf("\n otsort mas\n");
for(i=0;i<M;i++){
printf("\n");
for(j=0;j<N;j++) {
printf("%3d",m[i][j]);
}
}
}
}
getch();
return(0);
}
  #2  
Старый 20.03.2009, 08:09
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Отформатируйте код, трудно читать.
Сформулируйте, что именно означает сортировка квадратной матрицы

И объясните (а лучше сами разберитесь), что делает каждый кусок кода, например, этот:

for(i=0;i<M;i++){//prisvaivaem a[i]
printf("\n"); //znachenia m[i][j]
for(j=0;j<N;j++){
a[i]=m[i][j];
//printf("%d",a[i]);
}
}
  #3  
Старый 20.03.2009, 19:48
Новичок

Отправить личное сообщение для lavan Посмотреть профиль Найти все сообщения от lavan
 
Регистрация: 16.03.2009
Сообщений: 3

я не знаю как отсортировать массив m[i][j],поэтому присваиваю элементы принадлежащие этому массиву,массиву a[i].а дальше сортирую массив a[i].(есть недопонимание массивов,посоветоваться нескем,я заочник).отсортировать квадратную матрицу(в моем случае):
4 3 ________________1 2
2 1 после сортировки 3 4
а вообще основной вопрос,почему происходит подмен чисел??

Последний раз редактировалось lavan, 20.03.2009 в 22:32.
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
бинарный посик - помогите разобраться Димка Сортировка и поиск 12 06.01.2011 14:36
Помогите разобраться с хи-квадратом subdmitry Математические алгоритмы 2 11.03.2009 01:11
задача с быстрой сортировкой гость Сортировка и поиск 2 16.11.2008 21:09
Помогите разобраться с задачей Megov Задачи 2 07.10.2008 18:19
помогите разобраться Мёртвый Анархист Реализация, исходники, языки 13 23.01.2007 08:25