Суббота, 22.11.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Задачи
TexnarДата: Суббота, 05.01.2008, 22:07 | Сообщение # 1
Знакомый
Группа: Пользователи
Сообщений: 16
Репутация: 1
Замечания: 0%
Статус: Offline
Как и обещал в этой теме буду выкладывать задачи. К сожалению в этом семе я немного не успел с задачами на лабах. Но мне не нпомешало сдать экзамен досрочно. Так что буду выкладывать по поступлению так сказать.

Добавлено (05.01.2008, 15:04)
---------------------------------------------
С клавиатуры вводятся координаты трех точек. Необходимо:
1. выяснить существует ли треугольник с такими вершинами.
Если существует, то найти:
2. стороны
3. периметр
4. площадь
5. углы
6. высоты
7. медианы
8. биссектрисы
Решить задачу используя процедуры и функции.

Code
program treug;
procedure vvod(var x,y:real);
begin
  writeln('vvedite x');
  readln(x);
  writeln('vvedite y');
  readln(y);
end;

procedure storona (x1,x2,y1,y2:real; var st:real);
begin
   st:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;

procedure ugl(pril_storona1,pril_storona2,prot_storona:real; var ug:real);
var
  c_ug:real;
begin
  c_ug:=(sqr(pril_storona1)+sqr(pril_storona2)-sqr(prot_storona))/(2*pril_storona1*pril_storona2);
  if c_ug<>0 then

   ug:=arctan(sqrt(1-sqr(c_ug))/c_ug)
  else
   ug:=pi/2;
end;

procedure mediana(var m:real; a,b,u:real);
begin
  m:=sqrt(a*a/4+b*b-a*b*cos(u));
end;

procedure bissectrisa(x,y:real; ug:real; var b:real);
begin
  b:=2*x*y*cos(ug/2)/(x+y);
end;

procedure visota(var h:real; s,st:real);
begin
  h:=2*s/st;
end;

procedure perimetr(a,b,c:real; var p:real);
begin
  p:=a+b+c;
end;

procedure ploshad(a,b,c:real; var s:real);
var
  pp:real;
begin
  pp:=(a+b+c)/2;
  s:=sqrt(pp*(pp-a)*(pp-b)*(pp-c));
end;

procedure proverka(a,b,c:real; var bo:boolean);
begin
  bo:=(a<(b+c)) and (b<(a+c)) and (c<(a+b));
end;

var
  x1,x2,x3,y1,y2,y3:real;
  s:real;
  st1,st2,st3:real;
  b:boolean;
  p:real;
  alpha,betta,gamma:real;
  ha,hb,hc:real;
  b1,b2,b3:real;
  m1,m2,m3:real;

begin
  vvod(x1,y1);                           {vvodim dannie}
  vvod(x2,y2);                             {po poly4ennim dannim s4itaem storoni}
  vvod(x3,y3);                    {proveryem nali4ie treygolnika}
                    {ras4itivaem nygnie dannie po formylam i raspe4ativaem ix na ekran}
  storona(x1,x2,y1,y2,st3);
  storona(x3,x2,y3,y2,st1);
  storona(x3,x1,y3,y1,st2);

  proverka(st1,st2,st3,b);
  if b then
  begin
   writeln('storona 1= ',st1:5:3);
   writeln('storona 2= ',st2:5:3);
   writeln('storona 3= ',st3:5:3);
   perimetr(st1,st2,st3,p);
   writeln('perimetr =',p:5:3);

   ploshad(st1,st2,st3,s);
   writeln('ploshad=',s:5:3);

   ugl(st2,st3,st1,alpha);
   ugl(st1,st2,st3,gamma);
   ugl(st1,st3,st2,betta);
   if alpha<0 then
    alpha:=pi+alpha;
   if betta<0 then
    betta:=pi+betta;
   if gamma<0 then
    gamma:=pi+gamma;
   writeln('ygol alpha= ',alpha*180/pi:5:3);
   writeln('ygol betta= ',betta*180/pi:5:3);
   writeln('ygol gamma= ',gamma*180/pi:5:3);

   bissectrisa(st1,st2,gamma,b1);
   bissectrisa(st1,st3,betta,b2);
   bissectrisa(st2,st3,alpha,b3);
   writeln('bissectrisa 1= ',b1:5:3);
   writeln('bissectrisa 2= ',b2:5:3);
   writeln('bissectrisa 3= ',b3:5:3);

   visota(ha,s,st1);
   visota(hb,s,st2);
   visota(hc,s,st3);
   writeln('visota ha= ',ha:5:3);
   writeln('visota hb= ',hb:5:3);
   writeln('visota hc= ',hc:5:3);

   mediana(m1,st1,st2,gamma);
   mediana(m2,st2,st3,alpha);
   mediana(m3,st3,st1,betta);
   writeln('mediana 1= ',m1:5:3);
   writeln('mediana 2= ',m2:5:3);
   writeln('mediana 3= ',m3:5:3);
  end
  else
   writeln('treygolnika ne sushestvuet');
  readln;
  end.

Один из вариантов решения данной задачи! Школьникам пригодиться)

Добавлено (05.01.2008, 15:05)
---------------------------------------------
Получить N-e число фибоначчи
a1=1
a2=1
a3=a1+a2
...
an=(an-1)+(an-2)

Code
program fibonachi;
procedure vvod(var n:integer);
begin
    writeln('Vvedite kolichesto chelnov dly raschta chisla fibonachi(n>=3) ');
    readln(n);
end;
procedure raschet(n:integer; var chislo:integer);
var
    a1,a2,i:integer;
begin
    a1:=1;    {1-ii chlen}
    a2:=1;    {2-oi chlen}
    for i:=3 to n do  {nachinay s 3-go chlena vipolnyem cikl do vvodimogo n}
    begin
     chislo:=a1+a2;     {Skaldivaem chisla po pravily}
     a1:=a2;             {prisvaivaemchisly n-2 chislo n-1}
     a2:=chislo;          {prisvaivaem chisly n-1 chislo n}
   end;
end;
var
    n,chislo:integer;
begin
    vvod(n);{vvodim chislo n}
    raschet(n,chislo);{raschitivaem po pravily chislo fibonachi dly n}
    writeln('rezyltat = ',chislo);{vivodim chislo fibonachi dly n}
    readln;
end.

Добавлено (05.01.2008, 15:05)
---------------------------------------------
Вводится натуральное число N. Определить, является ли оно простым.

Code
program zadanie2;

procedure vvod(var N:integer);
begin
    writeln('Vvedite chislo dly proverki(chislo celoe!) =');
    readln(N);
end;

procedure raschet(N:integer; var y:integer);
var
    i:integer;
begin
    y:=0;
    for i:=1 to N do
     if (N mod i)=0 then
     y:=y+1;
end;
procedure vivod(y:integer; var N:integer);
begin
    if y<=2 then
    writeln('Vvodimoe chislo prostoe = ',N)
    else
    writeln('Vvodimoe chislo slognoe = ',N);
    readln;
end;

var
    N,y:integer;
begin
    vvod(N);{vvoditsy 4islo}
    raschet(N,y);{proveryem vvodimoe 4islo na prostoe ili slognoe}
    vivod(y,N);{vivodim poly4iv6eysy rezyltat}
end.

Добавлено (05.01.2008, 15:06)
---------------------------------------------
1. Заполнить массив из n элементов случайными числами в диапазоне, введенном пользователем в начале программы.
2. Распечатать полученный массив.
3. Переписать из заполненного массива в другой элементы кратные трем.
4. Вывести полученный массив.
5. Отсортировать оба массива.
6. Вывести оба массива

Code
program zadanie1;
Const
    N=10;
type
    mas=array[1..N] of integer;

procedure diapozon(var a,b:integer);
begin
    writeln('Vvedite nigniy gran massiva = ');
    readln(a);
    writeln('Vvedite verxnii gran massiva = ');
    readln(b);
end;

procedure zapolnenie(a,b:integer; var mas1:mas);
var
    i:integer;
begin
    for i:=1 to N do
    mas1[i]:=a+random(b-(a+1));
end;

procedure poisk(mas1:mas; var mas2:mas; var N2:integer);
var
    i:integer;
begin
    N2:=0;
    for i:=1 to N do
    if (mas1[i] mod 3)>0 then
     begin
      N2:=N2+1;
      mas2[N2]:=mas1[i];
     end;
end;

procedure sortirovka(k:integer;var mas1:mas);
var
    i,x,j:integer;
begin
     for i:=1 to N-1 do
      for j:=i+1 to N do
      begin
       if mas1[i]<mas1[j] then
       begin
        x:=mas1[i];
        mas1[i]:=mas1[j];
        mas1[j]:=x;
       end;
     end;
end;

procedure vivod(N2:integer; var mas2:mas);
var
    i:integer;
begin
    for i:=1 to N2 do
     write(mas2[i],' ');
     writeln;
end;

var mas1,mas2:mas;
     a,b,N2:integer;
begin
    randomize;
    diapozon(a,b);{vvodim diapazon massiva}
    zapolnenie(a,b,mas1);{zapolnyem i raspechativaem polychivsheisy massiv}
    vivod(N,mas1);
    poisk(mas1,mas2,N2);{naxodim i vipisivaem iz massiva vse chisla kratnie 3}
    sortirovka(N,mas1);{sortiryem 1 massiv}
    sortirovka(N2,mas2);{sortiryem 2 massiv}
    vivod(N,mas1);{vivodim 1-ii polychivsheisy massiv}
    vivod(N2,mas2);{vivodim 2-oi polychivsheisy massiv}
    readln;
end.

Добавлено (05.01.2008, 15:07)
---------------------------------------------
Пока что все. Позже доделаю все лабы ради интереса и выложу еще задачек)

 
SeqularДата: Воскресенье, 06.01.2008, 10:27 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Отлично! Благодарю.. Задачки проверим, "русифицируем" и закинем в "Задачник" на самом сайте! Так что не удивляйся, если эта тема очистится wink Значит все уже переместили

Поддерживаю также проект сообщество молодых сисадминов
 
TexnarДата: Воскресенье, 06.01.2008, 21:50 | Сообщение # 3
Знакомый
Группа: Пользователи
Сообщений: 16
Репутация: 1
Замечания: 0%
Статус: Offline
Ок))) Сессию закрою и буду помогать вам чем смогу)
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;