Pascal. Периметр многоугольника, строки, графика

geniuss
Сообщения: 7
Зарегистрирован: 26 янв 2008, 20:48

Пожалуйста помогите нужно срочно получить зачет

1) Определить периметр многоугольника заданного координатами вершин (х1,у1) (х2,у2).........(х10, у 10) - процедуры

2)Первую букву каждого слова заменит на "а" если слово начинаеться с нее, то на "?" Тема: строки, научиться использовать тип данных String

3)В прямоуг. параллелепипеде построить сечение,проходящее через одно из его ребер и точку пересечения диагоналей противолежащей этому ребру
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Первая:
[syntax='delphi']
program polygon;

var
count,i:integer;
P:real;
gx1,gx2,gy1,gy2,x0,y0:integer;

procedure Next(x1,y1,x2,y2:integer);
var s:real;
begin
s:=sqrt(sqr(x2-x1)+sqr(y2-y1));
P:=P+s;
end;

begin
writeln('Введите количество вершин');
readln(count);
writeln('Введите координаты вершины номер "1"');
readln(gx1,gy1);
x0:=gx1;
y0:=gx2;
for i:=2 to count do
begin
writeln('Введите координаты вершины номер "',i,'"');
readln(gx2,gy2);
Next(gx1,gy1,gx2,gy2);
gx1:=gx2;
gy1:=gy2;
end;
next(x0,y0,gx1,gy1);
writeln;
writeln('Периметр равен ',P:0:5);
readln;
end.
[/syntax]

Вторая:
[syntax='delphi']
program strings;

var
s:string;
i:integer;
p:integer;

begin
writeln('Введите строку');
readln(s);
p:=1;
for i:=1 to length(s)+1 do
begin
if (s=' ')or(i=length(s)) then
begin
if s[p]='a' then
s[p]:='?'
else
s[p]:='a';
p:=i+1;
end;
end;

writeln('Результат:');
writeln(s);
readln;

end.
[/syntax]

А вот с последней вопрос, его нарисовать надо или как?
Ни что так не ограничивает фантазию программиста, как компилятор...
geniuss
Сообщения: 7
Зарегистрирован: 26 янв 2008, 20:48

да в последней нужно нарисовать, за те две огромное спасибо!!!!!!
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Тогда наверное так:
[syntax='delphi']
program parallel;

uses
crt,
graph;

var
gd,gm:integer;
p:array[0..3]of pointtype;

begin
initgraph(gd,gm,'');
setwritemode(1);

p[0].x:=10;
p[0].y:=10;
p[1].x:=110;
p[1].y:=60;
p[2].x:=140;
p[2].y:=90;
p[3].x:=40;
p[3].y:=40;

fillpoly(4,p);

rectangle(10,10,110,110);
rectangle(40,40,140,140);
line(10,10,40,40);
line(110,110,140,140);
line(110,10,140,40);
line(10,110,40,140);

readln;
closegraph;
end.
[/syntax]

P.S. Графический драйвер должен лежать в папке с екзешником.
Ни что так не ограничивает фантазию программиста, как компилятор...
kreze
Сообщения: 2
Зарегистрирован: 27 янв 2008, 11:21

Всем привет. У меня тоже вопрос по решению задачи в Pascal. Вот текст задачи:
Создать двумерный массив В, имеющий четыре строки и пять столбцов с помощью генератора случайных чисел от -5 до 30 и вывести на экран номера отрицательных элементов массива, если таких нет, то сообщить об этом. Вот что я смог написать (в правильности решения сомневаюсь, поэтому и прошу исправить или написать правильное решение):
program ter;
type Matr=array[1..4,1..5] of integer;
var B:array[-5..30,-5..30] of integer;
i,j:integer;
begin
for i:=1 to 4 do
for j:=1 to 5 do randomize;
begin
if i < 0 then writeln(i);
if j < 0 then writeln(j);
if i > 0 then writeln('otricatelnih net');
if j > 0 then write('otricatelnih net');
end;
end.
geniuss
Сообщения: 7
Зарегистрирован: 26 янв 2008, 20:48

