Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2013, 00:47   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
Печаль Среди N точек, заданных своими координатами на плоскости, определить самую дальнюю точку от начала координат.

Условие задачи следующее:
Среди N точек, заданных своими координатами на плоскости, определить самую дальнюю точку от начала координат. Координаты точек вводятся с клавиатуры или получаются при помощи генератора случайных чисел.
Не знаю, правильно ли я использовала функцию rand(),не совсем поняла как используют ее... А так...я вроде написала, как считала вроде правильным..но есть ошибки... не смогла исправить.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int main()
{
int n,x,y, max, m,l;
char k;
system ("chcp 1251> nul");
printf ("Введите количество точек:");
scanf("%d", &n);
printf ("Если будете вводить с клавиатуры , то нажмите N, в противном случае M");
scanf ("%c", &k);
max=0;
switch (k)
case 'N':
{
while (n!=0)
{
printf("Введите координаты точки (x,y):");
scanf("%d %d", &x, &y);
if (sqrt(x*x+y*y)>max)
{
max= sqrt(x*x+y*y);
m=x;
l=y;
}
n--
}
printf("Максимально отдаленная от начала координат точка (%d,%d)", m, l)
}
default :
{
while (n!=0)
{
printf("Ввод координат точек :");
x = rand()%d+1;
y = rand()%d+1;
printf("%d;%d",x,y);
if (sqrt(x*x+y*y)>max)
{
max=sqrt(x*x+y*y);
m=x;
l=y;
}
n--
}
printf("Максимально отдаленная от начала координат точка (%d,%d)", m, l)
}
getch();

}

________________
1) Название темы не соответствует правилам форума

Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил и предупредил Вас.

2) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)


Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.09.2013 в 09:18.
zaira001002 вне форума Ответить с цитированием
Старый 30.09.2013, 01:16   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

int n, x, y, m, l, max = -1, d = 100; напишите в начале и точек с запятой парочки не хватает.

Форматирование не исправлял:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int main()
{
int n, x, y, m, l, max = -1, d = 100;
char k;
system ("chcp 1251> nul");
printf ("Введите количество точек:");
scanf("%d", &n);
printf ("Если будете вводить с клавиатуры , то нажмите N, в противном случае M");
scanf ("%c", &k);
max=0;
switch (k) {
case 'N':
while (n!=0)
{
printf("Введите координаты точки (x,y):");
scanf("%d %d", &x, &y);
if (sqrt(x*x+y*y)>max)
{
max= sqrt(x*x+y*y);
m=x;
l=y;
}
n--;
}
printf("Максимально отдаленная от начала координат точка (%d,%d)", m, l);
break;
default :
while (n!=0)
{
printf("Ввод координат точек :");
x = rand()%d+1;
y = rand()%d+1;
printf("%d;%d\n",x,y);
if (sqrt(x*x+y*y)>max)
{
max=sqrt(x*x+y*y);
m=x;
l=y;
}
n--;
}
printf("Максимально отдаленная от начала координат точка (%d,%d)", m, l);
}
getch();
return 0;
}
Можно не брать корень из числа, так как расстояние и квадрат расстояния находятся в прямой зависимости.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 30.09.2013 в 01:24.
BDA вне форума Ответить с цитированием
Старый 30.09.2013, 09:39   #3
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Спасибо большое)Вроде работает... но не предоставляет возможность ввести с клавиатуры))) нужно будет искать ошибку в операторе -переключателе?
zaira001002 вне форума Ответить с цитированием
Старый 30.09.2013, 09:50   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Пожалуйста. Я практически не тестировал (только добился компилируемости).
Попробуйте так:
Код:
scanf("%d%*с", &n);
printf ("Если будете вводить с клавиатуры , то нажмите N, в противном случае M");
scanf ("%c", &k);
Вы же после ввода n нажимаете enter?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 30.09.2013, 10:01   #5
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Да, после ввода точек , нажимаю Enter... Затем она должна прочесть то, какой символ я нажала, но у меня читает неправильно именно второй scanf c начала программы
zaira001002 вне форума Ответить с цитированием
Старый 30.09.2013, 10:09   #6
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от zaira001002 Посмотреть сообщение
Да, после ввода точек , нажимаю Enter... Затем она должна прочесть то, какой символ я нажала, но у меня читает неправильно именно второй scanf c начала программы
А почему нельзя воспользоваться getch() если будет вводиться один символ?!
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 30.09.2013, 10:10   #7
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Я исправила))) Все работает... Нужно было поменять местами почему то запрос на ввод количества точек сделать после того,как мы укажем каким путем хотим находить точку
zaira001002 вне форума Ответить с цитированием
Старый 30.09.2013, 10:11   #8
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

значит проблема в getch() была?))))
zaira001002 вне форума Ответить с цитированием
Старый 30.09.2013, 10:18   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Проблема была в том, что scanf("%d", &n); не забирает из буфера ввода символ переноса строки, который и считывается вторым scanf.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 30.09.2013, 10:21   #10
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Все понятно, благодарю)))
zaira001002 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. На плоскости заданы n точек своими координатами.Построить квадрат Allexey Помощь студентам 4 18.06.2013 13:46
На плоскости заданы своими координатами n точек. Создать массив Евгешаа Помощь студентам 0 29.03.2012 00:03
На плоскости заданы своими координатами n точек. Создать массив Евгешаа C# (си шарп) 0 28.03.2012 21:12
Пусть D - заштрихованная часть плоскости и пусть задана точка своими координатами (X,Y). Определить, при Igoreha010 Помощь студентам 3 16.02.2010 19:14
точки плоскости, заданные своими координатами, попадают в круг с радиусом R Jondeer Общие вопросы C/C++ 6 16.06.2008 00:06