A1. Целочисленная арифметика. Простейшие задачи

Напишите в комментарии к этой записи консольные приложения для решения этих задач, указав код задачи.
А вот и первое решение от Никиты.

Задачи

A1.1. Дано расстояние в сантиметрах. Найти число полных метров в нем.
A1.2. Дана масса в килограммах. Найти число полных центнеров в ней.
A1.3. Дана масса в килограммах. Найти число полных тонн в ней.
A1.4. Дано расстояние в метрах. Найти число полных километров в нем.
A1.5. С некоторого момента прошло 234 дня. Сколько полных недель прошло за этот период?
A1.6. С начала суток прошло n секунд. Определить:
а) сколько полных часов прошло с начала суток;
б) сколько полных минут прошло с начала очередного часа;
в) сколько полных секунд прошло с начала очередной минуты.
A1.7. Дан прямоугольник с размерами 543 х 130 мм. Сколько квадратов со стороной 130 мм можно отрезать от него?
A1.8. Дано целое число k (1 ≤ k ≤ 365). Присвоить целочисленной величине n значение 1, 2, …, 6 или 0 в зависимости от того, на какой день недели (понедельник, вторник, …, субботу или воскресенье) приходится k-й день года, в котором 1 января:
а) понедельник;
б) вторник;
в) d-й день недели (если 1 января — понедельник, то d=1, если вторник — d=2, …, если воскресенье — d=7).
A1.9. С начала 2020 года по некоторый день прошло n месяцев и 2 дня. Присвоить целочисленной величине x значение 1, 2, …, 11 или 12 в зависимости от того, каким месяцем (январем, февралем и т.п.) является месяц этого дня. Например, при n=3 значение х равно 4.

