• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Составить программу

Bogdanghost

Ученик
Регистрация
4 Сен 2013
Сообщения
11
Реакции
0
Баллы
0
Составить программу

лр 3.webp
не знаю как делать
надеюсь,поможете новичку
 
Для решения задачи вам нужно запросить координаты точки, затем проверять принадлежность по следующему условию "если точка лежит во внешнем круге и не лежит во внутреннем, то принадлежит, иначе не принадлежит".
Код:
if ((sqr(x)<100-sqr(y))) or (sqr(x)=100-sqr(y)))) and (sqr(x)>25-sqr(y))) then writeln('принадлежит') else writeln('не принадлежит');
В данном условии исключен случай, когда точка лежит на внутренней окружности, но это вы сами уже допишите.
 
Лёша, а почему только Паскаль? Раз человек не счёл нужным указать язык программирования, значит Ваш долг - выложить варианты еще и на СИ, Фортране, Алголе-60, Коболе, Аде, ПЛ'е, Модуле-2 и Ассемблере. Как минимум. Можно еще пару-тройку добавить. Чтобы человек мог выбрать.
 
Ну, на ассемблере листинг немного другой будет, а сишный код почти совпадает, за исключением операторов вывода и возведения в степень :))
 
program Kolcho;
var x,y,v: real; otvet:char;
Rb:=10;
rm:=5;
begin
writeln('введите значение х');
readln(x);
writeln('введите значение y');
readln(y);
v:=x*x+y*y;
if ((sqr(x)<100-sqr(y))) or (sqr(x)=100-sqr(y))) and (sqr(x)>25-sqr(y))) then writeln('принадлежит')
else writeln('не принадлежит');
end.
так?
но там ошибка,не пойму что не так
 
но там ошибка,не пойму что не так
Да много что. А прежде всего, Вы вводите значения Rb и rm, как значения переменных, но при этом сами эти переменные в разделе Var начисто отсутствуют.
 
увидел)поменял
какие еще проблемы?)
 
подскажите пожалуйста
 
Собственно, остальное всё более ли менее, вот только...
1. Лишние переменные. Зачем нужна переменная otvet, да еще типа Char? Напомню, что "Char" - это тип "Символ", т.е. такая переменная может принимать значение ТОЛЬКО ОДНОГО символа, например "A", "f", "4", "+" и т.п. А если Вы хотите управлять сообщением о результате не через прямой вывод, а через переменную, то тип такой переменной следует объявить String. Только в данном случае это не нужно - вполне нормально выводить сообщения напрямую, как у Вас и сделано.
2. Внешний и внутренний радиусы кольца целесообразно либо не задавать вовсе и работать с их числовыми значениями, либо задать в виде констант. Этот второй вариант мне представляется предпочтительным. Программа становится "универсальнее", т.к. значения констант легче (если захочется) поменять, чем редактировать условный оператор.
3. В построении условного оператора мой коллега AlexZir, как мне кажется, несколько перемудрил: Паскаль допускает нестрогие неравенства, а потому связка "or" там лишняя. Кроме того, удобнее работать с самими величинами расстояний и радиусов, а не с их квадратами.
4. Разумно программу зациклить, так, чтобы была возможность вводить без перезапуска последовательность пар координат точек. Выход из цикла можно устроить когда, например, будут введены нулевые координаты, причем обе сразу.

Исходя из всего этого, представлю вариант решения такой, какой я бы сделал. Сразу отмечу, что с кириллицей у меня некий напряг, поэтому я ее стараюсь не применять. Но это сами легко поправите.
Код:
Const
 Rb=10.0;
 Rm=5.0;
Var
 x,y,v:real;
Begin
 Writeln('Point (0;0) quits');
 Repeat
  write('X= ');
  readln(x);
  write('Y= ');
  readln(y);
  if (x<>0) or (y<>0) then
   begin
    v:=Sqrt(x*x+y*y);
    if (v>=Rm) and (v<=Rb) then writeln('YES!') else writeln('NO!');
   end;
 Until ((x=0) and (y=0));
end.
 
Владимир, моя задача - дать верное направление, а решений может быть много.
Нестрогие неравенства поддерживаются не всеми версиями компиляторов, встречался с одним таким, долго не мог понять, почему условие не проходит.
 
Назад
Сверху