Определить, в какой четверти будет точка - C (СИ)
Формулировка задачи:
здравствуйте. Я только буквально неделю назад начал проходить язык С.
Для создания проектов и компилирования использую MS visual C++ express edition.
Так вот, задача заключается в том, что бы по данным Х и Y определить, в какой четверти будет точка. По идее задача простая, то есть если Х и Y больше нуля, то это первая четверть, если Хменьше нуля, а у больше нуля, то вторая и т.д..
Но у меня тут возникла проблема - при исключении всех явно не верных случаев (х и у равны нулю, или если точка лежит на осях х или у), какие бы даные я ни вводил, высвечивается всё равно так, что точка находится в первой четверти, хотя не должна... прошу помощи.
я пытался отладить задачу, но у меня что-то не получается всё равно.
И кстати, хочу обратить внимание - я только начал изучать С,поэтому моя программа обычно заканчивается на том или ином результате.
// Ulesanne2.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
double x, y, ch;
ch=0;
cout<<"Enter X"<<endl<<"X=";
cin>>x;
cout<<"Enter Y"<<endl<<"Y=";
cin>>y;
if ((x>0)&&(y>0)) ch=1;
else if ((x<0)&&(y>0)) ch=2;
else if ((x<0)&&(y<0)) ch=3;
else if ((x>0)&&(y<0)) ch=4;
else if ((x==0)&&(y!=0)) {cout<<"This point is at the Y-axis."<<endl;
getch ();
return 0;}
else if ((x!=0)&&(y==0)) {cout<<"This point is at the X-axis"<<endl;
getch ();
return 0;}
else {
cout<<"This point is at the origin";
getch ();
return 0;}
if (ch=1) cout<<"This point is in the first quarter";
else if (ch=2) cout<<"This point is on the second quarter";
else if (ch=3) cout<<"This point is on the third quarter";
else if (ch=4) cout<<"This point is on the fourth quarter";
else if ((ch<=0)||(ch>=5)) cout<<"An unexpected error occured. The program will now close.";
cout<<ch;
getch ();
return 0;
}Решение задачи: «Определить, в какой четверти будет точка»
textual
Листинг программы
#include <conio.h>
int main()
{
int x, y, ch;
ch=0;
printf("Enter X\nX=");
scanf_s("%d", &x);
printf("Enter Y\nY=");
scanf_s("%d", &y);
if (x > 0 && y > 0)
ch=1;
if (x < 0 && y > 0)
ch=2;
if (x < 0 && y < 0)
ch=3;
if (x > 0 && y < 0)
ch=4;
if (x == 0 && y != 0)
{
printf("This point is at the Y-axis.\n");
_getch ();
return 0;
}
if (x !=0 && y == 0)
{
printf("This point is at the X-axis\n");
_getch ();
return 0;
}
if(x == 0 && y == 0)
{
printf("This point is at the origin\n");
_getch ();
return 0;
}
switch(ch)
{
case 1:
printf("This point is in the first quarter");
break;
case 2:
printf("This point is on the second quarter");
break;
case 3:
printf("This point is on the third quarter");
break;
default:
printf("This point is on the fourth quarter");
}
_getch ();
return 0;
}
Объяснение кода листинга программы
- Объявлены переменные x, y, ch типа int.
- Переменная ch инициализируется значением 0.
- Выводится приглашение для ввода значения переменной x.
- С помощью функции scanf_s в переменную x записывается введенное пользователем значение.
- Выводится приглашение для ввода значения переменной y.
- С помощью функции scanf_s в переменную y записывается введенное пользователем значение.
- Осуществляется проверка: если x > 0 и y > 0, то переменная ch принимает значение 1.
- Осуществляется проверка: если x < 0 и y > 0, то переменная ch принимает значение 2.
- Осуществляется проверка: если x < 0 и y < 0, то переменная ch принимает значение 3.
- Осуществляется проверка: если x > 0 и y < 0, то переменная ch принимает значение 4.
- Осуществляется проверка: если x == 0 и y != 0, то выводится сообщение
This point is at the Y-axisи программа завершается. - Осуществляется проверка: если x !=0 и y == 0, то выводится сообщение
This point is at the X-axisи программа завершается. - Осуществляется проверка: если x == 0 и y == 0, то выводится сообщение
This point is at the originи программа завершается. - Осуществляется проверка значения переменной ch с помощью оператора switch.
- Если ch равно 1, то выводится сообщение
This point is in the first quarter. - Если ch равно 2, то выводится сообщение
This point is on the second quarter. - Если ch равно 3, то выводится сообщение
This point is on the third quarter. - Если ch не равно 1, 2 и 3, то выводится сообщение
This point is on the fourth quarter. - Вызывается функция _getch, которая предназначена для приостановки выполнения программы до тех пор, пока пользователь не нажмет какую-либо клавишу.
- Программа возвращает значение 0, что означает успешный конец работы.