Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 22.05.2013, 11:24   #1
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Адрес: Столин, Беларусь; Временно в Минске.
Сообщений: 117
Репутация: 10

skype: shilovec5377q
Восклицание Сортировка файла

Всем привет. Есть прога, которая записывает студентов в файл и выводит на экран студентов средний бал который >='6'.
Помогите пж отсортировать файл по условию :

ключ - средний бал. Метод сортировки QuickSort и пузырьковая сортировка.

заранее благодарю.

Код:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <fstream.h>
#include <math.h>

 
FILE *fl;
 
typedef struct
{
    char fio[30];
    double matem;
    double oaip;
    double english;
	double srb;
}TStudent;
 
TStudent stud[30]; //?????? ????????
char name[20];//??? ?????
int nst=0;//????? ????????? ????????
 
int menu();    //????
void spisok(); //?????? ??????
void resf();   //????????? ????????? ? ????
void resc();   //??????? ????????? ?? ?????




int main()
{
	while (true)
	{
		switch (menu())
		{
			
			case 1: spisok(); break; //?????? ??????
			case 2: resf(); break; //????????? ????????? ? ????
            case 3: resc(); break; //??????? ????????? ?? ?????
		

			case 4: return 0;
			default: "Viberite pravilno!";
		}
		puts("pres any key to continue");
		getch();
		system("cls"); 
}
} 
 
 
int menu()//????
{
	cout<<"viberite:"<<endl;
	cout<<"1.vvod studentov"<<endl;
	cout<<"2.sohranit rezultat v file"<<endl;
	cout<<"3.vivesti rezultat na ekran"<<endl;

	cout<<"4.Exit"<<endl;
	int i;
	cin>>i;
	return i;
}





void resc() //na ekran
{
    char fio[30];
    double matem;
    double oaip;
    double english;
	double srb;
 

    ifstream fin("ofile.txt", ios::in);
    
    fin.getline(fio, 30);
    fin >> matem >> oaip >> english>>srb;
    fin.ignore(1);
 
	
	
 for (int i=0;i<nst;i++)
 {
	 if(srb >= 6.0)


	
		 cout << fio << '\n' << matem << '\n' << oaip << '\n' << english << '\n'<< srb <<  "\n\n"; 
 
        fin.getline(fio, 30);
        fin >> matem >> oaip >> english>>srb;
        fin.ignore(1);
 
 }
    fin.close();
    system("pause");
}



void spisok () //?????? ??????
{

    cout<<"vvedite chislo studentov"<<endl;
    cin>>nst;
 
    for (int i=0;i<nst;i++)
    {
        cout<<"vvedite imya: ";
        cin>>stud[i].fio;
        cout<<"vvedite ocenki po matem.: ";
        cin>>stud[i].matem;
        cout<<"vvedite ocenku po oaip: ";
        cin>>stud[i].oaip;
        cout<<"vvedite ocenku po english: ";
        cin>>stud[i].english;


stud[i].srb=( (stud[i].matem)+(stud[i].oaip)+(stud[i].english) )/3;
		
	}
}



void resf()////sohran file
{




    ofstream fout("ofile.txt", ios::app);
    for (int i=0;i<nst;i++)
    

	{


        fout << stud[i].fio << endl << stud[i].english << endl
                << stud[i].matem << endl << stud[i].oaip << endl<< stud[i].srb << endl;
    }
}
shilovec5377 вне форума   Ответить с цитированием
Старый 22.05.2013, 11:30   #2
Abstraction
Профессионал
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
Репутация: 655
По умолчанию

Цитата:
Помогите пж отсортировать файл по условию...
Прочитать содержимое файла в память, отсортировать в памяти, записать обратно в файл.
Abstraction вне форума   Ответить с цитированием
Старый 22.05.2013, 17:32   #3
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Адрес: Столин, Беларусь; Временно в Минске.
Сообщений: 117
Репутация: 10

skype: shilovec5377q
Восклицание

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Прочитать содержимое файла в память, отсортировать в памяти, записать обратно в файл.
Подскажите пж, как это можно сделать?
shilovec5377 вне форума   Ответить с цитированием
Старый 22.05.2013, 17:42   #4
Abstraction
Профессионал
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
Репутация: 655
По умолчанию

Цитата:
Подскажите пж, как это можно сделать?
Что из трёх? "Прочитать" и "записать" - см. классы ifstream/ofstream. Подробности зависят от того, как именно данные записаны в файле.
"Отсортировать" - любой сортировкой. Если взять за основу сортировку массива int-ов, то в точке сравнения элементов (if(arr[i]<arr[j])) нужно вместо этого поставить условие, определяющее нужный Вам порядок (вроде if(arr[i].spb < arr[j].spb)).
Abstraction вне форума   Ответить с цитированием
Старый 22.05.2013, 18:41   #5
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Адрес: Столин, Беларусь; Временно в Минске.
Сообщений: 117
Репутация: 10

skype: shilovec5377q
По умолчанию

Всем спасибо, решил сам.
shilovec5377 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка типизированного файла Panda1 Помощь студентам 0 14.02.2013 23:24
Сортировка текста из файла Henny Помощь студентам 4 10.01.2012 10:13
сортировка из файла west.by Помощь студентам 15 12.06.2010 04:44
Сортировка файла Dem6 Паскаль 5 07.04.2009 12:23
Сортировка файла dbf Jon_1981 БД в Delphi 7 11.06.2007 10:57


20:32.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.