![]() |
|
Модераторы: bsa |
![]()
|
|
| Exclucive |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Тема «Разработка консольного приложения «Гороскоп».
Исходные данные: Программа запрашивает дату рождения пользователя. Определяется знак зодиака (по месяцу рождения), а также символ года по японскому календарю (например, «Красный дракон»). В зависимости от выпавшего цвета и текущего времени года, выдать некоторое предсказание из базы данных. База данных находится в файле и содержит 20 строк (5 цветов *4 сезона). Сделал всё кроме вывода предсказания из базы данных.... Помогите плиз.
Это сообщение отредактировал(а) archimed7592 - 17.5.2008, 11:54 |
||||
|
|||||
| rrrFer |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
насколько я понял, все так: тебе надо записать 20 строк в файл, каждая строка будет содержать 3 слова
например: красный весна черный_дракон ----------------- Затем ты хочешь получить по двум из слов третье, то-бишь вводишь например: красный весна *********** получаешь: черный_дракон... */*/*/*/*/*/*/*/*/*/*/*/*/*/*/ а проблема в том что незнаешь как быть с файлом...если я все правильно понял, то файл из 20 строк меняться не должен, но надо его создать:
затем - когда файл создан, надо искань в мен строки:
|
||||
|
|||||
| Exclucive |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Нет, к сожалению ты не правильно понял условие. Обьясняю.... Есть база данных с предсказаниями (текстовый файл в котором хранится 20 строк(предсказаний)). В зависимости от выпавшего цвета и поры года нужно вывести одну из этих строк. Вот.
|
|||
|
||||
| rrrFer |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
Exclucive
напиши пример, я не могу понять чем твое условие отличается от того как я понял |
|||
|
||||
| Exclucive |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Вот смотри... У меня есть файл .txt, в котором 20 строк(предсказаний). например пользователь ввёл дату рождения 6 8 1989 и у него выпало жёлтый цвет и он родился летом. затем программа должна вывести одно из 20-ти предсказаний из того же файла .txt например "в этом году вас ожидает неимоверная удача". и так нужно предусмотреть 20 вариантов комбинаций цветов и пор года, т.е. 5 цветов * 4 поры года = 20 комбинаций. и каждая из этих комбинаций должна выводить свою строку.
|
|||
|
||||
| rrrFer |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
ну значит я все правильно понял:
просто впиши эти комбинации тоже в файл, ну например: красный весна в_этом_году_вас_ожидает_неимоверная_удача фиолетовый зима в_этом_году_вас_ожидает_неимоверная_неудача и т.д 20 строк. тогда например комбинация "красный весна" выведет тебе "в_этом_году_вас_ожидает_неимоверная_удача" т.е. каждой из этих комбинаций соотвествует своя строчка если я о5 неправильно понял - напиши целиком свой файл и какой нибудь пример запроса |
|||
|
||||
| Exclucive |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
а как это организовать в моей программе??? которую я написал выше. и можно ли обойтись без структур???
|
|||
|
||||
| rrrFer |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
удобно в этой задаче использовать типизированный файл, и тогда надо использовать структуры.
Можно конечно и текстовый файл использовать...но зачем? как это привинтить к твоей программе я не знаю, у тебя там вообще файла даже нету нигде, но ты знаешь как будет выглядеть этот файл с 20 строк? - тогда для начала используя программу с первого листинга переведи его в двоичный. И вот еще вопрос: в программе которую ты написал, что определяется на выходе? - если определяется цвет и время года то просто дописывай в конец своей программы первый листинг и компиль |
|||
|
||||
| Exclucive |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Пиши, пожалуйста на более простом языке. Я ж ведь только 1-й семестр учу С++, и что такое типизированный файл я не знаю.... и структуры я не люблю
Добавлено через 8 минут и 42 секунды у меня вобще была такая идея: когда я буду писать эти предсказния перед каждым предсказанием ставить какой-нибудь номер, потом в цикле организовать поиск этого символа, и если такой символ встретиться, то вывести строку поле этого символа. но я не знаю как это сделать, т.к. плохо знаю теорию, а сидеть за книжкой уже некогда послезавтра нужно курсач сдать уже. вот |
|||
|
||||
| rrrFer |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
типизированный(двоичный) файл в использовании отличается от обычного, тем что когда вызываешь fopen к способу открытия файла прибавляешь b, то-есть открыть двоичный файл по чтению - пишешь rb, по записи - wb. и функциями для считывания/записи информации в файл - у обычного файла это функции fscanf/fpprintf, а у типизированного - fread/fwrite.
незнаю, нам их одновременно давали(и типизированные и - нет). если так то почему ты используешь fread? - это ведь хуже чем fscanf для нетипизированных, потому что в fscanf определены спецификации формата(теже что и для scanf/printf) то есть хочешь ты считать слово(набор символов, ограниченный пробелами или символами перевода строки)- пишешь fscanf(f,"%s",&string); где f - это указатель на файл. а если с fread - то тебе пришлось бы писать цикл, поочереди считывать символы слова и слеплять эти символы с помощью strcat. так вот fread удобен, если ты хранишь в файле отдельные числа или символы, т.е. файл содержит и числа и символы и тебе неплохо бы их удобно считывать. Вот у тебя программа:
или вместо fwrite тебе пришлось бы писать fprintf аж 3 раза, а главно что считывать когда будешь то как удобно то... написал fread(&s,sizeof(s),1,f); и не надо тебе 3 раза считывать отдельно color отдельно season и т.п. т.е. после этого у тебя есть s.color, s.season и s.symbol - строки.
а надо любить |
||||||
|
|||||||
| Exclucive |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Обьясни мне, пожалуйста, для чего создавать файл припомощи программы??? Ведь в условии сказанно, что файл уже создан ручками и там написанно 20 строк. Мне нужно только считать с него... и всё.
|
|||
|
||||
| Exclucive |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
вот ещё исходник. это моя задача уже с файлом. только я всё равно не врубаюсь....
там внизу есть содержимое файла. */
|
|||
|
||||
| rrrFer |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
Exclucive
потому что много удобней создавать типизированный файл с помощью программы и я уже писал что много удобнее тебе было бы работать с типизированным файлом
а что именно не понятно? |
||||
|
|||||
| Exclucive |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
по какому принципу работает функция чтения из файла. В моей проге.
|
|||
|
||||
| rrrFer |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
Exclucive
-то-бишь используется входной файловый поток
-определил цвет(число от 1 до 5)
считал столько строчек, какое значение имеет color затем ты выводишь последнюю считанную строчку. Вообще тебе и нужна была только последняя строчка, но т.к. неизвестен размер каждой строчки(число символов, то перейти сразу на нужную строку было нельзя...в этом текстовые файлы уступают двоичным. ну а
читай про файловые потоки(модуль <fstream>) Это сообщение отредактировал(а) rrrFer - 20.5.2008, 12:37 |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |