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

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

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

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

Снова ТПУ-модуль

Олеег

Новые
Регистрация
6 Июл 2014
Сообщения
12
Реакции
0
Баллы
0
Снова ТПУ-модуль

Снова здраствуйте. надо было дописать одну функцию в программу не могу правильно втпу вставить и совместить с основной програмой. Что опять тут не так:tehnari_ru_837:
Ну собственно функция
Код:
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.
 
Сразу бросается в глаза, что у вас в теле функции есть переменная prv, которая нигде не объявлена. Я имею ввиду следующую строку:
prv:=(a + b > c) and (a + c > b) and (b + c > a);
 
Сразу бросается в глаза, что у вас в теле функции есть переменная 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);
 
Назад
Сверху