Помощь - Поиск - Пользователи - Календарь
Полная версия: Строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
SeRGuS
Напишите программу с использованием строк, если можно то с объеснением данной программы:

Дана строка. Подсчитать число вхождений буквы f в первые три группы букв, в группе должны быть только буквы, группы разделить пробелами.
APAL
Забавная формулировка.... сначала подсчитать вхождения в группы, а потом оказывается групп то и нету - их надо еще разделить пробелами.... забавно.
xds
...поскольку заведомо существует одна группа, то задача может быть сведена к подсчету количества символов "f" во всей строке (-;
SeRGuS
Кто может напишите программу, а то я с задачами над строками не дружу !!

Если непонятна формулировка то должен ввести следующие:

safuiffywqjh (n-ое кол-во символов)

и вывести на экран :

saf uif fyw qjh

кол-во вх символа f в первые три гр=3

Заранее всем спасибо !
volvo
SeRGuS
А конкретней, почему группы содержат по 3 символа (а не по 4, например)? Это как-то связано с общим количеством символов в исходной строке?
SeRGuS
volvo

Цитата
А конкретней, почему группы содержат по 3 символа (а не по 4, например)? Это как-то связано с общим количеством символов в исходной строке?


Та хоть пять символов в группе(просто привел более простой вариант), длина строки может быть любой достаточно длиной. smile.gif

Зависимости, кол-ва символов в группе с иходной строкой, нету.
volvo
Тогда как разбивать на группы??? blink.gif
SeRGuS
Сегодня узнал, что имено надо сделать:
-ввести строку наподобие:

nb stk lfn 123 5

группы букв - это может быть любое слово, для отделения одной группы(слова) от другой использовать пробел.
-программа должна проверить не содержатся ли в первых трех словах цифры и подсчитать кол-во вхождения буквы f в них
SeRGuS
Добрый вечер всем, задача так и небыла решена мной, очень хороший человек написал приблизительный текст, но она неработает так как надо может кто - нибудь сможет отредактировать исходник:

Код

var S0,S1,S: string;
l: char;
k,i: integer;
begin
S0:='';S:='';
for i:=1 to 3 do
begin
S0:= S0+S; S:='';
repeat
write ('Введите след символ строки');
read(l);
S:=S+l;
if (l>='0') and (l<='9') then write ('Непр ввод')
else if pos('f',S)<>0 then k:=k+1;
until l=' ';
write ('Введите оставшуюся часть строки');
read (s1);
S:=S0+S1;
end; end.


P.S.: Нужно ввести все одной строкой, а не почастям.
volvo
SeRGuS
Если я правильно понял, тебе нужно вот это...
Код

uses crt;
var
 ch: char;
 i, k: byte;
 s: string;
begin
 write(' s = ');
 s := ''; k := 0; i := 1;
 repeat
   ch := readkey; write(ch);
   if ch = ' ' then
     begin
       inc(i); s := ''
     end
   else
     if ch in ['0' .. '9'] then
     else
       begin
         s := s + ch;
         inc(k, ord(ch = 'f'))
       end
 until i > 3;

 writeln(s);
 writeln(k)
end.
SeRGuS
Огромное спасибо !!! То что надо ! :P
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.