MOTOCoder огромное тебе спасибо!!!
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

kreze писал(а):Всем привет. У меня тоже вопрос по решению задачи в Pascal. Вот текст задачи:
Создать двумерный массив В, имеющий четыре строки и пять столбцов с помощью генератора случайных чисел от -5 до 30 и вывести на экран номера отрицательных элементов массива, если таких нет, то сообщить об этом. Вот что я смог написать (в правильности решения сомневаюсь, поэтому и прошу исправить или написать правильное решение):
program ter;
type Matr=array[1..4,1..5] of integer;
var B:array[-5..30,-5..30] of integer;
i,j:integer;
begin
for i:=1 to 4 do
for j:=1 to 5 do randomize;
begin
if i < 0 then writeln(i);
if j < 0 then writeln(j);
if i > 0 then writeln('otricatelnih net');
if j > 0 then write('otricatelnih net');
end;
end.
В приведенном решении ничего не понял.
Точнее, не нашел смысла.

Вот мой вариант:
[syntax='delphi']
program randmatrix;
var
matr:array[1..4]of array[1..5]of integer;
i,j:integer;
b:boolean;

begin
randomize;
for i:=1 to 4 do
for j:=1 to 5 do
begin
matr[i,j]:=random(35)-5;
end;

for i:=1 to 4 do
begin
writeln;
for j:=1 to 5 do
begin
write(matr[i,j]:3,' ');
end;
end;
writeln;
writeln;
b:=false;
for i:=1 to 4 do
for j:=1 to 5 do
if matr[i,j]<0 then
begin
b:=true;
writeln(i,' ',j);
end;
if not b then
writeln('Отрицательных элементов нет');
readln;
end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
kreze
Сообщения: 2
Зарегистрирован: 27 янв 2008, 11:21

Спасибо MOTOCoder что откликнулся на просьбу!!! Сейчас буду смотрететь результат :)
Shady
Сообщения: 5
Зарегистрирован: 14 мар 2008, 15:27

помогите набрать эту задачу на турбо паскале.

Надо создать програму,которая содержит сведения о процесорах(модель,тактовая частота,стоимость).Ввывести информацию о процесорах,стоимость которых не превышает суммы, вводимой пользователем,упорядочив их по возрастанию частоты.Вывести на экран модель и тактовую частоту наилучшего из подходящих по стоимости процессоров.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Можно так:
[syntax='Delphi']
program cpu;

Type
TCPU=record
Model:string;
Freg:integer;
Price:integer;
end;

const
N=5;

var
CPUS:array[1..N]of TCPU;
i,j:integer;
Sum:integer;
k:TCPU;
Best:TCPU;

procedure Sort;
begin
for i:=N downto 1 do
for j:=2 to i do
begin
k:=CPUS[j-1];
if k.Freg>CPUS[j].Freg then
begin
CPUS[j-1]:=CPUS[j];
CPUS[j]:=k;
end;
end;
end;

begin
for i:=1 to N do
begin
Writeln('Введите параметры процессора #',i);
Writeln('Введите модель:');
Readln(CPUS.Model);
writeln('Введите частоту:');
readln(CPUS.Freg);
writeln('Введите цену:');
readln(CPUS.Price);
writeln;
end;
Sort;
writeln;

writeln('Введите сумму:');
readln(Sum);
for i:=1 to N do
if CPUS.Price<=Sum then
begin
writeln('Model: ',CPUS.Model);
writeln('Frequency: ',CPUS.Freg);
writeln('Price: ',CPUS.Price);
Best:=CPUS;
end;
writeln;
writeln('Лучший:');
writeln('Model: ',Best.Model);
writeln('Frequency: ',Best.Freg);
readln;
end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Ответить