Вниз  Разбор интересных задач
- 8.12.2011 / 15:17
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
ScRoLiS (04.12.2011/16:22)По просьбе Ксакепа:Жомарт прочитал в гороскопе, что если 7-ое число месяца приходится на вторник, то этот день является счастливым. Его заинтересовал вопрос, сколько счастливых дней будет между задаответ есть. Только пока что без комментариев. Стоит выкладывать?
- 8.12.2011 / 15:28
XakepPRO
  Модератор форума

XakepPRO 
Сейчас: Offline
Bobrosoft, конечно стоит.
- 8.12.2011 / 15:34
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
уже откомментировал :)
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6.  
  7. namespace Task_4
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             string dateStart; //сюда занесем первую строку файла input.txt
  14.             string dateEnd; //сюда - вторую строку
  15.             int numOfLuckyDays=0; //число счастливых дней
  16.             using (StreamReader task = File.OpenText("input.txt")) //открываем файл
  17.             {
  18.                 //считываем строки
  19.                 dateStart=task.ReadLine();
  20.                 dateEnd=task.ReadLine();
  21.             }
  22.             //переменные для членов даты
  23.             int dayStart, monthStart, yearStart; //переменные начальной даты
  24.             int dayEnd, monthEnd, yearEnd; //конечной
  25.             Console.WriteLine("Привет!");
  26.             //извлекаем члены даты в числовые переменные. Функция Substring() выдает подстроку (в нашем случае, в каждой строке три подстроки: день, месяц, год)
  27.             dayStart = Int32.Parse(dateStart.Substring(0,2));
  28.             monthStart = Int32.Parse(dateStart.Substring(3,2));
  29.             yearStart = Int32.Parse(dateStart.Substring(6, 4));
  30.             dayEnd = Int32.Parse(dateEnd.Substring(0,2));
  31.             monthEnd = Int32.Parse(dateEnd.Substring(3,2));
  32.             yearEnd = Int32.Parse(dateEnd.Substring(6, 4));
  33.             for (int dayOfWeek = 1;; dayStart++) //начинаем цикл. Вводим новую переменную - день недели (1 - понедельник, 2 - вторник и т.д.)
  34.             {
  35.                 if ((dayStart==dayEnd) && (monthStart==monthEnd) && (yearStart==yearEnd)) break; //если мы достигли конечной даты, цикл завершается
  36.                 if (dayStart == 7 && dayOfWeek == 2) numOfLuckyDays++; //если день - вторник 7-го числа, увеличиваем кол-во счастливых дней на единицу
  37.                 if (monthStart == 2 && ((dayStart == 29 && (yearStart % 4 == 0 && (yearStart % 100 != 0 || yearStart % 400 == 0))) || (dayStart == 28 && (yearStart % 4 != 0 && (yearStart % 100 == 0 || yearStart % 400 != 0)))))
  38.                 {
  39.                     dayStart = 1;
  40.                     monthStart++;
  41.                     if (dayOfWeek < 7) dayOfWeek++;
  42.                     else dayOfWeek = 1;
  43.                 } //эта громоздкая конструкция определяет, не пора ли переносить месяц с февраля на март с учетом високосных годов
  44.                 if (dayStart == 30 && ((monthStart % 2 == 0 && monthStart < 8) || (monthStart % 2 == 1 && monthStart > 7)))
  45.                 {
  46.                     dayStart = 1;
  47.                     monthStart++;
  48.                     if (dayOfWeek < 7) dayOfWeek++;
  49.                     else dayOfWeek = 1;
  50.                 } //если сейчас 30-е и 30-дневный месяц, переносим месяц
  51.                 if (dayStart == 31)
  52.                 {
  53.                     dayStart = 1;
  54.                     monthStart++;
  55.                     if (monthStart == 13) { yearStart++; monthStart = 1; }
  56.                     if (dayOfWeek < 7) dayOfWeek++;
  57.                     else dayOfWeek = 1;
  58.                 } //если сейчас 31-е, переносим месяц
  59.                 if (dayOfWeek < 7) dayOfWeek++;
  60.                 else dayOfWeek = 1;
  61.                 //увеличиваем день недели
  62.             }
  63.             Console.WriteLine("Число счастливых дней равно {0}",numOfLuckyDays);
  64.             Console.ReadLine();
  65.         }
  66.     }
  67. }


Изменено P@bloid (8.12 / 15:44) (всего 1 раз)
- 8.12.2011 / 15:50
XakepPRO
  Модератор форума

XakepPRO 
Сейчас: Offline
Bobrosoft, :hack:
Собственно говоря, пока шел из школы тоже нашел решение, подобное этому.
- 8.12.2011 / 15:58
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
проверял по календарю - все даты сходятся :)
- 8.12.2011 / 16:02
Alsawin
  Пользователь

Alsawin 
Сейчас: Offline
это на чём написано?
:ps: не надо писать извкекаем члены
- 8.12.2011 / 16:03
Bobrosoft
  Пользователь

Bobrosoft 
Сейчас: Offline
Alsawin, это на С#
- 18.12.2011 / 14:20
XakepPRO
  Модератор форума

XakepPRO 
Сейчас: Offline
Прилагаю задачку на новогоднюю тему :-D


Прикрепленные файлы:
DSC02859.jpg (494.65 кб.) Скачано 147 раз
- 18.12.2011 / 15:57
XakepPRO
  Модератор форума

XakepPRO 
Сейчас: Offline
Неужели она столь сложная? Криптография.
- 18.12.2011 / 16:03
LPzhelud
  Пользователь

LPzhelud 
Сейчас: Offline
XakepPRO, Всем пофиг. Я, например, программист, а не математик. Предложи интересную задачу, и мы решим
__________________
 Эль Презеденте
Наверх  Всего сообщений: 751
Фильтровать сообщения
Поиск по теме
Файлы топика (34)