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

Тема в разделе "C/C++/C#", создана пользователем Rivass, 3 окт 2010.

Статус темы:
Закрыта.
  1. Rivass

    Rivass Гость

    Вводятся координаты точки на плоскости (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");
    ... Прошу помочь, в чем проблема, как лучше решить задачу?
     
  2. domny

    domny Гость

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Смотри тут все очень просто, если пока плохо ориентируешься открывай теги ({}), так будет удобнее для твоего восприятия...
    к примеру рассмотрим твой код

    Код (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");
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Рисуй скобки, так будет удобнее вообщем, как я понимаю....
    Попробуй сам написать, если не получиться пиши сюда....

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

    Без 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");
    }
    }
    }
    }
    }
     
  5. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.469
    Симпатии:
    27
    Ох мать..
     
  6. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2vital: Вит, а что такого ужастного??? Ты пойми, иногда студентов просто переклинивает, и без дословного объяснения мозги на место не станут, и ни всегда это показатель бездарности того или иного интивидума :)....
    У меня такая тема была с реляционными БД :) Вот реально, ни как не мог понять их смысл и за чем они такие нужны, а щас вообще наверное контр. таблицу даже наверное составить не смогу))) как минимум ее на 3 таба разделю)))
     
  7. Rivass

    Rivass Гость

    Огромное человеческое спасибо, теперь я уже разобрался и понял как делать))
     
Загрузка...
Похожие Темы - Задачка С++ на
  1. student55
    Ответов:
    1
    Просмотров:
    1.711
  2. kirkl
    Ответов:
    1
    Просмотров:
    1.010
  3. Hehabr
    Ответов:
    1
    Просмотров:
    484
  4. dmalsh
    Ответов:
    1
    Просмотров:
    1.005
  5. varenbko
    Ответов:
    0
    Просмотров:
    1.040
Статус темы:
Закрыта.

Поделиться этой страницей