Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 13:15   #1
Neznakomka
Пользователь
 
Аватар для Neznakomka
 
Регистрация: 10.05.2009
Сообщений: 16
По умолчанию Помогите решить Задачу на сортировку С

В файле input.txt содержатся сведения о группе студентов в формате:
номер группе;
запись о каждом студенте группы содержит следующие сведения:фамилия, имя, отчество, год рождения, оценки по пяти предметам.
Переписать данные файла input.txt в файл output.txt, отсортировав их в алфавитном порядке по фамилии методом "пузырька".

Непонимаю как можно отсортировать в алфавитном порядке
Помогите пожалуйста
Neznakomka вне форума Ответить с цитированием
Старый 10.05.2009, 13:17   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Непонимаю как можно отсортировать в алфавитном порядке
Просто сортируйте по полю "фамилия", сравнивая строки.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.05.2009, 13:35   #3
Neznakomka
Пользователь
 
Аватар для Neznakomka
 
Регистрация: 10.05.2009
Сообщений: 16
По умолчанию

Как можно сравнивать буквы?
Neznakomka вне форума Ответить с цитированием
Старый 10.05.2009, 13:41   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Как можно сравнивать буквы?
Также, как и числа. Буква (char) - это и есть число в символьном виде. Она имеет свой ASCII код.
СИ-строки можно сравнивать с помощью функции strcmp (чтобы узнать о ней больше используйте поиск).
Для строк из класса string есть метод compare. Также можно использовать и операторы сравнения '<' и '>'.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.05.2009, 14:02   #5
Neznakomka
Пользователь
 
Аватар для Neznakomka
 
Регистрация: 10.05.2009
Сообщений: 16
По умолчанию

Код:
#include<fstream>
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
//открываем глобальные файловые потоки 
ifstream in("input.txt");
ofstream out("output.txt");
struct mas
{
	string F,I,O; //фамилия,имя, отчество
	int ses[5];//оценки по пяти предметам
	double key;//средняя оценка
	void print();
};
void mas::print()//вывод данных в выходной поток
{
	out<<setw(20)<<left<<F<<setw(20)<<I<<setw(20)<<O;
	for(int i=0; i<5;i++)
		out<<setw(12)<<ses[i];
	out<<setw(5)<<key<<endl;
}
//сортировка массива записей из n элементов методом пузырька
void sort(mas*a,int n)
{
	mas temp;
	int i,j;
	for(i=0;i<n-1;i++)
		for(j=n-1;j>i;j--)
			if(a[i].F>a[j-1].F){temp=a[j];a[j=a[j-1];a[j-1]=temp;}
}

					
	
int main()
{
	int n=0,i;
	mas stud[20];
	if(!in)cout<<"error in the open file input.txt\n";
	else
	{
		//in>>m;считываем номер группы
		while(in.peek()!=EOF)//считываем данные про всех студентов
		{
			in>>stud[n].F;
			in>>stud[n].I;
			in>>stud[n].O;
				//считываем оценки и высчитываем средний балл
			stud[n].key=0;
			for(i=0; i<5; i++)
			{
			in>>stud[n].ses[i];
			stud[n].key+=stud[n].ses[i];
			}
			stud[n].key/=5;
			n++;
		}

		sort(stud,n);//сортируем массива записей
		//выводим отсортированные данные в файл output.txt
	//out<<m<<endl;
		for(i=0;i<n;i++)
			stud[i].print();
	}
	in.close(); out.close();//закрываем файлы
	return 0;
}
Вот я написала только наверно что то неправильно , подскажите что нужно исправить
Neznakomka вне форума Ответить с цитированием
Старый 10.05.2009, 14:28   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Исправьте функцию сортировки:
Код:
void sort(mas *a,int n)
{
	mas temp;
	int i,j;
	for(i=0;i<n;i++)
		for(j=n-1;j>i;j--)
			if(a[j-1].F.compare(a[j].F)>0)
   {
    temp=a[j];
    a[j]=a[j-1];
    a[j-1]=temp;
   }
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу!!! Deis Помощь студентам 2 31.01.2009 00:25
Помогите решить задачу, please! CRUMB Помощь студентам 3 08.12.2008 18:02
помогите решить задачу на сортировку бинарными вставками... zhorzh2407 Помощь студентам 1 28.10.2008 04:14
Помогите переделать файловую сортировку на сортировку динамич. списков Taisja Помощь студентам 2 15.06.2008 16:10
Помогите решить задачу!!! Колян Помощь студентам 3 03.12.2006 22:19