Advertisement
sergezhu

Untitled

Mar 30th, 2023
604
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.07 KB | None | 0 0
  1. namespace ConsoleApp1;
  2.  
  3. using System.Text;
  4.  
  5. public class Task04
  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 columnsCount = Math.Min( zoneSizeX / imageSizeX, desiredColumnsCount );
  36.             bool hasEnoughSpaceByX = columnsCount == desiredColumnsCount;
  37.  
  38.             int imagesFullRowsCount = imagesCount / columnsCount;
  39.             int inLastRowImagesCount = imagesCount % columnsCount;
  40.             bool isAdditionalRowRequired = inLastRowImagesCount > 0;
  41.             int imagesRowsTotalCount = imagesFullRowsCount + (isAdditionalRowRequired ? 1 : 0);
  42.  
  43.             int zoneRowsMaxCount = zoneSizeY / imageSizeY;
  44.             bool hasEnoughSpaceByY = imagesRowsTotalCount <= zoneRowsMaxCount;
  45.            
  46.             bool hasEnoughSpace = hasEnoughSpaceByX && hasEnoughSpaceByY;
  47.  
  48.             int fitRowsCount = Math.Min( imagesRowsTotalCount, zoneRowsMaxCount );
  49.             bool isLastFitRowFull = imagesRowsTotalCount > zoneRowsMaxCount || isAdditionalRowRequired == false;
  50.             int inRowsImagesCount = isLastFitRowFull
  51.                 ? fitRowsCount * columnsCount
  52.                 : (fitRowsCount - 1) * columnsCount + inLastRowImagesCount;
  53.            
  54.             int remainImagesCount = Math.Max( 0, imagesCount - inRowsImagesCount );
  55.  
  56.             string resultText;
  57.            
  58.             if ( hasEnoughSpace )
  59.             {
  60.                 resultText = $"Места хватит, все ок, влезут все {fitRowsCount} строк, содержащие {imagesCount} картинок";
  61.             }
  62.             else if(hasEnoughSpaceByX)
  63.             {
  64.                 resultText = $"Места недостаточно, влезут только {fitRowsCount} строк, содержащие {inRowsImagesCount} картинок, " +
  65.                              $"останется {remainImagesCount} картинок";
  66.             }
  67.             else
  68.             {
  69.                 resultText = $"Слишком узкая зона из {columnsCount} столбцов, " +
  70.                              $"влезет {0} строк (с желаемым количеством картинок равным {desiredColumnsCount} в каждой), " +
  71.                              $"останется {remainImagesCount} картинок";
  72.             }
  73.  
  74.             Console.WriteLine( $"{resultText} \n" );
  75.             Console.WriteLine("Continue? Enter 'n' for exit");
  76.             var continueAnswer = Console.ReadLine();
  77.             var exitAnswer = "n";
  78.  
  79.             canExit = string.Equals( continueAnswer, exitAnswer );
  80.         }
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement