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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2010, 02:19   #1
amerhant
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 24
По умолчанию В матрице упорядочить строки по возрастанию максимальных элементов. Помогите найти ошибку.

В матрице упорядочить строки по возрастанию максимальных элементов.
Упорядочить методом бинарных вставок...
Помогите плиз найти ошибку строки дублируются и не до конца упорядочиваются...
amerhant вне форума Ответить с цитированием
Старый 05.01.2010, 02:21   #2
amerhant
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 24
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#define E 40
#define R 50
main () {
clrscr ();
randomize ();
    int a [E][R];
    int i,j;
    int P,Q;
    printf ("strok : ");
    scanf ("%d",&P);
    printf ("stolbow : ");
    scanf ("%d",&Q);

       for (i=0;i<P;i++)
       {
       printf("\n");
       for (j=0;j<Q;j++)
       {
       a[i][j]=random (20)-10;
       printf ("%3d  ",a[i][j]);
       }
       printf("\n");
       }
       printf("\n\n\n");

	int f,x,left,right,MAX;
	int result[E];
	int r[R];
	printf("Nahojdenye max v strokax\n\n");
for(i=0;i<P;i++){
	for(MAX = a[i][0], j = 1; j < Q; j++)
	{
	if(a[i][j] >MAX) MAX = a[i][j];
	}
	result[i]=MAX;
	printf("%d %d\n\n",i,result[i]);
	}
	float m;
for(i=1;i<P;i++){
    for(j=0;j<Q;j++){
    r[j]=a[i][j];}
    x = result[i];
    left = 0;
    right = i;
    while(left<right){
	m=(left+right)/2;
	if(result[m]<=x) left = m+1;
	else right = m;
    }
    for(f=i;f>right;f--) result[f] = result[f-1];
    result[right] = x;
     for(j=0;j<Q;j++){
    a[f][j]=a[f-1][j];
    a[right][j]=r[j];}
    }
printf("\n");
       for (j=0;j<P;j++)
       {
       printf("%d %d\n\n",j, result[j]);
       }
	 for (i=0;i<P;i++)
       {
       printf("\n");
       for (j=0;j<Q;j++)
       printf ("%3d  ", a[i][j]);
       }
       printf("\n");
getch ();
return 0;
}
amerhant вне форума Ответить с цитированием
Старый 12.01.2010, 13:38   #3
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

тебе поидее нужно исправить
Код:
    for(f=i;f>right;f--) result[f] = result[f-1];
    result[right] = x;
     for(j=0;j<Q;j++){
    a[f][j]=a[f-1][j];
    a[right][j]=r[j];}

на
Код:
		int temp;
		temp = result[i];
		for(f=i;f>right;f--)
		{
			result[f] = result[f-1];
		}
		result[right] = temp;
		for (j=0;j<Q;j++)
		{
			temp = a[i][j];
			for(f=i;f>right;f--)
			{
				a[f][j] = a[f-1][j];
			}
			a[right][j] = temp;
		}
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."
val_nnm вне форума Ответить с цитированием
Старый 16.01.2010, 19:39   #4
amerhant
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 24
По умолчанию

Спосибо большое!!
amerhant вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 8 07.12.2010 00:02
Корявое копирование строки. Помогите найти ошибку. GonZaleZ Общие вопросы C/C++ 14 02.12.2009 21:58
Строки. Помогите найти ошибку. 5nizza77 Помощь студентам 1 16.10.2009 16:10
Упорядочить по возрастанию элементы.. TemaTim Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 19:00