Страница 2 из 2
Re: 3 задачи по паскалю
Добавлено: 18 май 2007, 14:35
msblast
Код: Выделить всё
program ex3;
type
Tfigure=(circle,rectangle,triangle);
Tcolor=(red,green,blue);
Point=record
x,y:real
end;
figures=record
color:Tcolor;
case figureType:Tfigure of
circle :( centre :p oint;radius:real);
rectangle :( s1,s2 :p oint);
triangle :( t1,t2,t3 :p oint)
end;
tlist=array[1..20] of figures;
var
list:tlist;
i:byte;
c:char;
s:integer;
begin
repeat
inc(i);
writeln('Ввод данных о ', i ,' фигуре');
with list[i] do
begin
writeln('Введите тип фигуры');
readln(figureType); [U][B]---вот здесь пишет ошибку 64 (Cannot Read or Write variables of this type)[/B][/U]
if figureType=circle then
begin
writeln('Введите цвет');
readln(color);
writeln('Введите координату центра (x,y)');
readln(centre.x,centre.y);
writeln('Введите радиус');
readln(radius);
S:=3,14*(radius*radius);
writeln('Ввести еще данные?');
readln(c);
until c in ['n','N'];
writeln('Площадь круга = ',s);
readln;
end.
Написал кусочек для проверки, поидеи должен выдовать площадь круга, вместо этого ругается что неможет записать или прочитать
Re: 3 задачи по паскалю
Добавлено: 18 май 2007, 15:21
BBB
msblast писал(а):это конечно хорошо, только я не об этом спрашивал
я заполняю массив фигур и о каждой ввожу данные...
если мне надо записать данные о Круге то выходит так :?
тип фигуры записывается в List.Type
центр круга в list.centre.x и list.centre.y
радиус в list.radius
цвет в list.color
правильно?
Правильно.
msblast писал(а):Код: Выделить всё
.....................
readln(figureType); [U][B]---вот здесь пишет ошибку 64 (Cannot Read or
Написал кусочек для проверки, поидеи должен выдовать площадь круга, вместо этого ругается что неможет записать или прочитать
Правильно руагется. Потому figureType - переменную пользовательского типа. В нее с экрана никак не прочитаешь.
Re: 3 задачи по паскалю
Добавлено: 19 май 2007, 16:34
msblast
BBB писал(а):Есть формула Герона вычисления площади теругольника по трем его сторонам:
S = SQRT (p * (p-a) * (p-b) * (p-c))
где a, b, c - длины сторон треугольника,
а p - полупериметр треугольника: p = (a+b+c) / 2
А, зная координаты вершин, длины сторон определить несложно:
a = SQRT ( (t1.x - t2.x)^2 + (t1.y - t2.y)^2)
b = SQRT ( (t1.x - t3.x)^2 + (t1.y - t3.y)^2)
c = SQRT ( (t2.x - t3.x)^2 + (t2.y - t3.y)^2)
насчет блин сторон немного непонял
это вроде Теорема пифагора, а на кой она нужна тут?
бред какой то выходит, если так записать то он находит площадь с координатами (1.1)(5.5)(1.10) но не может найти (1.1)(5.5)(3.3)
пифагор - это,несомненно,голова!
Добавлено: 21 май 2007, 09:46
BBB
msblast писал(а):насчет блин сторон немного непонял
это вроде Теорема Пифагора, а на кой она нужна тут?
Теорема Пифагора блин нужна блин чтобы блин посчитать блин длину отрезка блин, концы которого заданы блин в декартовой системе координат.
бред какой то выходит, если так записать то он находит площадь с координатами (1.1)(5.5)(1.10) но не может найти (1.1)(5.5)(3.3)
У тебя эти три точки лежат на одной прямой. Т.е. имеет место вырожденный треугольник. По идее, его площадь должна получаться нулевая.
У меня вполне находит, правда результат получается не ровно ноль, а "очень маленький": 1.8145860520E-05
Код: Выделить всё
type
Point=record
x,y:real;
end;
var a, b, c, p, S : real;
t1, t2, t3 : Point;
begin
t1.x := 1; t1.y := 1;
t2.x := 5; t2.y := 5;
t3.x := 3; t3.y := 3;
a := SQRT ( SQR(t1.x - t2.x) + SQR(t1.y - t2.y));
b := SQRT ( SQR(t1.x - t3.x) + SQR(t1.y - t3.y));
c := SQRT ( SQR(t2.x - t3.x) + SQR(t2.y - t3.y));
p := (a + b +c) / 2;
S := SQRT (p * (p-a) * (p-b) * (p-c));
writeln ('S: ', S);
end.
Re: пифагор - это,несомненно,голова!
Добавлено: 26 май 2007, 10:55
msblast
угу....
а с 3 задачей кто подскажет, задача готова на 99%, осталось написать код для поиска аптеки с наибольшим ассортиментом
помогите....мне через день сдавать это надо, а у меня полторы задачи висит(((