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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2019, 22:16   #1
РОман321
Новичок
Джуниор
 
Регистрация: 22.08.2019
Сообщений: 3
Восклицание Сортировка по алфавиту

Имееться файл с данными о читателях:
Savchuk:Lida:Ivanovna:1956:56953247 :4:0:1:500:
Marchenko:Dmitry:Olegovich:1999:544 46844:3:1:2:500:
и тд
нужно ВЫВЕСТИ всех в алфавитном порядке но программа не выводит и вылетает. Помогите пожалуйста
Вот код:
Код:
FILE* f = fopen("_data//_rdrs_inf.txt", "r");
char buf[255];
char letter;
int num_of_str = 0;                           //количество читателей(1 читатель на 1й строке)
while (fgets(buf, 255, f))
	num_of_str++;
fseek(f, 0, SEEK_SET);
READER_AND_INFO_OF_READER*reader = new READER_AND_INFO_OF_READER[num_of_str];
for (int i = 0; i < num_of_str; i++)
{
	fscanf(f, "%[^:]:%[^:]:%s:%i:%i:%i:%i:%i:\n", reader[i].last_name,reader[i].first_name,reader[i].patronymic,reader[i].date_of_birth,reader[i].passport_num, reader[i].ID_number, reader[i].num_of_read_books,reader[i].money);
}
	//запись инфо о читателях
int i = 0;
int*let=new int[num_of_str+1000];
int num_of_str_for_ = 0;   //счетчик читателей 1-17
int ascii_num = 65;// код буквы А
//с этого момента код вылетает
do //сортировка читателей по алфаввиту делаеться записью в массив айди читателя(у всех разный)если 1я буква а, б, в и тд
{
  while (num_of_str_for_ < num_of_str)
  {
	letter = reader[num_of_str_for_].last_name[0];
	if (letter == ascii_num)
	{
		let[i] = reader[num_of_str_for_].ID_number;
		i++;
	}
		num_of_str_for_++;
  }
	ascii_num++;
	num_of_str_for_ = 0;
} while (ascii_num != 91);
		
fclose(f);
FILE* f = fopen("_data//_rdrs_inf.txt", "r");
		
//вывод идет по очереди айди, которые уже отсортированы по алфавиту
for (int g = 0; g < num_of_str; g++)
{
fscanf(f, "%[^:]:%[^:]:%[^:]:%i:%i:%i:%i:%i:\n", reader[g].last_name, reader[g].first_name, reader[g].patronymic, &reader[g].date_of_birth, &reader[g].passport_num, &reader[g].ID_number, &reader[g].num_of_read_books, &reader[g].money);
		if (item == g)
		{
			setColor();
			cout << reader[let[g]].last_name;
			resetColor();
			cout<<endl;
		}
		else
		cout << reader[let[g]].last_name << endl;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 22.08.2019 в 22:29.
РОман321 вне форума Ответить с цитированием
Старый 24.08.2019, 18:18   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Текст ошибки, код ошибки?
Ошибка на этапе сборки или во время работы программы?
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка по алфавиту. Nagato Помощь студентам 0 22.11.2016 13:53
Сортировка по алфавиту. asmars Общие вопросы C/C++ 3 17.04.2012 00:42
Сортировка по алфавиту DimOn4Ik БД в Delphi 3 17.04.2010 06:48
Сортировка по алфавиту Cpluser Общие вопросы C/C++ 7 03.03.2010 10:11