Другие языки программирования и технологии

Поиск года в файле на С++

Добрый день. Помогите пожалуйста решить задание для курсовой в Borland c++. Суть такова: есть текстовый файл, в котором размещена информация(фамилия, адресс, номер телефона, год установки телефона), необходимо чтоб в поле Memo1 вытягивало количество телефонов установленных с определенного года, который вводится в поле edit. чисто логически я понимаю что надо сделать массив, который вытянет в текстовика годы и потом в этом массиве найти количество ГОДОВ больших или равных заданному условием, но с реализацией вообще худо выходит . помогите пожалуйста хотябы приблизительно с кодом. Спасибо огромное. вот мой не рабочий код что я пытался реализовать, но ничего толком не вышло: Код: String s = OpenDialog1->FileName; TStringList *list = new TStringList; list->LoadFromFile(s) ; int ycount = 0; Memo2->Clear(); for(int i = 0; i < list->Count; i++) { if(list->Strings.Pos(Edit2->Text) <= Edit2->Text) { ycount++; }} Memo2->Lines->Append(ycount);
Во первых - где формат текстового файла?? ? Во вторых, единственный способ которым это делается ПО ЧЕЛОВЕЧЕСКИ - это парсинг файла вручную, в зависимости от его формата. Если упрощенно и вкратце, то получается так:
Задача: "вытягивало количество телефонов установленных с определенного года". Получил нужный год. Теперь ДОПУСТИМ у тебя формат файла такой:
ФИО_телефон_год.
И таких строк (такого формата) много в файле. Теперь пишешь класс типа:
class CClient с тремя полями в нем - ФИО (char*), телефон (int) и год (int). Создаешь массив объектов этого класса.
Открываешь файл (fopen), читаешь из него последовательно ФИО, тел. и год в первый элемент массива объектов класса, и т. д. заполняешь массив. Потом просто делаешь перебор по всем объектам, сравнивая поля "год" с введенным. Введенное нужно (лучше) сначала перевести из строки в число. Все. После этого у тебя не только решена задача, но и есть доступ ко всем полям класса, т. е. данным в файле, причем разложенным "по полочкам", т. е. по объектам.

Незнаю как там в этом еретичном билдере, но на нормально с++ это делается примерно так. Впрочем в твоем случае проблема похоже в if(list->Strings.Pos(Edit2->Text) <= Edit2->Text). Во первых проверь что возвращает функция Pos. Если строку, то ДВЕ строки сравнивать через >,<, и т. д. НЕЛЬЗЯ! Учи матчасть! Строки сравниваются через strcmp например.
Евгений Хохлов
Евгений Хохлов
11 177
Лучший ответ
кто ж тебе это бесплатно делать будет
Омскстроймех .
Омскстроймех .
3 346