Болты и гайки

      Комментарии к записи Болты и гайки отключены

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 5 мес., 1 неделя назад.

  • Автор
    Сообщения
  • #3331

    Задача взята с acmp.ru:

    (Время: 1 сек. Память: 16 Мб Сложность: 17%)

    Вновь созданная фирма купила заброшенные склады на окраине города. Новому заведующему складами поручили произвести учёт в короткие сроки. Всё шло хорошо, пока случайно не рассыпали контейнеры с болтами и гайками на каждом складе, после чего собрали их в общие (для болтов и гаек) контейнеры, потеряв при этом несколько деталей.
    Помогите оценить нанесённый ущерб на каждом складе, приняв во внимание, что, помимо потерянных деталей, болт (или гайка) считается непригодным, если он не имеет соответствующей гайки (или болта).

    Входные данные:
    Во входном файле INPUT.TXT описано текущее положение на складе. В первой строке через пробел записаны три целых числа: k1, l1, m1 – начальное число болтов (100<=k1<=30000, k1 кратно 100), процент потерянных деталей (0<=l1<=100) и стоимость одного болта (1<=m1<=100) соответственно. Во второй строке через пробел записаны также три целых числа: k2, l2, m2 – начальное число гаек (100<=k2<=30000, k2 кратно 100), процент потерянных деталей (0<=l2<=100) и стоимость одной гайки (1<=m2<=100) соответственно.

    Выходные данные:
    В выходной OUTPUT.TXT выведите одно целое число – размер ущерба.

    Алгоритм решения задачи в виде блок-схемы:

    Исходный код решения на C#:

    using System;
    using System.IO;
    
    namespace _bolti_gaiki
    {
      class Program
      {
        static void Main(string[] args)
        {
          int[] stroka_1 = new int[3];
          int[] stroka_2 = new int[3];
          int unpaired_details = 0; 
          int cost_damage_bolt = 0; 
          int cost_damage_nut = 0; 
          int balance_bolt = 0; 
          int balance_nut = 0;
    
          StreamReader input_file = new StreamReader("input.txt");
          StreamWriter output_file = new StreamWriter("output.txt");
    
          stroka_1 = Array.ConvertAll<string,int>(input_file.ReadLine().Split(), Convert.ToInt32);
          stroka_2 = Array.ConvertAll<string, int>(input_file.ReadLine().Split(), Convert.ToInt32);
    
          cost_damage_bolt = (stroka_1[0] / 100) * stroka_1[1] * stroka_1[2];
          cost_damage_nut = (stroka_2[0] / 100) * stroka_2[1] * stroka_2[2];
          balance_bolt = stroka_1[0] - (stroka_1[0] / 100) * stroka_1[1];
          balance_nut = stroka_2[0] - (stroka_2[0] / 100) * stroka_2[1];
    
          if (balance_bolt > balance_nut) { 
            unpaired_details = (balance_bolt - balance_nut) * stroka_1[2]; 
          }
          else { 
            unpaired_details = (balance_nut - balance_bolt) * stroka_2[2]; 
          }
    
          output_file.WriteLine(cost_damage_bolt + cost_damage_nut + unpaired_details);
          input_file.Close();
          output_file.Close();
        }
      }
    }

    В этом коде переменные:

    1. stroka_1 и stroka_2 задают массивы целого типа для чтения первой и второй строки из исходного файла;
    2. unpaired_details хранит количество непарных деталей;
    3. cost_damage_bolt и cost_damage_nut хранят стоимости ущерба потерянных болтов и гаек№
    4. balance_bolt и balance_nut — количество оставшихся болтов и гаек
    5. input_file — экземпляр StreamReader через который осуществляется чтение из файла;

    В программе последовательно выполняется:

    • расчет стоимости ущерба потерянных болтов и гаек;
    • расчет количеств оставшихся болтов и гаек;
    • определение деталей оставшихся без пары и расчет их стоимости (if (balance_bolt > balance_nut)

Для ответа в этой теме необходимо авторизоваться.