Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 10
1

Модуль тпу - нет доступа к переменным в приведенном коде

09.07.2014, 08:54. Показов 695. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
что тут не так? не видет переменные a b c, хотя они объявлены в uses qqq
unit Prv;

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
interface
 
uses qqq;
 
function priv(t: trg):boolean; //существование треуг.
implementation
 
function priv(t: trg): boolean;
 
begin
  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));
 
priv:=(a + b > c) and (a + c > b) and (b + c > a);
if priv(a, b, c) then writeln('Треугольник с такими сторонами существует')
  else writeln('Треугольника с такими сторонами не существует');
  writeln
end;
end.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Unit qqq;
 
Interface
 
uses crt;
type
trg=record
     x1,y1,x2,y2,x3,y3:real; //координаты
     s, p: real; //площадь, периметр
     a, b, c: real;
end;
 
function prin(t:trg):boolean; {принадлежность треугольника кругу}
 
Implementation
 
function prin(t:trg):boolean;
begin
 prin:=((sqr(t.x1)+sqr(t.y1))<1)
   and ((sqr(t.x2)+sqr(t.y2))<1)
   and ((sqr(t.x3)+sqr(t.y3))<1)
end;
 
End.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2014, 08:54
Ответы с готовыми решениями:

Нет ли в приведенном коде функции main?
const eps1 = 1e-6; eps2 = 1e-5; var fx, fy: real; xr, yr: real; lb, rb, r: real; function...

Нет доступа к переменным из функции
Функция move не знает, что такое переменные i2,j2,i,j,m,n,a. Хот я все объявлены в главной...

Оформление ТПУ модуля, Ошибка, что модуль не может быть запущен
Вот код ТПУ модуля. Выдает ошибку, что модуль не может быть запущен. В чем проблема? Unit BIBL;...

Windows XP нет доступа к сети, нет доступа к Norton антивирус, сетевых служб нет
Отключился Инет, попробовал загрузить сетевые подключения - нет ни одной иконки. Загрузился с...

10
Модератор
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
09.07.2014, 09:08 2
Суть задачи будmnt добры изложить.
Желательно -так, как она написана там, где Вы ее прочли.

Добавлено через 8 минут
Я так понимаю, что это модуль который должен быть виден из модуля и проверка на принадлежность треугольника кругу?
0
Почетный модератор
 Аватар для Puporev
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.07.2014, 09:15 3
И собственно код программы нужен

Добавлено через 5 минут
Цитата Сообщение от OlegDenisov Посмотреть сообщение
хотя они объявлены в uses qqq
Там объявлены не переменные, а поля записи типа trg;
0
0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 10
09.07.2014, 09:20  [ТС] 4
Создать файл F1, содержащий заданное число треугольников, описываемых координатами своих вершин. Координаты вершин получить с помощью датчика случайных чисел Random в интервале [-1.2 , 1.2]. Найти все треугольники, лежащие целиком внутри круга с центром в точке (0,0) радиуса 1.0. Сведения о треугольниках (координаты вершин, площадь и периметр) попавших внутрь круга, поместить в файл F2. Получить из файла F2 данные о количестве треугольников, площадь которых или периметр лежат в заданном интервале.


В первом модуле у меня идет проверка существования треугольника, во втором принадлежность кругу, это не все решение, лишь часть, или нужно все скинуть
0
 Аватар для APALoff
1647 / 1076 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
09.07.2014, 09:21 5
Цитата Сообщение от OlegDenisov Посмотреть сообщение
не видет переменные a b c
Так они у Вас и не описаны в модуле! У Вас описан тип trg - и это тип запись, а к записи идет обращение например так: t.a:=, t.b:= и т.п.

Но у Вас так тоже не получится, т.к. в функцию только передается значение и не возвращается...
1
0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 10
09.07.2014, 09:25  [ТС] 6
Puporev, код Ваш

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
program Osnova;
 
uses
  crt, qqq, Ploshad, Perimetr;
 
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;
  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.
0
Почетный модератор
 Аватар для Puporev
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.07.2014, 09:29 7
Не путай переменные с полями записи. t-переменная типа запись, а прочие буковки ее поля.
Писать нужно так
Pascal
1
2
3
4
5
6
7
8
9
function priv(t: trg): boolean;
begin
with t do
 begin
  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));
  priv:=(a + b > c) and (a + c > b) and (b + c > a);
 end;
1
0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 10
09.07.2014, 09:30  [ТС] 8
APALoff,Puporev спасибо, исправил

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
unit Prv;
interface
 
uses qqq;
 
 
function priv(t: trg):boolean; //существование треуг.
 
implementation
 
function priv(t: trg): boolean;
 
begin
 t.a:=sqrt((t.x2-t.x1)*(t.x2-t.x1)+(t.y2-t.y1)*(t.y2-t.y1));
 t.b:=sqrt((t.x3-t.x2)*(t.x3-t.x2)+(t.y3-t.y2)*(t.y3-t.y2));
 t.c:=sqrt((t.x1-t.x3)*(t.x1-t.x3)+(t.y1-t.y3)*(t.y1-t.y3));
 
