|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.10.2010, 17:14 | #1 |
Пользователь
Регистрация: 20.06.2010
Сообщений: 17
|
написать программу, определяющую название года по его номеру
Задание:
В китайском гороскопе года носят следующие названия: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна, петух, собака, свинья. Учитывая, что 1996 год крысы, написать программу, определяющую название года по его номеру. Решить хотел так: Вводим год, делим его нацело на 12, получившееся число умножаем на 12, от введённого отнимаем получившееся. По разности с помощью case определяем название года. Но программа почему-то работать не хочет. Я С только начал изучать, в Delphi давно бы уже сделал. Вот код: int year; float year2; main() { printf("Vvedite god: "); scanf("%f", &year); year2=year & 12; year2=year2*12; year=year-year2; switch (year) { case 0: printf("eto god obez'yani\n"); break; case 1: printf("eto god petuha\n");break;; case 2: printf("eto god sobaki\n");break; case 3: printf("eto god svin'i\n");break; case 4: printf("eto god krisi\n");break; case 5: printf("eto god korovi\n");break; case 6: printf("eto god tigra\n");break; case 7: printf("eto god zayca\n");break; case 8: printf("eto god drakona\n");break; case 9: printf("eto god zmei\n");break; case 10: printf("eto god loshadi\n");break; case 11: printf("eto god ovci\n");break; default: printf("\n God vveden neverno! \n"); } getch(); return 0; } В переменной year после расчёта почему-то 0. Видимо что-то с типами напутал? Последний раз редактировалось dyusha2006; 21.10.2010 в 17:34. |
21.10.2010, 17:33 | #2 | |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
Цитата:
Целочисленное деление имеет место быть, когда мы целочисленный тип делим на целочисленный. Зачем у вас год имеет тип float не ясно |
|
21.10.2010, 17:35 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Код:
|
21.10.2010, 17:38 | #4 |
Пользователь
Регистрация: 20.06.2010
Сообщений: 17
|
|
21.10.2010, 17:38 | #5 |
Пользователь
Регистрация: 20.06.2010
Сообщений: 17
|
|
21.10.2010, 17:44 | #6 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Года должны быть переменными типа int;
Далее Код:
Единственный способ стать умнее - играть с более умным противником.
|
21.10.2010, 17:45 | #7 |
Пользователь
Регистрация: 20.06.2010
Сообщений: 17
|
Проблема вообще не в расчётах. После этих строк программа выдаёт 0
printf("Vvedite god: "); scanf("%f", &year); printf("%4.0f", &year); |
21.10.2010, 17:47 | #8 |
Пользователь
Регистрация: 20.06.2010
Сообщений: 17
|
О, спасибо. Вообще не знал что там кроме f может что-то быть.
|
21.10.2010, 17:59 | #9 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
%f аргумент рассматривается как переменная типа float или double
%d преобразуется к десятичному виду там вообще много чего писать можно Если интересно, про спецификации формата функций семейства printf() можешь почитать здесь http://www.codenet.ru/progr/cpp/spr/328.php
Единственный способ стать умнее - играть с более умным противником.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Составить программу, определяющую учеников класса, являющимися хорошистами и отличниками по итогам года | Roman@- | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 02.06.2011 16:28 |
В ячейке проставить название месяца, согласно номеру листа | kzld | Microsoft Office Excel | 5 | 06.10.2010 10:32 |
программу,запрашивающая кол-во сотен, десятков и единиц вчисле и выводит его название | StillersMom | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 15.03.2010 00:26 |
Написать программу, определяющую, через сколько дней количество съеденных комаров превысит 100 | мелкая007 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 12.01.2009 13:22 |
при введении любого номера года нашей эры, программа выводит его название за старым японским календарем | mobi_vic | Общие вопросы C/C++ | 1 | 06.06.2007 12:33 |