02.12.2014, 17:53 | #1 (permalink) |
Новичок
Регистрация: 25.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
|
Задача обработки строк
|
02.12.2014, 17:53 | |
Helpmaster
Member
Регистрация: 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) |
Специалист
Регистрация: 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. |
10.12.2014, 19:31 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
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:30 | #9 (permalink) |
Новичок
Регистрация: 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] все та же ошибка,или я где-то номер строки не указал? |
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. и больше ничего добавлять не надо. Откампилируйте и запустите полученный файл. В окне введёте свою строку и получите примерно это: |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|