Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace ConsoleApp1;
- using System.Text;
- public class Task04
- {
- public void Run()
- {
- Console.InputEncoding = Encoding.Unicode;
- Console.OutputEncoding = Encoding.Unicode;
- bool canExit = false;
- while ( canExit == false )
- {
- Console.WriteLine( "Введите размеры зоны" );
- Console.Write( "X : " );
- int zoneSizeX = int.Parse( Console.ReadLine() );
- Console.Write( "Y : " );
- int zoneSizeY = int.Parse( Console.ReadLine() );
- Console.WriteLine( $"Размеры зоны: {zoneSizeX} x {zoneSizeY}" );
- Console.WriteLine( "Введите размеры места под одну картину:" );
- Console.Write( "X : " );
- int imageSizeX = int.Parse( Console.ReadLine() );
- Console.Write( "Y : " );
- int imageSizeY = int.Parse( Console.ReadLine() );
- Console.WriteLine( "Введите количество картин, например 52:" );
- int imagesCount = int.Parse( Console.ReadLine() );
- int desiredColumnsCount = 3;
- int columnsCount = Math.Min( zoneSizeX / imageSizeX, desiredColumnsCount );
- bool hasEnoughSpaceByX = columnsCount == desiredColumnsCount;
- int imagesFullRowsCount = imagesCount / columnsCount;
- int inLastRowImagesCount = imagesCount % columnsCount;
- bool isAdditionalRowRequired = inLastRowImagesCount > 0;
- int imagesRowsTotalCount = imagesFullRowsCount + (isAdditionalRowRequired ? 1 : 0);
- int zoneRowsMaxCount = zoneSizeY / imageSizeY;
- bool hasEnoughSpaceByY = imagesRowsTotalCount <= zoneRowsMaxCount;
- bool hasEnoughSpace = hasEnoughSpaceByX && hasEnoughSpaceByY;
- int fitRowsCount = Math.Min( imagesRowsTotalCount, zoneRowsMaxCount );
- bool isLastFitRowFull = imagesRowsTotalCount > zoneRowsMaxCount || isAdditionalRowRequired == false;
- int inRowsImagesCount = isLastFitRowFull
- ? fitRowsCount * columnsCount
- : (fitRowsCount - 1) * columnsCount + inLastRowImagesCount;
- int remainImagesCount = Math.Max( 0, imagesCount - inRowsImagesCount );
- string resultText;
- if ( hasEnoughSpace )
- {
- resultText = $"Места хватит, все ок, влезут все {fitRowsCount} строк, содержащие {imagesCount} картинок";
- }
- else if(hasEnoughSpaceByX)
- {
- resultText = $"Места недостаточно, влезут только {fitRowsCount} строк, содержащие {inRowsImagesCount} картинок, " +
- $"останется {remainImagesCount} картинок";
- }
- else
- {
- resultText = $"Слишком узкая зона из {columnsCount} столбцов, " +
- $"влезет {0} строк (с желаемым количеством картинок равным {desiredColumnsCount} в каждой), " +
- $"останется {remainImagesCount} картинок";
- }
- Console.WriteLine( $"{resultText} \n" );
- Console.WriteLine("Continue? Enter 'n' for exit");
- var continueAnswer = Console.ReadLine();
- var exitAnswer = "n";
- canExit = string.Equals( continueAnswer, exitAnswer );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement