Другие языки программирования и технологии
Поиск года в файле на С++
Добрый день. Помогите пожалуйста решить задание для курсовой в 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 например.
Задача: "вытягивало количество телефонов установленных с определенного года". Получил нужный год. Теперь ДОПУСТИМ у тебя формат файла такой:
ФИО_телефон_год.
И таких строк (такого формата) много в файле. Теперь пишешь класс типа:
class CClient с тремя полями в нем - ФИО (char*), телефон (int) и год (int). Создаешь массив объектов этого класса.
Открываешь файл (fopen), читаешь из него последовательно ФИО, тел. и год в первый элемент массива объектов класса, и т. д. заполняешь массив. Потом просто делаешь перебор по всем объектам, сравнивая поля "год" с введенным. Введенное нужно (лучше) сначала перевести из строки в число. Все. После этого у тебя не только решена задача, но и есть доступ ко всем полям класса, т. е. данным в файле, причем разложенным "по полочкам", т. е. по объектам.
Незнаю как там в этом еретичном билдере, но на нормально с++ это делается примерно так. Впрочем в твоем случае проблема похоже в if(list->Strings.Pos(Edit2->Text) <= Edit2->Text). Во первых проверь что возвращает функция Pos. Если строку, то ДВЕ строки сравнивать через >,<, и т. д. НЕЛЬЗЯ! Учи матчасть! Строки сравниваются через strcmp например.
кто ж тебе это бесплатно делать будет
Похожие вопросы
- Поиск в большом файле C++
- Существует ли ф-я в ПХП для поиска класса в *.CSS файле?
- Программа для поиска копий на компе (МУзыки, файлов одинаковых)
- Как на PHP получать пути к файлам из массива names в теге input при загрузке некольких файлов?
- C++ Файлы. помогите чем можете . за хороший ответ подарю денюжку
- Помогите написать bat файлы, срочно надо, сам изучить уже не успеваю
- помогите написать bat-файл.
- фотошоп: как пользоваться правильно пакетной обработкой файлов?
- Как определить что файл имеет зеркальное расширение? Особенно полезно будет для школьников и пожилых людей
- Нужен bat файл, чтобы переименовал все txt файлы в папке, заменяя имя на первую строку содержимого файла