Loading...
DarinDoichev avatar DarinDoichev -1 Точки

Задача от Complex Conditional Statements - Programing Basics

Задачата e за точка върху страна на правоъгълник
Това ми е кода:
double x1 = double.Parse(Console.ReadLine());
double y1 = double.Parse(Console.ReadLine());
double x2 = double.Parse(Console.ReadLine());
double y2 = double.Parse(Console.ReadLine());
double x = double.Parse(Console.ReadLine());
double y = double.Parse(Console.ReadLine());
if (x == x1 || x == x2 && y >= y1 && y <= y2 ||
y == y1 || y == y2 && x >= x1 && x <= x2)
{
Console.WriteLine("Border");
}
else
{
Console.WriteLine("Inside / Outside");
}
}
с примерите от упражненията работи, но когато я пусна в Judge ми дава 77/100 точки. Грешката ми е в отговорите. При тест програмата ми изкарва като мой отговор Border вместо Inside / Outside. Това са примерните стойности които ми пуска Judge и има грешка с тях 2; -3; 12; 3; 2; 4;

Не мога да схвана къде съм сбъркал.

Тагове:
0
Programming Basics
annsta avatar annsta 305 Точки

Според мен, ако сложиш скоби в if-а и отделиш логически условията, ще се получи. Например така:

if ((x == x1 || x == x2) && (y >= y1 && y <= y2))       //point on vertical border
   Console.WriteLine("Border");
else if ((y == y1 || y == y2) && (x <= x2 && x >= x1))  //point on horizontal border
   Console.WriteLine("Border");
else
   Console.WriteLine("Inside / Outside");

 

2
05/04/2016 23:28:32
DarinDoichev avatar DarinDoichev -1 Точки

Да, стана.
Това ебила причината, че не съм ги отделил и взима с приеритет може би нещо което не трябва....:)

Благодаря за помоща....;)

0
borislav9212 avatar borislav9212 745 Точки

    На мен  ми беше по лесно да намеря дали точката е Inside / Outside, ако ли не значи е Border.

        bool inside = x > x1 && x < x2 && y > y1 && y < y2;
        bool outside = x  < x1 || x > x2 || y < y1 || y > y2;
        if (outside || inside)
         Console.WriteLine("Inside / Outside");
        elsе
                Console.WriteLine("Border");

3
CosmicSalad avatar CosmicSalad 3 Точки

Колеги, на тази задача получанам 55/100. Ще може ли някой от вас да ми обясни грешката? 

Source Code: 

 

using System;

class pointOnBorder
{
   static void Main()
   {
      var x1 = decimal.Parse(Console.ReadLine());
    
      var y1 = decimal.Parse(Console.ReadLine());
    
      var x2 = decimal.Parse(Console.ReadLine());
    
      var y2 = decimal.Parse(Console.ReadLine());
    
      var x = decimal.Parse(Console.ReadLine());
    
      var y = decimal.Parse(Console.ReadLine());
   
      if (x1 < x2 && y1 < y2)
      {
        if (x == x1 || x == x2) 
        {
          if (y >= y1 && y <= y2)
          {
            Console.WriteLine("Border");
          }
        }
      
       else if (y == y1 || y == y2)
       {
          if (x >= x1 && x <= x2)
         {
           Console.WriteLine("Border"        );
         }
       }
   
      else
      {
       Console.Write("Inside  / Outside");
      }
   }
 }
}

 

Бележка: В judge системата програмата е преминала всички тестове за изход "Border".

Проблемът се състой в това, че програмата ми "игнорира" последната else клауза и няма никакъв изход. 

 Благодаря предварително :)

0
s_sotirova avatar s_sotirova 4 Точки

Проверката x1 < x2 и y1 < y2, т.е. първия if е гарантирано в условието на задачата, може да го махнеш. Провери си посления else, да не е под if за гарантираната проверка. В този случай ще ти "игнорира" else, с който изписваш "Inside / Outside".

0
CosmicSalad avatar CosmicSalad 3 Точки

Благодаря за отговора! 

 Относно задачата, доколкото виждам else е под затварящата скоба на последния else if. Нямам никаква идея защо тази клауза не се изпълнява. Между другото има ли някакъв начин да се провери дали дадена стойност е включена в масив от данни в C#? В Python можеше да се провери с in , но в C# като пробвах не стана.

  

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.