Задачка в С++ на Ветвление

  • Автор темы Rivass
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Rivass

Гость
#1
Вводятся координаты точки на плоскости (X и Y, вещественные числа). Вывести номер координатной четверти, в которой расположена эта точка. Если точка нахо-дится в начале координат или на одной из осей, то вывести соответствующее сооб-щение.
C++:
	#include <stdio.h>
float X,Y;
void main() {
scanf_s("%f%f",&X,&Y);
if (X>0)
if(Y>0)
printf ("1");
else
if (X>0)
if(Y<0)
printf ("4");
else
if (X>0)
if(Y=0)
printf ("X axis");
else
if(X<0)
if(Y<0)
printf ("3");
else
if(X<0)
if(Y>0)
printf ("2");
else
if(X<0)
if(Y=0)
printf ("X axis");
else
if(X=0)
if(Y>0)
printf ("Y axis");
else
if(X=0)
if(Y<0)
printf ("Y axis");
else
if(X=0)
if(Y=0)
printf ("Beginning");
else
printf ("Error");
}
Работает только эта область
C++:
if (X>0)
if(Y>0)
printf ("1");
else
if (X>0)
if(Y<0)
printf ("4");
... Прошу помочь, в чем проблема, как лучше решить задачу?
 
D

domny

Гость
#2
Решу вам эту задачку за небольшое вознаграждение. Если интересует, стучите: 648964446
 

DarkKnight

Well-Known Member
01.08.2010
653
0
#3
Смотри тут все очень просто, если пока плохо ориентируешься открывай теги ({}), так будет удобнее для твоего восприятия...
к примеру рассмотрим твой код

C++:
	#include <stdio.h>
float X,Y;
void main() {
scanf_s("%f,%f",&X,&Y); // "%f,%f" - суда добавим запятую :-) Что бы как то дать понять где какая координата :-)
//И смотри какая охинея у тебя выходит
if (X>0) //Если Х>0 (1*)
{
if(Y>0) // И Y>0
{
printf ("1"); //Выводим "1"
}
else // Если Х>0, но Y<=0 ТО (2*)
{
if (X>0) //Если Х>0 (!!! у нас уже это по условию есть см. 1* 
{
if(Y<0) //Если Y < 0
{
printf ("4"); //Выводим "4"
}
else // Если Y>=0 (но по условию см. 2* Y<=0) =>это условие значит ЕСЛИ Y=0 и X>0, т.е. весь алгоритм который идет ниже должен соответст. этим усл.
{
if (X>0) //Эта строка уже значит ЕСЛИ X>0 и Y=0, ТО
{
if(Y=0) //Если Y=0.... ТУТ ты ПРИСВАИВАЕШЬ Y значение 0(!!!), для сравенения используй "==", но ошибки нет;-) Так как по условию тут уже Y=0
{
printf ("X axis"); //Вывести лежим на Х
}
else //дословно если Y <> 0, а этого уже не может быть (!!!) все что ниже уже не выполняется (!!!)
{
if(X<0)
{
if(Y<0)
{
printf ("3");
}
else
{
if(X<0)
{
if(Y>0)
{
printf ("2");
}
else
{
if(X<0)
{
if(Y=0)
{
printf ("X axis");
}
else
{
if(X=0)
{
if(Y>0)
{
printf ("Y axis");
}
else
{
if(X=0)
{
if(Y<0)
{
printf ("Y axis");
}
else
{
if(X=0)
{
if(Y=0)
{
printf ("Beginning");
}
else
{
printf ("Error");
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
 

DarkKnight

Well-Known Member
01.08.2010
653
0
#4
Рисуй скобки, так будет удобнее вообщем, как я понимаю....
Попробуй сам написать, если не получиться пиши сюда....

И советик для этой задачи... У тебя два аттрибута (Х и У), используй их оба в условиях
например :

Без ELSEов:
C++:
if (X == 0 && Y == 0 ) // Х = 0 и Y = 0
{
printf("Start Coord");
}

if (X == 0 && Y != 0) //X = 0 , Y не равно 0
{
printf ("Point from Y");
}

if (X != 0 && Y == 0) //X не равно 0, Y = 0
{
printf ("Point from X");
}

if (X >0 && Y > 0) // X и Y Больше нуля
{
printf ("Point from 1");
}
Или все же с ELSEом
C++:
	if (X == 0 && Y == 0) //Если X = 0 и Y = 0
{
printf ("Start Coord");
}
else //Иначе (если Х и Y <> 0) (1*)
{
if (X == 0 || Y == 0) // Если ИЛИ X ИЛИ Y равны 0
{
if (X == 0) //Если X равен 0 (Y в этом случае точно не 0)
{
printf("Point From Y"); 
}
else // Иначе (Значит нулю у нас равен именно Y)
{
printf("Point From X");
}
}
else // Иначе от (1*) (Если ни Х ни Y не равны нулю)
{ // * кстати тут удобнее уже сделать без elsов
if (X > 0) //Если X - положителен (2*)
{
if (Y > 0) //и при этом Y тоже положителен
{
printf("Point From 1");
}
else //А тут если X положителен, но Y отрицателен
{
printf ("Point FROM 4");
}
}
else // Иначе от 2* (Если все же X отрицателен)
{
if (Y > 0) //При положительном Y
{
printf("Point From 2");
}
else // При отрицательном
{
printf ("Point FROM 3");
}
}
}
}
}
 

DarkKnight

Well-Known Member
01.08.2010
653
0
#6
2vital: Вит, а что такого ужастного??? Ты пойми, иногда студентов просто переклинивает, и без дословного объяснения мозги на место не станут, и ни всегда это показатель бездарности того или иного интивидума :)....
У меня такая тема была с реляционными БД :) Вот реально, ни как не мог понять их смысл и за чем они такие нужны, а щас вообще наверное контр. таблицу даже наверное составить не смогу))) как минимум ее на 3 таба разделю)))
 
R

Rivass

Гость
#7
Огромное человеческое спасибо, теперь я уже разобрался и понял как делать))
 
Статус
Закрыто для дальнейших ответов.