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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2009, 22:43   #1
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию Задача на структуры с сортировкой на С++

Вобщем вот задача которая не компилируется выдаёт две ошибки
1)Бинарный '=': не найден оператор, принимающий правый операнд типа 'double' (или приемлемое преобразование отсутствует)
2)невозможно преобразовать 'mas' в 'double'
Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен

Код:
#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,incr=n/2;
	while(incr>0)
	{
		for(i=incr; i<n; i++)
		{
			j=i-incr;
			while(j>=0)
			if(a[i].key>a[j+incr].key){temp=a[i].key; a[j].key=a[j+incr].key; a[j+incr].key=temp; j=j-incr;}
				else j=-1;
			}
					
			incr=incr/2;
	}
		}
					
	
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;
}
Помогите пожалуйста исправить.
Many man вне форума Ответить с цитированием
Старый 24.04.2009, 23:11   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

в функции sort вместо этого

Код:
{temp=a[i].key; a[j].key=a[j+incr].key; a[j+incr].key=temp; j=j-incr;}
сделайте так

Код:
{temp=a[i]; a[j]=a[j+incr]; a[j+incr]=temp; j=j-incr;}
counter вне форума Ответить с цитированием
Старый 25.04.2009, 09:12   #3
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Всё запускается,только не сортирует среднюю оценку.
Many man вне форума Ответить с цитированием
Старый 25.04.2009, 10:32   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
void sort(int *a,int n)
{
	mas temp;
	int i,j,incr=n/2;
	while(incr>0)
	{
		for(int i=0;i<n-incr;i++)
		{
			for(int j=i+incr;j<n;j+=incr)
			{
				if(a[i].key>a[j].key)
				{
					temp=a[i];
					a[i]=a[j];
					a[j]=temp;
				}
			
			}
		}
		incr=incr/2;
	}
}
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача со структурой и сортировкой на С++ Many man Помощь студентам 1 21.03.2009 22:52
Простая задача на тему Структуры Borland C++ Dower Помощь студентам 4 10.03.2009 10:04
Массивы и структуры в структурах (Задача в С++) bel_ka Общие вопросы C/C++ 4 16.12.2007 15:31
Помогите с сортировкой radist Паскаль, Turbo Pascal, PascalABC.NET 5 23.04.2007 12:50