
Есть следующая прога. задание - есть прямоугольнихи на плоскости стороны // осям даны координаты
левых нижних углов прямоугольников и даны их ширина и высота нужно вывести координаты прямоугольника котрый задется пересечением этих прямоугольников и общий образованный двумя прямоугольниками прямоугольник using System; namespace ConsoleApp8 { class Program { static void Main(string[] args) { int x1, y1, a1, b1, x2, y2, a2, b2, k1, k2, k3, k4, j1, j2, j3, j4; //a - длина по х Console.WriteLine("введите сначала Х потом У потм длину по Х потом по У"); x1 = Console.Read(); y1 = Console.Read(); a1 = Console.Read(); b1 = Console.Read(); x2 = Console.Read(); y2 = Console.Read(); a2 = Console.Read(); b2 = Console.Read(); j1 = 0; j2 = 0; j3 = 0; j4 = 0; k1 = 0; k2 = 0; k3 = 0; k4 = 0;// if (x1 < x2 && x1 + a1 > x2 && y1 < y2 && y1 + b1 > y2) { Console.WriteLine("пересекаются"); if(x1>x2) { k1 = x2; k2 = x1; k3 = x2 + a2; k4 = x1 + a1; } else { k1 = x1; k2 = x2; k3 = x1 + a1; k4 = x2 + a2; } // if (y1 > y2) { j1 = y2; j2 = y1; j3 = y2 + b2; j4 = y1 + b1; } else { j1 = y1; j2 = y2; j3 = y1 + b1; j4 = y2 + b2; } } Console.WriteLine("координаты внутреннего " + k2 + " " + j2 + " ;" + k2 + " " + j3 + " ;" + k3 + " " + j3 + "; " + k3 + " " + j2); Console.WriteLine("координаты внешнего " + k1 + " " + j1 + "; " + k1 + " " + j4 + "; " + k4 + " " + j4 + "; " + k4 + " " + j1); Console.ReadLine(); } } } работает ,но работает не корректно. работа выполнена на си шарпе необходимо было сделать задачу с помощью классов но я обошелся без них и сделал по тупому обьясните почему после ввода вроде бы 3 идентификатора все хренрово

Ответы на вопрос

Длина - а
Ширина - б
Высота - h



Понимаю вашу проблему. Похоже, основная проблема вашего кода связана с тем, что вы используете неправильный метод Console.Read()
для считывания входных значений. Метод Console.Read()
считывает только один символ из входного потока (stdin) и возвращает его как целое число (int). В этом случае он читает символы для ввода X, Y, длины по X и длины по Y для двух прямоугольников. Но такой подход некорректен для ввода чисел, состоящих из нескольких цифр.
Вам следует использовать Console.ReadLine()
, чтобы считывать строку ввода, а затем преобразовывать эту строку в целое число с помощью int.Parse()
или int.TryParse()
.
Я поправил ваш код, используя Console.ReadLine()
и int.Parse()
:
csharpusing System;
namespace ConsoleApp8
{
class Program
{
static void Main(string[] args)
{
int x1, y1, a1, b1, x2, y2, a2, b2, k1, k2, k3, k4, j1, j2, j3, j4;
Console.WriteLine("Введите сначала X, потом Y, потом длину по X, потом по Y для первого прямоугольника:");
x1 = int.Parse(Console.ReadLine());
y1 = int.Parse(Console.ReadLine());
a1 = int.Parse(Console.ReadLine());
b1 = int.Parse(Console.ReadLine());
Console.WriteLine("Введите сначала X, потом Y, потом длину по X, потом по Y для второго прямоугольника:");
x2 = int.Parse(Console.ReadLine());
y2 = int.Parse(Console.ReadLine());
a2 = int.Parse(Console.ReadLine());
b2 = int.Parse(Console.ReadLine());
j1 = 0;
j2 = 0;
j3 = 0;
j4 = 0;
k1 = 0;
k2 = 0;
k3 = 0;
k4 = 0;
if (x1 < x2 + a2 && x1 + a1 > x2 && y1 < y2 + b2 && y1 + b1 > y2)
{
Console.WriteLine("Прямоугольники пересекаются.");
if (x1 > x2)
{
k1 = x2;
k2 = x1;
k3 = x2 + a2;
k4 = x1 + a1;
}
else
{
k1 = x1;
k2 = x2;
k3 = x1 + a1;
k4 = x2 + a2;
}
if (y1 > y2)
{
j1 = y2;
j2 = y1;
j3 = y2 + b2;
j4 = y1 + b1;
}
else
{
j1 = y1;
j2 = y2;
j3 = y1 + b1;
j4 = y2 + b2;
}
}
else
{
Console.WriteLine("Прямоугольники не пересекаются.");
}
Console.WriteLine("Координаты внутреннего прямоугольника: " + k2 + " " + j2 + "; " + k2 + " " + j3 + "; " + k3 + " " + j3 + "; " + k3 + " " + j2);
Console.WriteLine("Координаты внешнего прямоугольника: " + k1 + " " + j1 + "; " + k1 + " " + j4 + "; " + k4 + " " + j4 + "; " + k4 + " " + j1);
Console.ReadLine();
}
}
}
Теперь ваш код должен корректно считывать входные значения и находить пересечение прямоугольников.


Похожие вопросы

Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili