Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 02.12.2014, 17:53   #1 (permalink)
artxdf
Новичок
 
Регистрация: 25.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию Задача обработки строк

Дана строка символов.Группы символов,разделенные одним или несколькими пробелами и не содержащие пробелов внутри себя,будем называть словами.Подсчитать количество букв ,,a'' в последнем слове данной строки.
artxdf вне форума   Ответить с цитированием

Старый 02.12.2014, 17:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Подобные вопросы раньше тоже создавались

Удаление строк в Word
Задача обработки двумерных массивов
Сортировка строк в Си
Упорядочение строк матрицы

Старый 02.12.2014, 22:03   #2 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

var A:array[1..100] of string;
s,s1:string;
i,n:integer;
begin
Writeln('String :');
Readln(s);
n:=1; i:=1;
repeat
s1:='';
While s[i]=' ' do Inc(i);
if i>Length(s) then break;
While s[i]<>' ' do
begin
s1:=s1+s[i];
Inc(i);
end;
A[n]:=s1;
Inc(n);
until i>Length(s);
s1:=A[n-1];
n:=0;
for i:=1 to Length(s1) do
if s1[i]='a' then Inc(n);
Writeln('Bukv -a- = ',n);
Readln;
end.
Евгений вне форума   Ответить с цитированием
Старый 02.12.2014, 22:16   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Женя, а к чему такие сложности? Всё куда как проще:
Код:
Var
 S:String;
 i,N:Byte;
Begin
 Writeln('Enter the string:');
 Readln(S);
 N:=0;
 i:=Length(S);
 Repeat
  if S[i]='a' then Inc(N);
  Dec(i);
 Until S[i]=' ';
 Writeln('N = ',N);
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 10.12.2014, 18:47   #4 (permalink)
artxdf
Новичок
 
Регистрация: 25.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию

Ошибка времени выполнения: Индекс находился вне границ массива.
С чем это может быть связано?
artxdf вне форума   Ответить с цитированием
Старый 10.12.2014, 19:31   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от artxdf Посмотреть сообщение
Ошибка времени выполнения: Индекс находился вне границ массива.
С чем это может быть связано?
О какой из двух программ речь? Какую строку вводили? В ней точно есть хотя бы один пробел?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 10.12.2014, 20:55   #6 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

Надо изменить строку:
While s[i]<>' ' do
на
While (s[i]<>' ') and (i<=Length(s)) do

если совсем ничего не ввести, то выдаст ошибку

Последний раз редактировалось Евгений; 10.12.2014 в 21:01
Евгений вне форума   Ответить с цитированием
Старый 10.12.2014, 22:09   #7 (permalink)
artxdf
Новичок
 
Регистрация: 25.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию

В том коде,что скинул Евгений сюда While (s[i]<>'aad faad '
В том,что Владимир Until S[i]='aad faad '
Или я что-то решительно не понимаю?
artxdf вне форума   Ответить с цитированием
Старый 10.12.2014, 22:14   #8 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

В моём замените строку
Евгений вне форума   Ответить с цитированием
Старый 10.12.2014, 22:30   #9 (permalink)
artxdf
Новичок
 
Регистрация: 25.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию

[pascal]
var A:array[1..100] of string;
s,s1:string;
i,n:integer;
begin
Writeln('String :');
Readln(s);
n:=1; i:=1;
repeat
s1:='1';
While s[i]='raaah haet ' do Inc(i);
if i>Length(s) then break;
While (s[i]<>'raaah haet ') and (i<=Length(s)) do
begin
s1:=s1+s[i];
Inc(i);
end;
A[n]:=s1;
Inc(n);
until i>Length(s);
s1:=A[n-1];
n:=0;
for i:=1 to Length(s1) do
if s1[i]='a' then Inc(n);
Writeln('Bukv -a- = ',n);
Readln;
end.
[/pascal]
все та же ошибка,или я где-то номер строки не указал?
artxdf вне форума   Ответить с цитированием
Старый 10.12.2014, 22:39   #10 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

var A:array[1..100] of string;
s,s1:string;
i,n:integer;
begin
Writeln('String :');
Readln(s);
n:=1; i:=1;
repeat
s1:='';
While s[i]=' ' do Inc(i);
if i>Length(s) then break;
While (s[i]<>' ') and (i<=Length(s)) do
begin
s1:=s1+s[i];
Inc(i);
end;
A[n]:=s1;
Inc(n);
until i>Length(s);
s1:=A[n-1];
n:=0;
for i:=1 to Length(s1) do
if s1[i]='a' then Inc(n);
Writeln('Bukv -a- = ',n);
Readln;
end.

и больше ничего добавлять не надо. Откампилируйте и запустите полученный файл.
В окне введёте свою строку и получите примерно это:
Миниатюры
aacuiyiiue.jpg  
Евгений вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:30.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.