Pascal. Периметр многоугольника, строки, графика
Пожалуйста помогите нужно срочно получить зачет
1) Определить периметр многоугольника заданного координатами вершин (х1,у1) (х2,у2).........(х10, у 10) - процедуры
2)Первую букву каждого слова заменит на "а" если слово начинаеться с нее, то на "?" Тема: строки, научиться использовать тип данных String
3)В прямоуг. параллелепипеде построить сечение,проходящее через одно из его ребер и точку пересечения диагоналей противолежащей этому ребру
1) Определить периметр многоугольника заданного координатами вершин (х1,у1) (х2,у2).........(х10, у 10) - процедуры
2)Первую букву каждого слова заменит на "а" если слово начинаеться с нее, то на "?" Тема: строки, научиться использовать тип данных String
3)В прямоуг. параллелепипеде построить сечение,проходящее через одно из его ребер и точку пересечения диагоналей противолежащей этому ребру
Первая:
[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]
А вот с последней вопрос, его нарисовать надо или как?
[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]
А вот с последней вопрос, его нарисовать надо или как?
Ни что так не ограничивает фантазию программиста, как компилятор...
да в последней нужно нарисовать, за те две огромное спасибо!!!!!!
Тогда наверное так:
[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. Графический драйвер должен лежать в папке с екзешником.
[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. Графический драйвер должен лежать в папке с екзешником.
Ни что так не ограничивает фантазию программиста, как компилятор...
Всем привет. У меня тоже вопрос по решению задачи в 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.
Создать двумерный массив В, имеющий четыре строки и пять столбцов с помощью генератора случайных чисел от -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.
MOTOCoder огромное тебе спасибо!!!
В приведенном решении ничего не понял.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]
Ни что так не ограничивает фантазию программиста, как компилятор...
Спасибо MOTOCoder что откликнулся на просьбу!!! Сейчас буду смотрететь результат 

помогите набрать эту задачу на турбо паскале.
Надо создать програму,которая содержит сведения о процесорах(модель,тактовая частота,стоимость).Ввывести информацию о процесорах,стоимость которых не превышает суммы, вводимой пользователем,упорядочив их по возрастанию частоты.Вывести на экран модель и тактовую частоту наилучшего из подходящих по стоимости процессоров.
Надо создать програму,которая содержит сведения о процесорах(модель,тактовая частота,стоимость).Ввывести информацию о процесорах,стоимость которых не превышает суммы, вводимой пользователем,упорядочив их по возрастанию частоты.Вывести на экран модель и тактовую частоту наилучшего из подходящих по стоимости процессоров.
Можно так:
[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]
[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]
Ни что так не ограничивает фантазию программиста, как компилятор...