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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 02:37   #1
Dragonqc
Новичок
Джуниор
 
Регистрация: 01.03.2012
Сообщений: 1
По умолчанию Сортировка в файле (C)

Здравствуйте. Дана структура, которую мы записываем в файл, с этой структурой необходимо, используя свои данные,
1) Найти кол-во продукции, производство которой было максимальным в 1958
2)Найти виды продукции, производство которых в 1950 году не превышало 40 тыс.т.
3)Найти и упорядочить в порядке обратном алфавитному, наименования продукции, производство которых в 1958 году не превышало 4 млн.т.

Первые два пункта работают и выполняются, а третий не работает. Не могу понять где ошибка. Подскажите, пожалуйста.
Вот сам код функции сортировки.

Код:
void Sort(char*name)
{
	int i=0, j, pos,n;
	if ((fv = fopen(name,"rb")) == NULL)    //Открытие файла для чтения и записи
	{
		printf("Error open file!\n");
		exit(-1);
	}
	fseek(fv,0,SEEK_END);
	n = ftell(fv)/sizeof(a);                 //Определение количества записей в файле
	while (i<(sizeof(a)*(n-1)))              //Пересмотр всех записей кроме последней
	{
		fseek(fv,i,SEEK_SET);
		fread(&a,sizeof(a),1,fv);
		j = i+sizeof(a);                     
		while (j<(sizeof(a)*n))              //Просмотр всех записей кроме уже отсортированых
		{
			fseek(fv,j,SEEK_SET);
			fread(&b,sizeof(b),1,fv);
			if (strcmp(a.product,b.product)>0)//Сравнение названий стран
			{
				pos = i;                     
				fseek(fv,pos,SEEK_SET);      
				fwrite(&b,sizeof(b),1,fv);   //Запись структуры b вместо а 
				pos = j;
				fseek(fv,pos,SEEK_SET);
				fwrite(&a,sizeof(a),1,fv);   //Запись структуры а вместо b 
				strcpy(a.product,b.product);
				a.edin = b.edin;             //Копирование структуры b в а
				a.y_50 = b.y_50;             //для дальнейшего просмотра
				a.y_58 = b.y_58;			//на текущем такте цикла i
			}
			j += sizeof(b);
		}
		i += sizeof(a);
	}
	fclose(fv);
}
Dragonqc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка чисел в файле vadiprog Помощь студентам 0 18.01.2012 17:50
Сортировка в файле Надежда1286 Помощь студентам 3 27.11.2011 16:26
сортировка данных в файле doomer3 Паскаль, Turbo Pascal, PascalABC.NET 9 18.04.2011 00:49
Сортировка слов в файле alextm07 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.01.2011 01:37
Сортировка в текстовом файле Isthmus Паскаль, Turbo Pascal, PascalABC.NET 18 01.05.2008 20:46