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

Тема в разделе "C/C++/C#", создана пользователем AquaGen4uk, 12 янв 2011.

Наш партнер Genesis Hackspace
  1. AquaGen4uk

    AquaGen4uk Гость

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

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

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

    acorn PHP Developer
    Web Team

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    или 50$
     
  3. AquaGen4uk

    AquaGen4uk Гость

    Извените...нужно изменить функцию SrArifm
    Код (Text):
    // 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 ();
    }
     
  4. AquaGen4uk

    AquaGen4uk Гость

    Уже переделал так....программа зацикливаеться...не знаю уже что и делать......помогите народ пожалуйста!!!!Буду очень признателен.
    Код (Text):
    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;
    }
    }



    }
     
Загрузка...

Поделиться этой страницей