Консультация № 161199
23.02.2009, 16:13
0.00 руб.
0 3 2
Уважаемые эксперты! помогите пожалуйста решить следующие задачи через модуль.
1. заданы координаты 3-х вершин (х1,у1) (х2,у2) (х3,у3). найти его периметр и площадь.
2. ввести последовательность символов предшествующих символу * и выяснить сколько среди них букв S,A,R. все буквы S заменить на точку.
3. при поступлении в вуз абитуриенты, получившие 2 на первом экзамене, ко второму не допускаются. в массиве А[10] записаны оценки экзаменующихся, полученные на первом экзамене. подсчитать сколько человек не допущено ко второму экзамену.
ЗАРАНЕЕ БЛАГОДАРЕН!!!

Обсуждение

Неизвестный
23.02.2009, 19:11
общий
это ответ
Здравствуйте, Ильин Дмитрий!
Задача №3:
Код:
const
N = 10;

var
{Массив оценок}
a: array [1..N] of Integer;
i, count: integer;

begin
count := 0;
{получаем оценки}
write('введите результаты первого экзамена: ');
for i := 1 to N do
readln(a[i]);
{перебираем массив, если оценка два или меньше, то увеличиваем кол-во недопущеных студентов на 1}
for i := 1 to N do
if a[i] <= 2 then
inc(count);
Write('Ответ: ', count);
readln;
end.

Удачи!!!
Неизвестный
23.02.2009, 23:26
общий
это ответ
Здравствуйте, Ильин Дмитрий!

Решение первых двух задач в приложении.
В первой проверяем существование треугольника с заданными вершинами (каждая сторона меньше суммы двух других) и далее считаем его периметр и площадь (по формуле Герона: URL >>)

Во второй задаче считываем введённый символ, если это A или R - просто считаем их количество и выводим на экран, чтобы пользователь видел что он нажал, а если это S - заменяем на точку, считаем количество и выводим на экран сразу точку).
Если надо сначала сохранить то что ввели в строку, а потом уже считать количество букв и заменять S на точку, то вторая задача выглядит так:

Код:
uses crt;
var c:char;
s:String;
i:byte;
KolA,KolR,KolS:Word;
begin
ClrScr;
KolS:=0;
KolA:=0;
KolR:=0;
s:='';
repeat{пока не ввели *}
c:=ReadKey;{считываем введённый символ}
s:=s+c;
Write(c);
IF c = #13 then{Если нажали Enter - переводим курсор на следующую строку}
WriteLn;
until c = '*';
For i:= 1 to length(s) do
case s[i] of
's','S': begin{если это буква S - заменяем на точку}
s[i]:='.';
inc(kolS);{считаем количество}
end;
'a','A': inc(KolA);{если буква A или R - считаем кол-во}
'r','R': inc(KolR);
end;
WriteLn;
WriteLn('Изменённая строка: ');
WriteLn(s);{выводим ответ}
WriteLn('Количество букв A: ',KolA);
WriteLn('Количество букв R: ',KolR);
WriteLn('Количество букв S: ',KolS);
ReadLn;
end.


Успехов!

С уважением, Дмитрий.


Приложение:
program z161199;
uses crt;
{=== ЗАДАЧА №1 ===}
Procedure vvod_tochek(var x1,x2,x3,y1,y2,y3:Extended);
begin
Write('введите x и y первой точки: ');
Readln(x1,y1);
Write('введите x и y второй точки: ');
Readln(x2,y2);
Write('введите x и y третьей точки: ');
Readln(x3,y3);
end;
Function rasst(x1,x2,y1,y2:Extended):Extended;
begin
{расстояние между двумя точками}
rasst:=sqrt(sqr(x2-x1)+sqr(y2-y1));
end;

var a,b,c,s,x1,x2,x3,y1,y2,y3,poluPer:Extended;
begin
ClrScr;
vvod_tochek(x1,x2,x3,y1,y2,y3);{ввести координаты точек}
a:=rasst(x1,x2,y1,y2);{расчитываем стороны}
b:=rasst(x2,x3,y2,y3);
c:=rasst(x1,x3,y1,y3);
IF ((a < b+c)and(b < a+c)and(c < a+b)) then{если точки образуют треугольник (сума двух сторон больше третьей), то}
begin
WriteLn('периметр = ',a+b+c:5:6);{вычислить периметр}
poluper:=(a+b+c)/2;
s:=sqrt(poluper*(poluper-a)*(poluper-b)*(poluper-c));{вычислить площадь}
WriteLn('площадь = ',s:5:6);
end
else
WriteLn('Треугольника с заданными координатами вершин не существует');
ReadLn();
end.
{=== ЗАДАЧА №2 ===}
var c:char;
KolA,KolR,KolS:Word;
begin
ClrScr;
KolS:=0;
KolA:=0;
KolR:=0;
repeat{пока не ввели *}
c:=ReadKey;{считываем введённый символ}
case c of
's','S': begin{если это буква S - заменяем на точку}
c:='.';
inc(kolS);{считаем количество}
end;
'a','A': inc(KolA);{если буква A или R - считаем кол-во}
'r','R': inc(KolR);
#13: WriteLn;{если нажали Enter - переводим курсор на след. строку}
end;
Write(c);{выводим введённый символ (или точку вместо S)}
until c = '*';
WriteLn;{выводим ответ}
WriteLn('Количество букв A: ',KolA);
WriteLn('Количество букв R: ',KolR);
WriteLn('Количество букв S: ',KolS);
ReadLn;
end.
давно
Мастер-Эксперт
425
4118
24.02.2009, 09:55
общий
Цитата: Ильин Дмитрий
1. заданы координаты 3-х вершин (х1,у1) (х2,у2) (х3,у3). найти его периметр и площадь.

"Его" - это кого?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа