Форум программистов, компьютерный форум, киберфорум
Наши страницы

Сортировка элементов структуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа с циклом http://www.cyberforum.ru/cpp-beginners/thread201640.html
# include <iostream> # include <iomanip> # include <cmath> # include <conio.h> int main() {using namespace std; float x, xn, xk, y, z, a, dx, S, k, P; cout<<"vvedite xn xk dx a"<<endl;...
C++ Разница во времени Подсчитать количества дней с начала эпох и до определенной даты включительно. (включая вискокосный год) #include <iostream> using namespace std; int main () { int n; cin >> n; int d,... http://www.cyberforum.ru/cpp-beginners/thread201627.html
алгоритм Эвклида C++
Пожалуста напишите вариант алгоритма Евклида, использующий соотношения НОД(2*a, 2*b) = 2*НОД(a,b)
Напечатать слова, состоящие только из слогов C++
Дана последовательность слов в виде текстовой строки. Слова в последовательности разделены символами-разделителями: “ .,;:\n\t!?”. В состав каждого слова могут входить: • латинские буквы, как...
C++ Модификация одномерного массива http://www.cyberforum.ru/cpp-beginners/thread201602.html
требуется написать программу на СИ! Для произвольно выбранной последовательности целых чисел, в которой не более 30 элементов, выполнить следующее задание: ввести эти числа в одномерный массив...
C++ Произведение первых n положительных четных целых чисел Помогите написать программу (С циклом FOR), которая вычисляет произведение первых n положительных четных целых чисел. Количество чисел должно вводится во время работы программы. Ниже приведен... подробнее

Показать сообщение отдельно
kronos2
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 2

Сортировка элементов структуры - C++

01.12.2010, 22:17. Просмотров 2181. Ответов 3
Метки (Все метки)

Цель программы: Считать и отсортировать информацию о студентах в группе. Сортировка просходит по номеру зачетки.

Код:

Код
#include "stdafx.h"
using namespace std;
 
struct MEMBER {
    char fio[30]; // ФИО
    char date[12]; // Дата рождения
    char adress[70]; // Место жительства
    char born[70]; // Место рождения
    char subject[30]; // Любимый предмет
    int book; // Номер зачетки
    char sport[30]; // Секция
    char lang[30]; // Язык
    char zodiak[30]; // Зодиак
    int money; // Степедия
};
#define m 16 // Кол-во студентов в базе
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale( LC_ALL, ".1251" );
 
    MEMBER group[m];
    MEMBER *gmember[m], *temp;
 
    FILE *data;
    data=fopen("D://input.txt","r"); // файл данных
 
    cout << "Исходная сортировка (Имя, Номер зачетки):" << endl << "______________________" << endl;
 
    for (int i=0;i<m;i++) {
        gmember[i]= &group[i]; // указатели на члена группы
 
        fgets(gmember[i]->fio,30,data); // считывание строк, доступ к эменту структуры через указатель
        cout << gmember[i]->fio;
        fgets(gmember[i]->date,12,data);
        fgets(gmember[i]->adress,70,data);
        fgets(gmember[i]->born,70,data);
        fgets(gmember[i]->subject,30,data);
        fscanf(data,"%d\n",&gmember[i]->book); // считывание чисел
        cout << gmember[i]->book << endl << endl;
        fgets(gmember[i]->sport,30,data);
        fgets(gmember[i]->lang,30,data);
        fgets(gmember[i]->zodiak,30,data);
        fscanf(data,"%d\n",&gmember[i]->money);
    }
 
    cout << "______________________" << endl;
 
    // Сортируем
    for(int k=0;k<m;k++) {
        for(int i=0;i<(m-1);i++) {
            if (gmember[i]->money < gmember[i+1]->money)
            {
                temp=gmember[i];
                gmember[i]=gmember[i+1];
                gmember[i+1]=temp;
            }
        }
    }
 
    // Выводим отсортированное
 
    cout << endl << "Отсортированная информация:" << endl;
 
    for (int i=0;i<m;i++) {
        cout << "ФИО: " << gmember[i]->fio;
        cout << "Дата рождения: " << gmember[i]->date;
        cout << "Адресс: " << gmember[i]->adress;
        cout << "Место рождения: " << gmember[i]->born;
        cout << "Любимый предмет: " << gmember[i]->subject;
        cout << "Номер зачетки: " << gmember[i]->book << endl;
        cout << "Секция: " << gmember[i]->sport;
        cout << "Изучаемый язык: " << gmember[i]->lang;
        cout << "Знак зодиака: " << gmember[i]->zodiak;
        cout << "Стипендия: " << gmember[i]->money << endl << endl;
    }
 
    _getch();
    return 0;
}
В исходном файле:
Код:


Код
Имя1
Дата Рождения1
....
Имя2
....
и т.д.

Проблема:
Код:

Код
    for(int k=0;k<m;k++) {
        for(int i=0;i<(m-1);i++) {
            if (gmember[i]->money < gmember[i+1]->money)
            {
                temp=gmember[i];
                gmember[i]=gmember[i+1];
                gmember[i+1]=temp;
            }
        }
    }
Условие if выполняется, но не сортирует ничего.

Софтина: VC++ 2010

Как исправить или предложите другой вариант сортировки.

Заранее спасибо всем откликнувшимся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.