Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 16:28   #1
AlexMasolev1992
Новичок
Джуниор
 
Регистрация: 29.11.2012
Сообщений: 4
По умолчанию Разбор задач, прошу объяснить.

1) Дан текст из строчных латинских букв, за которым следует точка. Напечатать первые вхождения букв в текст, сохраняя их исходный взаимный текст.
Вот правильное решение к нему, но я хочу понять что откуда берется, пожалуйста, объясните подробно как оно решается, буду очень благодарен.
uses CRT;
var
S: String;
C: array[Char] of Boolean;
Ch: Char;
I: Byte;
begin
Write('Vvedite stroky: ');
ReadLn(S);
for Ch := #0 to #255 do
C[Ch] := True;
for I := 1 to Length(S) do
if C[S[I]] then
begin
Write(S[I]);
C[S[I]] := False;
end;
WriteLn;
ReadLn;
end.

2) Указать сколько раз заданное слово встречается в строке.
Таже самая ситуация( немогу понять ход решения задачи, помогите пожалуйста.
uses crt;
var a,bbc,yy : string;
k,n,ppl : integer;
begin
clrscr;
writeln('Vvedite stroku:');
readln(a);
write('Vvedite slovo: ');
readln(bbc);
k := 1;
n:= 0;
ppl := length(a);
while k<=ppl do
begin
while (a[k]=' ') and (k<=ppl) do inc(k);
yy:='';
while (a[k] <> ' ') and (k<=ppl) do
begin
yy := yy + a[k];
inc(k);
end;
if yy = bbc then inc(n);
inc(k);
end;

writeln('Chislo vhozhdenij: ',n);
readln;
end.
AlexMasolev1992 вне форума Ответить с цитированием
Старый 29.11.2012, 16:57   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

1.
Код:
uses CRT; 
var
S: String; // переменная в которую поместим исходный текст
C: array[Char] of Boolean; // булевый массив с размерностью количества символов
Ch: Char; // символьная переменная
I: Byte; // переменная типа байт от 0 до 255
begin
Write('Vvedite stroky: ');
ReadLn(S); // считываем то что ввели в переменную
for Ch := #0 to #255 do // сбрасываем все символьные 
C[Ch] := True; //значения массива в true

for I := 1 to Length(S) do // цикл от 1 до длинны введенной строки
if C[S[I]] then // проверяем что в массиве под "индексом" i-того символа строки
begin // если в массиве стоит true
Write(S[I]); // то выводим этот символ
C[S[I]] := False; // и выставляем на данный символ значение в false (т.к. его уже вывели)
end;
WriteLn; // переход на след строку
ReadLn; // ожидание нажатия Enter
end.
2.
Код:
uses crt;
var 
a,bbc,yy : string;
k,n,ppl : integer;
begin
clrscr; // очищаем окно вывода
writeln('Vvedite stroku:');
readln(a); // помещаем введенный текст в переменную
write('Vvedite slovo: ');
readln(bbc); // считываем введенное слово
k := 1; // к - позиция в тексте
n:= 0;
ppl := length(a); // вычисляем длинну введенного текста
while k<=ppl do // цикл пока позиция в тексте не выйдет за рамки текста
begin
while (a[k]=' ') and (k<=ppl) do inc(k); // переходим к след символу покуда на к-том месте стоит пробел и покуда не конец строки
yy:='';
while (a[k] <> ' ') and (k<=ppl) do // если к-тый символ не пробел и еще не конец строки то начинаем цикл
begin
yy := yy + a[k]; //считываем в уу посимвольно текст, "копируем" одно слово из текста
inc(k);
end;

if yy = bbc then inc(n); // если скопированное слово равняется введенному слову для поиска
inc(k); // то +1 к счетчику.
end;

writeln('Chislo vhozhdenij: ',n); // вывод результата
readln;
end.
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 29.11.2012 в 17:09.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 29.11.2012, 17:12   #3
AlexMasolev1992
Новичок
Джуниор
 
Регистрация: 29.11.2012
Сообщений: 4
По умолчанию

VIK_aka_TOR, спасибо большущее!!! не представляете как выручили.
AlexMasolev1992 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритмы. Не прошу решить. Прошу помочь! pascaluser Паскаль, Turbo Pascal, PascalABC.NET 2 12.10.2012 08:45
прошу объяснить почему не работает регуляр frommars PHP 2 07.05.2012 11:12
Лабораторка.Прошу помощи в решении задач на паскале kikim Помощь студентам 3 29.11.2009 22:22
помогите пожалуйста с решением задач с матрицами очень прошу Денисько54 Помощь студентам 18 04.03.2009 11:35
Прошу помощи в решении 2х задач (Паскаль) Amatriz Паскаль, Turbo Pascal, PascalABC.NET 5 28.11.2008 14:13