Консультация № 143606
10.09.2008, 21:16
0.00 руб.
0 3 2
Заданы координаты 3-х вершин треугольника (х1,у1).(х2,у2).(х3,у3). Найти его периметр
и полощадь.
И если можно помогите вторую решить просто я не понемаю смысл задачи просто их надо решать через модуль мне главное чтоб понять как она будут работать остальное я сам сделаю: Ввести последовательность символов, предшествующих символу * и выяснить сколько среди букв S,R,A. все буквы S заменить на точку. Мне уже завтра надо Помогите!!!!!!!!!!!!!

Обсуждение

Неизвестный
10.09.2008, 22:12
общий
это ответ
Здравствуйте, Bekirov!
Цитата: Bekirov
Ввести последовательность символов, предшествующих символу * и выяснить сколько среди букв S,R,A. все буквы S заменить на точку.

Последовательность символов ~ строка. От этого и будем исходить.
Код:
 var
posl: string; {В этой переменной будем хранить последовательность}
S,R,A: byte; {переменные-счётчики для соотв. символов}
i: byte; {переменная-индекс}
begin
S := 0; R := 0; A := 0; {инициализация}
Write('Type your string now: '); {"приветствие"}
Readln(posl); {считываем последовательность}
for i:=1 to length(posl) do {пробегаем по всем символам}
case posl[i] of {и смотрим}
'S': begin inc(S); delete(posl, i,1); insert('.', posl,i); end; {если найдём символ S , то удалим его из строки, вместо него вставим точку и увеличим счётчик на единичку}
'R': inc(R); {если найден символ R увеличиваем переменную R на единичку}
'A': inc(A); {догадайтесь сами ;)}
end;
writeln;
writeln(posl); {выводим обработанную последовательность на экран}
writeln('S = ', S, '; R = ', R, '; A = ',A,'.'); {и подсчитанные символы}
readln;
end.


Можно ещё поступить следующим образом:
считывать последовательность с клавиатуры посимвольно и проверять на предмет Вашего условия. Результат тот же, но работать будет медленнее. Считанные символы будем хранить в строке, ибо нужно видеть результат
Цитата: Bekirov
все буквы S заменить на точку.

Итак..
Код:
 
var
posl: string; {здесь будем хранить все символы}
S,R,A: byte; {это по прежнему счётчики}
ch: char; {в эту переменную будем помещать считанный с клавиатуры символ}
i: byte;
begin
S := 0; R := 0; A := 0; posl := ''; {инициализация}
Writeln('Type your symbols now (`*` is last)');
Repeat
readln(ch);
case ch of
'S': begin inc(S); ch := '.'; end;
'R': inc(R);
'A': inc(A);
end;
posl := posl + ch;
Until ch = '*';
writeln;
writeln(posl);
writeln('S = ', S, '; R = ', R, '; A = ',A,'.');
readln;
end.



Разбирайтесь. Если будут вопрос - обращайтесь в мини-форум или ЛС.
Best regard's!
давно
Старший Модератор
31795
6196
10.09.2008, 22:34
общий
это ответ
Здравствуйте, Bekirov!

Программа 1:
Код:
 var
a:real;
x1,y1,x2,y2,x3,y3:integer;
begin
{вводим координаты}
write('x1:');readln(x1);
write('y1:');readln(y1);
write('x2:');readln(x2);
write('y2:');readln(y2);
write('x3:');readln(x3);
write('y3:');readln(y3);
{считаеим периметр и выводи результат}
a:=sqrt(sqr(x1-x2)+sqr(y1-y2))+sqrt(sqr(x1-x3)+sqr(y1-y3))+sqrt(sqr(x3-x2)+sqr(y3-y2));
writeln('P:=',a);
{считаем полупериметр и выводим площадь}
a:=a/2;
writeln('S:=',sqrt(a*(a-sqrt(sqr(x1-x2)+sqr(y1-y2)))*
(a-sqrt(sqr(x3-x2)+sqr(y3-y2)))*
(a-sqrt(sqr(x1-x3)+sqr(y1-y3)))));
readln;
end.

Всё считается по формуле Герона:


длины сторон по формуле Пифагора:


Программа 2:
Код:
 uses
crt;
var
a:string;
b:char;
cA,cS,cR:integer;
begin
{сбрасываем счетчики}
cA:=0;
cR:=0;
cS:=0;
write('Enter you string:');
repeat
{вводим без эхо, и выводим символ}
b:=ReadKey;
write(b);
{считаем нужные символы}
case b of
'S':begin
inc(cS);
b:='.';
end;
'R':inc(cR);
'A':inc(cA);
end;
a:=a+b;
until b='*';
{выводим результаты}
writeln;
writeln('Result:':17,a);
write('A:=',cA,'R:=':5,cR,'S:=':5,cS);
readln;
end.

В программе организован контролируемый ввод, практически при такой схеме Вы можете делать, что угодно.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
10.09.2008, 22:49
общий
Ещё можно всё организовать с помощью рекурсии, но это будет сложно для Вас,
также в своей программе забыл поставить а:=''; . Контроля ввода длины строки тоже нет.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа