Сортировка В Структураъх[c++]

Тема в разделе "C/C++/C#", создана пользователем -, 22 мар 2012.

  1. Гость

    Помогите с сортировкой. Мне нужно отсортировать спортсменов по возрастанию их среднего балла
    Я сделал с помощью простой вставки. Сам алгоритм знаю. Но запутался какому массиву, что присваивать.
    Вот код
    Код (C++):
    #include<iomanip.h>
    #include<fstream.h>
    #include<iostream.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<math.h>

    ifstream Fin;
    ofstream Fout;
    const int m=6;
    struct Sportsmen
    {
    char Fam[11];
    char Dolgn[14];
    float Ball[m];
    };
    void input (Sportsmen &T)
    {
    Fin>>T.Fam>>T.Dolgn;
    for (int j=0; j<m; j++)
    Fin>>T.Ball[j];
    }
    void output (Sportsmen T)
    {
    Fout<<setw(10)<<T.Fam<<" "<<setw(15)<<T.Dolgn;
    for (int j=0; j<m; j++)
    Fout<<setw(4)<<T.Ball[j];
    Fout<<endl;
    }

    float SrBall (Sportsmen T)
    {
    float Sr=0;
    for (int j=0; j<m; j++)
    Sr+=T.Ball[j];
    return Sr/m;
    }
    void InsertSort (float Ball[],int m,Sportsmen T)
    {
    for (int i=1; i<m; i++)
    {
    float x=SrBall[i];
    for (int j=i-1; j>=0 && SrBall[j]>x; j++)
    SrBall[j+1]=SrBall[j];
    SrBall[j+1]=x;
    }
    }

    void main ()
    {
    Sportsmen S[50];
    Fin.open("Z:\\STRUCT\\DATA.cpp");
    if (Fin.fail())
    {
    cout<< "\n input file is not open \n";
    exit(1);
    }
    int k=0;
    while (!Fin.eof())
    input (S[k++]);
    k--;
    Fin.close();
    InsertSort(SrBall,m);
    Fout.open("Z:\\STRUCT\\SORT.txt");
    if (Fout.fail())
    {
    cout <<"\n created file is not open\n";
    exit(1);
    }
    for (int i=0; i<k; i++)
    output (S[i]);
    Fout.close();
    Вот файл
    Код (Text):
    Ololoev swimer 20 15 18 19.5 17 20
    Troler troling 20 19 17 20 14 20
    Djigurda sport_dancer 15 14 10 5 7 3.5
    Mentov footballer 5.5 4 2 1 1 1
    Ravshan skier 3 8 6 12 16 14
    Djamshut bobsledder 3 3 1 2 2.5 1.5
    Putin karatist 19 20 19 13 9 8
    Mevdedev judoist 18.5 17.5 19.5 11 4 20
    Makarov athlete 13 15 11.5 14.5 9 18
    Syvorov biathlete 7 0 3 9 8 2
     
  2. Гость

    Попробуй так:
    Код (C++):
    #include<iomanip.h>
    #include<fstream.h>
    #include<iostream.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<math.h>

    ifstream Fin;
    ofstream Fout;
    const int m=6;
    struct Sportsmen
    {
    char Fam[11];
    char Dolgn[14];
    float Ball[m];
    };
    void input (Sportsmen &T)
    {
    Fin>>T.Fam>>T.Dolgn;
    for (int j=0; j<m; j++)
    Fin>>T.Ball[j];
    }
    void output (Sportsmen T)
    {
    Fout<<setw(10)<<T.Fam<<" "<<setw(15)<<T.Dolgn;
    for (int j=0; j<m; j++)
    Fout<<setw(4)<<T.Ball[j];
    Fout<<endl;
    }

    float SrBall (Sportsmen T)
    {
    float Sr=0;
    for (int j=0; j<m; j++)
    Sr+=T.Ball[j];
    return Sr/m;
    }
    void InsertSort (Sportsmen T[], int countSportsmen)
    {
    for (int i=1; i<countSportsmen; i++)
    {
    Sportsmen temp = T[i];
    for(int j = i - 1; j >= 0 && SrBall(T[j]) > SrBall(temp); j--)
    T[j + 1] = T[j];

    T[j + 1] = temp;
    }
    }

    void main ()
    {
    Sportsmen S[50];
    Fin.open("D:\\DATA.txt");
    if (Fin.fail())
    {
    cout<< "\n input file is not open \n";
    exit(1);
    }
    int k=0;
    while (!Fin.eof())
    input (S[k++]);
    k--;

    Fin.close();
    InsertSort(S, k);
    }
     
Загрузка...
Похожие Темы - Сортировка Структураъх[c++]
  1. vera2014
    Ответов:
    0
    Просмотров:
    1.074
  2. Liori
    Ответов:
    2
    Просмотров:
    1.007
  3. FCDK
    Ответов:
    0
    Просмотров:
    1.266
  4. ленарано
    Ответов:
    1
    Просмотров:
    1.105
  5. Creder
    Ответов:
    0
    Просмотров:
    1.347

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