18 комментариев к “A1. Целочисленная арифметика. Простейшие задачи”

  1. Никита

    А 1.7.Дан прямоугольник с размерами 543 х 130 мм. Сколько квадратов со стороной 130 мм можно отрезать от него?
    Может кому полезно будет :) Ломал голову 1,5 часа

    double a,b,c;
    double areaPP, area;
    double x, y;
    int a1;           
    //Пользователь вводит стороны прямоугольника и квадрата
    Console.Write("Введи в 1-ю сторону прямоугольника: ");
    a = Convert.ToDouble(Console.ReadLine());
    Console.Write("Введи в 2-ю сторону прямоугольника: ");
    b = Convert.ToDouble(Console.ReadLine());
    Console.Write("Введи сторону квадрата: ");
    c = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine();
    //Условия вывода значений
    if ((a < c) | (b < c)) 
       Console.WriteLine("Невозможно вместить квадрат. Одна из сторон прямоугольника меньше стороны квадрата");
    else 
    {
       x = a % c;
       x = a - x;
       y = b % c;
       y = b - y;
       area = x * y;
       areaPP = c * c;
       a1 = (int)(area / areaPP);
       Console.WriteLine("В прямоугольнике помещается: {0} квадратов", a1);
    } 
    Console.ReadKey();
    1. Вячеслав Рычков

      Никита, не зря голову ломал :) . Зачет!
      Полезно то, что задача решена для произвольных чисел, а не только для заданных в условии задачи.

      То, что по ветке else, можно eще короче записать:

      x = (a - a % c) / c;
      y = (b - b % c) / c;
      Console.WriteLine("В прямоугольнике помещается: {0} квадратов", x*y);

      и не нужны будут переменные a1, area и areaPP.

    1. Вячеслав Рычков

      Никита! У Вас все еще впереди, не расстраивайтесь! Работайте, анализируйте программы других программистов, подмечайте, как они пишут код.

  2. Никита

    A1.8. Дано целое число k (1 ≤ k ≤ 365). Присвоить целочисленной величине n значение 1, 2, …, 6 или 0 в зависимости от того, на какой день недели (понедельник, вторник, …, субботу или воскресенье) приходится k-й день года, в котором 1 января:
    а) понедельник;
    б) вторник;
    в) d-й день недели (если 1 января — понедельник, то d=1, если вторник — d=2, …, если воскресенье — d=7).

    int k, n, d;
    int tr = 0;
    while (tr != 1)
    {
    //Пользователь вводит количество дней с начала года
       Console.Write("Введите количество дней, прошедших с начала года: ");
       k = Convert.ToInt32(Console.ReadLine());
       Console.WriteLine();
       do
       {
          Console.Write("Введите номер дня недели, с которого начинается год (от 1 до 7, если 1 - понедельник, 2 - вторник, ...) : ");
          d = Convert.ToInt32(Console.ReadLine());
       }  while ((d > 7) || (d < 1));           
       Console.WriteLine("   Ответ: ");
       n = (k + d) % 7- 1;
       if  (n == 0)
          Console.WriteLine("{0} день: \"Воскресенье\", если Вы нажали \"{1}\" ", k, d);
       else if (n == 1)
          Console.WriteLine("{0} день: \"Понедельник\", если Вы нажали \"{1}\" ", k, d);
       else if (n == 2)
          Console.WriteLine("{0} день: \"Вторник\", если Вы нажали \"{1}\" ", k, d);
       else if (n == 3)
          Console.WriteLine("{0} день: \"Среда\", если Вы нажали \"{1}\" ", k, d);
       else if (n == 4)
          Console.WriteLine("{0} день: \"Четверг\", если Вы нажали \"{1}\" ", k, d);
       else if (n == 5)
          Console.WriteLine("{0} день: \"Пятница\", если Вы нажали \"{1}\" ", k, d);
       else if (n == 6)
          Console.WriteLine("{0} день: \"Суббота\", если Вы нажали \"{1}\" ", k, d);
       Console.WriteLine();
       Console.Write("Чтобы закончить выполнение программы нажмите 1,\n" + "чтобы запустить цикл заново нажмите 0: ");
       tr = Convert.ToInt32(Console.ReadLine());
       Console.WriteLine();
    }
    Console.ReadKey();
    1. Вячеслав Рычков

      Никита!
      Немного исправил Ваш код. Отмечу:
      1) полезно, что сделали цикл многократного решения задачи.
      2) проверку ввода лучше делать в цикле do-while (см. код для проверки d).
      3) нахождение n через k и d лучше сделать так:
      n = (k + d) % 7 — 1;
      4) По условию n=0 соответствует воскресенью.
      5) Так как n — целое число, то удобнее конструкция switch-case.

      1. Никита

        Вячеслав, а есть такой способ, при котором я могу ввести число на одной строке и вывести какой-то другой результат на этой же строке, но немного дальше?

        1. Вячеслав Рычков

          Для консольного приложения — вряд ли. Проверил Console.Read() — все равно, пока Enter не нажал, ждет. Нажал Enter — переход на следующую строку. Но! Вы много видели сейчас консольных приложений? (этого много было в 50-80-х годах и начале 90-х прошлого века). Поэтому переходите на Windows-приложения, там можно ВСЕ. Например, изменение содержимого TextBox — это событие, которое может быть обработано.

  3. A1.1. Дано расстояние в сантиметрах. Найти число полных метров в нем.

    using System;
    namespace Lessons
    {
      class Program
      {
         static void Main(string[] args)
         {
            Console.WriteLine("Введите размер в сантиметрах ");
            double firstValue = double.Parse(Console.ReadLine());
            double result = (firstValue * 10);
            Console.WriteLine("Вот ваше число в метрах = "+ result);
            Console.ReadLine();
         }
      }
    }
    1. Вячеслав Рычков

      Сергей! Программа работает, но:
      1) В 1 см — 10 м?
      2) Если использовать целые числа, то проще так:

      Console.WriteLine("Введите размер в сантиметрах ");
      int first = int.Parse(Console.ReadLine());
      Console.WriteLine("Целое число метров - " + first / 100);

      Используется свойство целочисленного деления — отбрасываются (не округляются!) доли метра.

  4. A1.6. С начала суток прошло n секунд. Определить:

    Console.WriteLine("Сколько прошло секунд? ");
    double sec = double.Parse(Console.ReadLine());
    double hour = (sec / 3600);
    Console.WriteLine("Прошло "+ hour +" часов");
    Console.ReadLine();
    1. Вячеслав Рычков

      Сергей! Решите задачу до конца:
      а) полных часов, б) полных минут, в) полных секунд. Например:
      4000 = 1 час 6 минут 40 секунд!
      Используйте только целые числа, см. комментарии к Вашему первому решению. Успехов.

  5. Андрей

    A1.9. С начала 2020 года по некоторый день прошло n месяцев и 2 дня. Присвоить целочисленной величине x значение 1, 2, …, 11 или 12 в зависимости от того, каким месяцем (январем, февралем и т.п.) является месяц этого дня. Например, при n=3 значение х равно 4.
    Решение:

    using System;
    class HelloWorld 
    {
    static void Main() 
    {
       Console.WriteLine("сейчас 2020 год");
       Console.Write("номер последнего месяца = ");
       string[] month=new string[] {"Январь", "Февраль", "Март", "Aпрель", "Мaй", "Июнь", "Июль", "Aвгуст", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"};
       int n = Convert.ToInt32(Console.ReadLine()); // вводит номер месяца
       n%=12;
       Console.WriteLine("прошёл "+month[n-1]); // выводит предыдущий месяц
       Console.WriteLine("сейчас "+month[n]); // выводит текущий месяц
       Console.ReadKey();
    }
    }
  6. Никита

    А1.7.Дан прямоугольник с размерами 543 х 130 мм. Сколько квадратов со стороной 130 мм можно отрезать от него?

    int a = 543;
    int b = 130;
    int a1 = 130;
    // или вводим переменные
    int plochad = a * b; //узнаем площадь прямоугольника
    int plochad1 = Convert.ToInt32(Math.Pow(a1, 2)); // узнаем площадь квадрата
    int otvet = plochad / plochad1;//узнаем сколько квадратов помещается в прямогульник
    Console.WriteLine("Ответ: " + otvet);
    Console.ReadKey();
    1. Вячеслав Рычков

      Никита! Это Ваше решение, но есть уже решение другого Никиты и комментарии к ним, посмотрите.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх