19.09.2019, 17:11 [+3 UTC]
в нашей команде: 3 831 чел. | участники онлайн: 7 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
12.09.2019, 08:17

Последний вопрос:
19.09.2019, 14:47
Всего: 150343

Последний ответ:
19.09.2019, 15:43
Всего: 259029

Последняя рассылка:
19.09.2019, 16:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
10.02.2019, 22:50 »
dar777
Это самое лучшее решение! [вопрос № 194660, ответ № 277446]
27.12.2011, 00:00 »
Цыганок Олег Александрович
Огромное Вам спасибо!!! Очень благодарен!!! [вопрос № 184963, ответ № 269334]
11.11.2009, 11:38 »
Arkadiy
Спасибо! Прибор хороший, и я сам готов оплатить за его ремонт, но и в этом мне отказали. [вопрос № 174132, ответ № 256381]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 92
zdwork
Статус: 3-й класс
Рейтинг: 73
Сучкова Татьяна Михайловна
Статус: Мастер-Эксперт
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 143606
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Bekirov
Отправлена: 10.09.2008, 21:16
Поступило ответов: 2

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

Состояние: Консультация закрыта

Ответ # 228976 от SHERRY

Здравствуйте, 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!


Консультировал: SHERRY
Дата отправки: 10.09.2008, 22:12

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, 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.

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


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 10.09.2008, 22:34

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 143606

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 1

= общий = | 10.09.2008, 22:49 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Ещё можно всё организовать с помощью рекурсии, но это будет сложно для Вас,
также в своей программе забыл поставить а:=''; . Контроля ввода длины строки тоже нет.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.30258 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35