Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 08.07.2014, 23:33   #1 (permalink)
Олеег
Member
 
Регистрация: 06.07.2014
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Angry Снова ТПУ-модуль

Снова здраствуйте. надо было дописать одну функцию в программу не могу правильно втпу вставить и совместить с основной програмой. Что опять тут не так
Ну собственно функция
Код:
function priv(t: trg): boolean;
a, b, c: real;
begin
writeln('Введите три стороны треугольника: ');
  a:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
 b:=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));
 c:=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3));

prv:=(a + b > c) and (a + c > b) and (b + c > a);
if priv(a, b, c) then writeln('Треугольник с такими сторонами существует')
  else writeln('Треугольника с такими сторонами не существует');
  writeln
end;

так в тпу

Код:
unit Prv;

interface

uses syschestvovanie_treygolnika;

function priv(t: trg):boolean; //существование треуг.
implementation

function priv(t: trg): boolean;

begin
writeln('Введите три стороны треугольника: ');
  a:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
 b:=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));
 c:=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3));

prv:=(a + b > c) and (a + c > b) and (b + c > a);
if priv(a, b, c) then writeln('Треугольник с такими сторонами существует')
  else writeln('Треугольника с такими сторонами не существует');
  writeln
end;
end.
ну и основная программа
Код:
program Osnova;

uses
  crt, Syschestvovanie_treygolnika, Ploshad, Perimetr,Prv;

var
  f1, f2: file of trg;
  z: trg;
  n, i, k, kl: integer;
  a, b: real;

begin
  clrscr;
  randomize;
  assign(f1, 'input');
  rewrite(f1);
  assign(f2, 'output');
  rewrite(f2);
  writeln('Введите число треугольников:');
  readln(n);
  for i := 1 to n do
  begin
    z.x1 := -1.2 + 2.4 * random;
    z.y1 := -1.2 + 2.4 * random;
    z.x2 := -1.2 + 2.4 * random;
    z.y2 := -1.2 + 2.4 * random;
    z.x3 := -1.2 + 2.4 * random;
    z.y3 := -1.2 + 2.4 * random;
    write(f1, z)
  end;
  if priv(z) then //сюда вставить функцию надо   
  writeln('Содержание файла F1');
  seek(f1, 0);
  k := 0;
  kl := 0;
  
  while not eof(f1) do
  begin
    read(f1, z);
    k := k + 1;
    writeln(k:2, ')   A (', z.x1:5:2, ' ', z.y1:5:2, ')   B (', z.x2:5:2, ' ', z.y2:5:2, ')'
                 '    C (', z.x3:5:2, ' ', z.y3:5:2, ')');
    if k mod 20 = 0 then
    begin
      writeLn('Press Enter');
      readln
    end;
    if prin(z) then
    begin
      kl := 1;
      z.s := plos(z);
      z.p := perm(z);
      write(f2, z);
    end;
  end;
  close(f1);
  if kl = 0 then
  begin
    writeLn('Нет треугольников, целиком лежащих в данном круге');
    close(f2);
    exit
  end;
  repeat
    writeln('Введите интервал для поиска a < b');
    readln(a, b);
  until a < b;
  seek(f2, 0);
  writeln('Содержание файла F2');
  k := 0;
  kl := 0;
  while not eof(f2) do
  begin
    read(f2, z);
    k := k + 1;
    writeln(k:2, ')   A (', z.x1:5:2, ' ', z.y1:5:2, ')   B (', z.x2:5:2, ' ', z.y2:5:2, ')'
                 '    C (', z.x3:5:2, ' ', z.y3:5:2, ')');  
    writeln( 'S = ', z.s:5:2, '   P = ', z.p:5:2);
    if k mod 20 = 0 then
    begin
      writeLn('Press Enter');
      readln
    end;
    if ((z.s >= a) and (z.s <= b)) or ((z.p >= a) and (z.p <= b)) then kl := kl + 1;
  end;
  writeln('Количество треугольников, у которых площадь или периметр');
  writeln('попадают в заданный интервал=', kl);
  close(f2);
end.
Олеег вне форума   Ответить с цитированием

Старый 08.07.2014, 23:33
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посмотрите данные обсуждения, в них скорее всего есть важные ответы

Компьютер включается и выключается. И так снова и снова
TPU-модуль. Паскаль

Старый 09.07.2014, 05:04   #2 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

Сразу бросается в глаза, что у вас в теле функции есть переменная prv, которая нигде не объявлена. Я имею ввиду следующую строку:
prv:=(a + b > c) and (a + c > b) and (b + c > a);
Debianer вне форума   Ответить с цитированием
Старый 09.07.2014, 09:48   #3 (permalink)
Олеег
Member
 
Регистрация: 06.07.2014
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Debianer Посмотреть сообщение
Сразу бросается в глаза, что у вас в теле функции есть переменная prv, которая нигде не объявлена. Я имею ввиду следующую строку:
prv:=(a + b > c) and (a + c > b) and (b + c > a);
опечатка, Это имя функции
priv:=(a + b > c) and (a + c > b) and (b + c > a);
Олеег вне форума   Ответить с цитированием
Старый 09.07.2014, 10:48   #4 (permalink)
Олеег
Member
 
Регистрация: 06.07.2014
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

dctv cgfcb,j
Олеег вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:08.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.