priv:=(t.a +t.b > t.c) and (t.a + t.c > t.b) and (t.b + t.c > t.a);
if priv(t.a, t.b, t.c) then writeln('Треугольник с такими сторонами существует')
  else writeln('Треугольника с такими сторонами не существует');
  writeln
end;
end.
теперь пишет -Нет перегруженной подпрограммы с таким количеством параметров

Pascal
1
2
if priv(t.a, t.b, t.c) then
 writeln('Треугольник с такими сторонами существует')
0
Почетный модератор
 Аватар для Puporev
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.07.2014, 09:38 9
Pascal
1
if priv(t) then
1
0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 10
09.07.2014, 09:57  [ТС] 10
Puporev, можно еще вопрос, как правильно вставить ф-ю в прогу

по идее же надо сразу после ввода координат
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
program Osnova;
 
uses
  crt, qqq, 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(t) then writeln('Треугольник с такими сторонами существует')
  else writeln('Треугольника с такими сторонами не существует');
  writeln
end;
  writeln('Содержание файла F1');
  seek(f1, 0);
  k := 0;
  kl := 0;
  while not eof(f1) do
но так не работает
0
Почетный модератор
 Аватар для Puporev
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.07.2014, 10:07 11
Цитата Сообщение от OlegDenisov Посмотреть сообщение
В первом модуле у меня идет проверка существования треугольника,
А нафига? Треугольник,заданный координатами вершин, всегда существует, другое дело что он может быть вырожденным.

Добавлено через 3 минуты
Но если очень хочется, то делай так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
for i := 1 to n do
  begin
    repeat
    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;
    until priv(t);//если не вырожденный
   write(f1, z) //пишем его в файл
  end;
А всякие сообщения и нафиг не нужны.
1
09.07.2014, 10:07
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2014, 10:07
Помогаю со студенческими работами здесь

Нет доступа к ПК и с него тоже нет доступа к другим ПК в сети
Суть проблемы следующая, есть ноут Win7 Starter Edition. Этот ноут стоит в бухгалтерии и там разные...

Исправить ошибку в приведенном коде
#include &quot;ntddk.h&quot; NTSTATUS CompleteIrp( PIRP pIrp, NTSTATUS status, ULONG info) {...

Исправить ошибку в приведенном коде
Почему у меня консоль барахлит в этой программе? помогите исправить ошибку static double Test(...

Не правильно работает if в приведенном коде
Есть функция которая считает начало слова в строке(a - массив строк, b - массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
[golang] 80. Remove Duplicates from Sorted Array II
alhaos 28.01.2025
В предоставленном упорядоченном по возрастанию целочисленном слайсе, оставить уникальные элементы полюс один возможный дубликат. Вернуть количество таких элементов. / / . . .
Что такое внедрение зависимостей и для чего оно применяется
bytestream 27.01.2025
В современной разработке программного обеспечения одной из ключевых проблем является управление зависимостями между различными компонентами системы. Внедрение зависимостей (Dependency Injection, DI). . .
Как установить cellpadding и cellspacing в CSS
bytestream 27.01.2025
При создании веб-страниц с табличными данными разработчики часто сталкиваются с необходимостью правильного оформления внутренних и внешних отступов в таблицах. В традиционной разметке HTML для этих. . .
Чем отличаются public, protected, package-private и private в Java
bytestream 27.01.2025
В языке программирования Java механизм модификаторов доступа играет ключевую роль в реализации одного из фундаментальных принципов объектно-ориентированного программирования - инкапсуляции. . . .
Зачем нужно explicit в C++. Преобразование типов
bytestream 27.01.2025
В мире программирования на C++ управление преобразованием типов данных играет crucial роль в создании надежного и безопасного кода. Язык C++ предоставляет множество механизмов для контроля над. . .
Как создать удалённую (remote) ветку в Git
bytestream 27.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления кодовой базой. Одним из ключевых. . .
Как создать утечку памяти в Java
bytestream 27.01.2025
Утечка памяти в Java представляет собой ситуацию, когда программа неэффективно использует доступную память, удерживая ссылки на объекты, которые больше не нужны для работы приложения. Несмотря на. . .
КуМир: как решать задачи на числа
bytestream 27.01.2025
КуМир (Комплект Учебных МИРов) представляет собой уникальную образовательную среду программирования, разработанную специально для обучения основам алгоритмизации и программирования. Эта система. . .
Исполнитель Черепаха в КуМир: как решать задачи
bytestream 27.01.2025
Исполнитель Черепаха в системе КуМир представляет собой мощный образовательный инструмент, который помогает освоить основы программирования через визуальное представление результатов выполнения. . .
КуМир: как решать задачи на массивы
bytestream 27.01.2025
Массивы представляют собой важнейшую структуру данных в программировании, и система КуМир предоставляет удобные инструменты для работы с ними. В контексте КуМир массив можно представить как. . .
[golang] 26. Remove Duplicates from Sorted Array
alhaos 27.01.2025
Необходимо удалить дубликаты из предоставленного целочисленного отсортированного по взрастанию слайса, нужно изменить значения в слайсе и вернуть количество элементов. / / . . .
КуМир, исполнитель Робот. Решение задач
bytestream 27.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения программированию, которая была создана в Отделении информатики Российской Академии наук. Эта система разработана. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru