Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2011, 13:03   #1
Sardge
Новичок
Джуниор
 
Регистрация: 14.07.2011
Сообщений: 2
По умолчанию Программа на календарь.

Здравствуйте. Помогите пожалуйста написать программу на языке Си, не С++.
Звучит она так: Даны три натуральных числа a,b,c обозначающие число,месяц,год. Выяснить:
1) Сколько дней прошло с 1.01.с до даты a.b.c;
2) Сколько полных месяцев прошло с 1.01.c до даты a.b.c.
Sardge вне форума Ответить с цитированием
Старый 14.07.2011, 13:38   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) если напишу на Pascal самостоятельно переведёте код на C ?

2) а сколько дней прошло с 1.01.c до 2.01.с ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.07.2011, 14:07   #3
Sardge
Новичок
Джуниор
 
Регистрация: 14.07.2011
Сообщений: 2
По умолчанию

1) Не смогу; 2) 1
Sardge вне форума Ответить с цитированием
Старый 14.07.2011, 14:19   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Sardge Посмотреть сообщение
Помогите пожалуйста написать
А чем вам помочь?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 14.07.2011, 16:50   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ответ на 1-ю часть задачи
Код:
int IsLeapYear(int cYear)
{
    return ((cYear % 4) == 0) &&
                   ((cYear % 100 != 0) || (cYear % 400 == 0));
}

void main()
{
  int i, a, b, c, kDays;
  int DaysInMonths[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

  printf("\n\nВведите день месяц год: ");
  scanf("%d %d %d",&a, &b, &c);

  printf("\nВы ввели день = %d месяц = %d год = %d",a,b,c);

  /* printf("\nВведённый год високосный: %d",IsLeapYear(c)); */
  if (IsLeapYear(c)==1) DaysInMonths[1]++;

  if (!((b>=1) && (b<=12)))
  {
    printf("\nОшибка, такого месяца не бывает! Адью!");
    getch ();
    return ;
  }

  if (!((a>=1) && (a<=DaysInMonths[b-1])))
  {
    printf("\nОшибка, в месяце %d %d года не бывает столько дней! Адью!",b,c);
    getch ();
    return ;
  }


  kDays = 0;

  for (i=0; i<(b-1);i++)  kDays += DaysInMonths[i];
  kDays += (a-1);

  printf("\nКоличество дней с 1.01.%d равно %d",c, kDays);

  printf("\nЧисло полных месяцев с 1.01.%d равно %d",c, (b-1));

  getch ();

}

а вот со второй частью задачи всё странно...

дело в том, что число полных месяцев, которые прошли с 1.01.c до даты a.b.c. это ВСЕГДА (b-1).
Т.е. от введённого номера месяца отнять единичку и всё - получится число полных месяцев!
в Си это будет выглядеть так:
Код:
  printf("\nЧисло полных месяцев с 1.01.%d равно %d",c, (b-1));

Последний раз редактировалось Serge_Bliznykov; 14.07.2011 в 17:08. Причина: проверку на количество дней в месяце добавил
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа КАЛЕНДАРЬ Ромка-12 Помощь студентам 12 02.03.2012 11:57
Календарь и БД svyatoi777 Помощь студентам 4 21.01.2011 20:40
программа календарь Sh@rky Общие вопросы Delphi 5 17.12.2010 19:07
Календарь ruavia3 Microsoft Office Excel 6 16.04.2009 15:32
Программа - календарь Batonchik Помощь студентам 1 18.01.2009 05:36