Advertisement
sergezhu

Untitled

Apr 1st, 2023
606
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.19 KB | None | 0 0
  1. namespace ConsoleApp1;
  2.  
  3. using System.Text;
  4.  
  5. public class Task04_02
  6. {
  7.     public void Run()
  8.     {
  9.         Console.InputEncoding = Encoding.Unicode;
  10.         Console.OutputEncoding = Encoding.Unicode;
  11.  
  12.         bool canExit = false;
  13.  
  14.         while ( canExit == false )
  15.         {
  16.             Console.WriteLine( "Введите размеры зоны" );
  17.             Console.Write( "X : " );
  18.             int zoneSizeX = int.Parse( Console.ReadLine() );
  19.  
  20.             Console.Write( "Y : " );
  21.             int zoneSizeY = int.Parse( Console.ReadLine() );
  22.             Console.WriteLine( $"Размеры зоны: {zoneSizeX} x {zoneSizeY}" );
  23.  
  24.             Console.WriteLine( "Введите размеры места под одну картину:" );
  25.             Console.Write( "X : " );
  26.             int imageSizeX = int.Parse( Console.ReadLine() );
  27.  
  28.             Console.Write( "Y : " );
  29.             int imageSizeY = int.Parse( Console.ReadLine() );
  30.  
  31.             Console.WriteLine( "Введите количество картин, например 52:" );
  32.             int imagesCount = int.Parse( Console.ReadLine() );
  33.  
  34.             int desiredColumnsCount = 3;
  35.             int zoneColumnsCount = Math.Min( zoneSizeX / imageSizeX, desiredColumnsCount );
  36.             int zoneRowsCount = zoneSizeY / imageSizeY;
  37.             int zoneCapacity = zoneColumnsCount * zoneRowsCount;
  38.             int remainedImages = Math.Max(0, imagesCount - zoneCapacity);
  39.             int inRowsImagesCount = imagesCount - remainedImages;
  40.            
  41.             int imagesFullRowsCount = imagesCount / zoneColumnsCount;
  42.             int remainedImagesInLastRow = imagesCount % zoneColumnsCount;
  43.             bool isAdditionalRowRequired = remainedImagesInLastRow > 0;
  44.             int totalRowsCount = imagesFullRowsCount + (isAdditionalRowRequired ? 1 : 0);
  45.  
  46.             bool hasEnoughSpaceForDesiredColumns = zoneColumnsCount == desiredColumnsCount;
  47.             bool hasEnoughSpaceForAnyColumnsCount = remainedImages == 0;
  48.  
  49.             string resultText;
  50.  
  51.             if ( hasEnoughSpaceForDesiredColumns )
  52.             {
  53.                 if( hasEnoughSpaceForAnyColumnsCount )
  54.                     resultText = $"Места хватит, все ок, влезут все {totalRowsCount} строк, содержащие {inRowsImagesCount} картинок";
  55.                 else
  56.                     resultText = $"Места недостаточно, влезут только {zoneRowsCount} строк, содержащие {inRowsImagesCount} картинок, " +
  57.                                  $"останется {remainedImages} картинок";
  58.             }
  59.             else
  60.             {
  61.                 if ( hasEnoughSpaceForAnyColumnsCount )
  62.                     resultText = $"Места недостаточно, чтобы разместить по {desiredColumnsCount} картинок в ряду. " +
  63.                                  $"Но без учета этого требования влезут все {totalRowsCount} строк, содержащие {inRowsImagesCount} картинок";
  64.                 else
  65.                     resultText = $"Места недостаточно для размещения всех картинок, влезут только {zoneRowsCount} строк, " +
  66.                                  $"содержащие {inRowsImagesCount} картинок, останется {remainedImages} картинок";
  67.             }
  68.  
  69.             Console.WriteLine( $"{resultText} \n" );
  70.             Console.WriteLine("Continue? Enter 'n' for exit");
  71.             string continueAnswer = Console.ReadLine();
  72.             string exitAnswer = "n";
  73.  
  74.             canExit = string.Equals( continueAnswer, exitAnswer );
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement