Задача: сортировка строк матрицы методом обмена

  • Автор темы AquaGen4uk
  • Дата начала
A

AquaGen4uk

#1
помогите пожалуйста
нужно написать функцию на языке С

В матрице размером 12x6 упорядочить строки матрицы по убыванию средних арифметических значений строк методом обмена, при котором просмотр возобновляется сначала.

буду очень благодарен.Заранее спасибо.
 

acorn

PHP Developer
29.08.2004
585
3
#2
4. старайтесь ВСЕГДА сначала решить задачу САМОСТОЯТЕЛЬНО, ну а когда не выходит ОБЯЗАТЕЛЬНО публикуйте здесь свой код, даже если он не работает. Поверьте, это значительно повышает к вам уважение. Халявщиков, которым нужно, что бы им просто кто-нить нахаляву сделал - здесь не любят. Да и исправить мелкую ошибку в готовом коде легче, чем писать все заново.
или 50$
 
A

AquaGen4uk

#3
Извените...нужно изменить функцию SrArifm
Код:
// 6.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>

void FormMatr(int *A, int n,int m)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(A+i*m+j)=-50+rand()%100;
}
void PrintMatr(int *A, int n,int m)
{	int i,j;
for(i=0;i<n;i++)
{	for(j=0;j<m;j++)
printf("%6d",*(A+i*m+j));
printf("\n");
}
}
void SrArifm(int *A, int n,int m)
{

int i,j,ib=0,srn=0,ix,B[12],p=0,sr=0,s=0;
for(j=0;j<m;j++)
{
for(i=0;i<n;i++)
s=s+*(A+i*m+j);
B[ib]=s/n;
ib++;
}
for (j=0;j<n;j++)
if (B[ib+1]>B[ib]) 
{for (ix=0;ix<n;ix++)
{

p=*(A+ix*m+j);
*(A+ix*m+j)=*(A+ix*m+j-1);
*(A+ix*m+j-1)=p;

}
j=0;}



}
void main()
{
int A[15][15],n,m;
printf("Vvedite n i m (12;6)");
scanf("%d %d",&n,&m);
FormMatr(&A[0][0],n,m);
PrintMatr(&A[0][0],n,m);
SrArifm(&A[0][0],n,m);
printf("Ots massiv\n");
PrintMatr(&A[0][0],n,m);
getch ();
}
 
A

AquaGen4uk

#4
Уже переделал так....программа зацикливаеться...не знаю уже что и делать......помогите народ пожалуйста!!!!Буду очень признателен.
Код:
void SrArifm(int *A, int n,int m)
{

int i,j,ib=0,p=0,srn=0,ix; float B[15],s=0,pp=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
s=s+*(A+i*m+j);
B[ib]=s/m;
s=0;
printf("%f\n",B[ib]);
ib++;

}
for (i=0;i<n-1;i++)
if (B[i]<B[i+1]) 
{for (j=0;j<m;j++)
{

p=*(A+i*m+j);
*(A+i*m+j)=*(A+(i+1)*m+j);
*(A+(i+1)*m+j)=p;
pp=B[i];
B[i]=B[i+1];
B[i+1]=pp;
i=0;
}
}



}