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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2011, 23:33   #1
конфета345
Новичок
Джуниор
 
Регистрация: 17.10.2011
Сообщений: 1
По умолчанию составить программу.

Ребят, огромная просьба, напишите как это должно выглядеть в паскале или в бейсике.

1)По введённому числу выведите его характеристики: знак, чётность, количество разрядов, тип данных переменной, в которой число может быть сохранено и т.д.


2)Окружность задана координатами центра и радиусом. Прямая описывается уравнением y=ax+b. Определить ко-личество точек пересечения прямой и окружности.
конфета345 вне форума Ответить с цитированием
Старый 19.10.2011, 16:07   #2
Aiden
Пользователь
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

Код:
function NumInfo(val:longint):string;
begin
//знак
if val=abs(val) then Result:='Положительное '
else Result:='Отрицательное ';
//четность
if val mod 2 =0 then Result:=Result + 'четное, разрядов-'
else Result:=Result + 'нечетное, разрядов-';
//разрядность
Result:=Result + Length(IntToStr(val))+' тип данных ';
//тип данных
if abs(val)<=High(Shortint) then Result:=Result+'Shortint'
else begin
  if abs(val)<=High(Integer) then Result:=Result+'Integer'
  else Result:=Result+'Longint';
end;
end;
Данный вариант - для целых чисел.

2. Высшей математики не помню, поэтому могу предложить лишь вариант перебора:
Код:
function PointCount(x,y,r,a,b:real):byte;
var
i,coord,l,step:real;
n:integer;
begin
step:=0.1;
i:=x-r;
Result:=0;
while i<=x+r do begin
  //рассчитываем координаты прямой
  coord:=(a*i)+b;
  //находим квадрат расстояния до центра окружности по теореме Пифагора
  l:=((x-i)*(x-i))+((y-coord)*(y-coord))
  //сверяем квадраты радиуса и расстояния до центра
  if l<r*r then n:=2
  else begin
    if l=r*r then n:=1
    else n:=0;
  end;
  if n>Result then Result:=n;
  i:=i+step;
end;
end;
чем меньше значение переменной step - тем более точный будет результат. Но и расчет будет дольше.
Aiden вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу Савита Помощь студентам 0 11.05.2011 14:49
Составить программу Kattterina Помощь студентам 3 28.01.2011 16:22
СОСТАВИТЬ ПРОГРАММУ Kuanishbai Kuat Помощь студентам 0 28.10.2010 21:47
Составить программу на C++ Аська Помощь студентам 3 16.03.2010 10:25