Определить принадлежность точки к координатной четверти - C (СИ)
Формулировка задачи:
Есть код:
При выполнении программа не хочет даже выполнять 8 строку, скажите пожалуйста, почему так?
Если кому вдруг надо вот текст задачи:
#include <stdio.h>
void main()
{
int s[4][3];
int j,i,n,x,y,R,p,max,maxi;
scanf("%d",&n);
printf("%d",n);
for(i=1;i<=4;i++)
for(j=1;j<=3;j++)
s[i][j]=0;
for(i=1;i<=n;i++)
{
j=0;
scanf("%d %d",&x,&y);
if(x>0 && y>0)
j=1;
if(x<0 && y>0)
j=2;
if(x<0 && y<0)
j=3;
if(x>0 && y<0)
j=4;
s[j][1]++;
p=s[j][2]*s[j][2]+s[j][3]*s[j][3];
if(p>x*x+y*y || p==0)
{
s[j][2]=x;
s[j][3]=y;
}
}
max=s[1][1];
for(i=2;i<=4;i++)
{
if(max<s[i][1]){
max=s[i][1];
maxi=i;}
}
if(s[maxi][2]*s[maxi][2]>s[maxi][3]*s[maxi][3])
R=s[maxi][3];
else
R=s[maxi][2];
printf("K = %d \n M = %d \n A = (%d, %d) \n R = %d",maxi,s[maxi][1],s[maxi][2],s[maxi][3],R);
}
Дан список точек плоскости с целочисленными координатами. Необходимо
определить:
1) номер координатной четверти K, в которой находится больше всего
точек;
2) точку A в этой четверти, наименее удалённую от осей координат;
3) расстояние R от этой точки до ближайшей оси.
Если в нескольких четвертях расположено одинаковое количество точек,
следует выбрать ту четверть, в которой величина R меньше. При равенстве
и количества точек, и величины R необходимо выбрать четверть с меньшим
номером K. Если в выбранной четверти несколько точек находятся на
одинаковом минимальном расстоянии от осей координат, нужно выбрать
первую по списку. Точки, хотя бы одна из координат которых равна нулю,
считаются не принадлежащими ни одной четверти и не рассматриваются.
Напишите эффективную, в том числе по памяти, программу, которая будет
решать эту задачу. Перед текстом программы кратко опишите алгоритм
решения задачи и укажите используемый язык программирования и его
версию.
Описание входных данных
В первой строке вводится одно целое положительное число – количество
точек N.
Каждая из следующих N строк содержит координаты очередной точки –
два целых числа (первое – координата x, второе – координата y).
Описание выходных данных
Программа должна вывести номер выбранной четверти K, количество
точек в ней M, координаты выбранной точки A и минимальное расстояние
R по образцу, приведённому ниже в примере.
Пример входных данных:
7
−3 4
1 2
1 1
0 4
−2 −3
−6 8
−12 1
Пример выходных данных для приведённого выше примера входных
данных:
K=2
M=3
A = (−12, 1)
R=1
Помогите пожалуйста, ничего не пойму, почему программа даже printf() не выполняет?
Решение задачи: «Определить принадлежность точки к координатной четверти»
textual
Листинг программы
for(i=1;i<=4;i++)
Объяснение кода листинга программы
- Переменная
iинициализируется значением 1. - Условие цикла for выполняется, так как i меньше или равно 4.
- Значение переменной
iувеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for повторяется с начала.
- Значение переменной
iснова увеличивается на 1. - Цикл for завершается, так как условие больше не выполняется.