|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
20.10.2010, 23:29 | #1 (permalink) |
Member
Регистрация: 24.01.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 26
|
Не могу придумать алгоритм
Программа следующая: пользователь вводит дату рождения (день, месяц, год) программа показывает кто он по знаку зодиака и в какой год он родился (например год свиньи). Конкретно не пойму как можно определить знак зодиака? Месяц записывается в одну переменную, день в другую. В зависимости от введенного месяца, смотрится значение второй переменной и в зависимости от того в каком интервале он находится, программа выдает соотв. сообщение. Но мы сейчас проходим массивы и я так подозреваю, что они тоже должны быть задействованы. Можно ли это как-то реализовать с помощью массивов ? Спасибо заранее. |
20.10.2010, 23:29 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Можно узнать множество полезной информации перейдя по этим ссылкам Помогите придумать схему со светодиодом Алгоритм |
21.10.2010, 00:20 | #2 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
ну можно год дату и месяц например ввести в массив)
а там уже проверять куда попадет ячейка... но это будет нормально если у вас много пользователей и вы вбиваете для каждого... а так достаточно просто переменных... ну а проверка там та, которую вы написали... |
21.10.2010, 07:05 | #3 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Раз обязательно нужны массивы, можно в них занести знаки зодиака и названия годов, потом проверять соответствие. К примеру, год можно определить путём вычисления остатка от деления разности введенного и эталонного значения на 12. За эталонное значение можно принять любой определенный год, название которого вам известно. Сам остаток от деления и будет индексом для элемента массива.
Для определения знака зодиака вам нужно ввести выбор из 12 вариантов. Дело в том, что для каждого знака периоды охватывают 2 месяца и нужно проверять попадание в них введенной даты. Каждый из вариантов выбора даст вам индекс для элемента массива знаков зодиака. В конце вам останется только вывести все полученные значения.
__________________
Убить всех человеков! |
21.10.2010, 10:44 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Вот, нарисовал некий алгоритм насчет Зодиака. Реализация (увы) - на Паскале, но, думаю, перевести в СИ несложно. Здесь применяются латинские названия Знаков:
Aries - Овен Taurus - Телец Gemini - Близнецы Cancer - Рак Leo - Лев Virgo - Дева Libra - Весы Scorpio - Скорпион Saggitarius - Стрелец Capricorn - Козерог Aquarius - Водолей Pisces - Рыбы Код:
VAR month,date,md: WORD; S:STRING; Begin Write('Enter month (1-12) '); ReadLn(Month); Write('Enter date (1-31) '); ReadLn(Date); md:=month*100+date; If md< 121 then S:='Capricorn' else If md< 219 then S:='Aquarius' else If md< 321 then S:='Pisces' else If md< 421 then S:='Aries' else If md< 521 then S:='Taurus' else If md< 622 then S:='Gemini' else If md< 723 then S:='Cancer' else If md< 823 then S:='Leo' else If md< 924 then S:='Virgo' else If md<1024 then S:='Libra' else If md<1123 then S:='Scorpio' else If md<1222 then S:='Sagittarius' else S:='Capricorn'; WriteLn('Zodiac sign is ',S); ReadLn; END. |
21.10.2010, 11:48 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Еще в свое время для себя сделал программку по восточному календарю. Сейчас малость "причесал": убрал кириллицу (DOS) и годы до н.э. (у меня учитываются и такие). К сожалению, опять же Паскаль.
Код:
CONST Matter_Color:ARRAY[0..9] of STRING[16]=('Metal White ', 'Metal White ', 'Water Black ', 'Water Black ', 'Wood Blue ', 'Wood Blue ', 'Fire Red ', 'Fire Red ', 'Earth Yellow', 'Earth Yellow'); Animal:ARRAY[0..11] of STRING[8]=('Monkey', 'Hen ', 'Dog ', 'Swine ', 'Mouse ', 'Cow ', 'Tiger ', 'Rabbit', 'Dragon', 'Snake ', 'Horse ', 'Sheep '); VAR CurYear, Mod1, Mod2, Mod3:LongInt; BEGIN WRITELN('Enter zero year to exit'); WRITELN; REPEAT WRITE('Enter the year: '); READLN(CurYear); IF CurYear>0 THEN BEGIN Mod1:=CurYear mod 60; Mod2:=Mod1 mod 10; Mod3:=Mod1 mod 12; WRITELN(CurYear:8,' ',Animal[Mod3],' ',Matter_Color[Mod2]); END; UNTIL CurYear=0; END. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
23.10.2010, 10:00 | #8 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Между прочим, в Паскале строка тоже ни что иное, как массив символов. |
|
23.10.2010, 10:24 | #9 (permalink) |
Member
Регистрация: 07.06.2010
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Можно сделать массив строк в Cи, например вот так:
const string Str1[4] = {"Sc","Cs","Df","Hd"}; или string Str[10]; Str[0]="aaaa"; Только нужно будет подключать string.h... P.S.: в наиболее ранних версиях Си нет string, только char А в более поздних помимо string, появился и AnsiString... |
23.10.2010, 16:46 | #10 (permalink) |
Member
Регистрация: 24.01.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 26
|
KiD2, попробовал твои варианты - выдает ошибку. Значит Си старый ? String.h подключил.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|