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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 19:11   #1
tutis
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 13
Восклицание Строки.Паскаль

Всем здравствуйте.Помогите пожалуйста написать комментарии к задаче.
Вот условие.Дана строка.Указать те слова,которые содержат хотя бы одну букву k.
вот код программы:
Код:
var
use crt;
a,t:string;
b:array[1..10]of string;
i,k,j,f:integer;
begin
clrscr;
writeln('Введите строку');
readln(a);
k:=1;
for i:=1 to length(a)-1 do
if a[i]=' ' then inc(k) else b[k]:=b[k]+a[i];
for i:=1 to k do
begin
t:=b[i];
f:=0;
for j:=1 to length(t) do
if t[j]='k' then f:=1;
if f=1 then write(b[i],' ');
end;
readln;
end.
tutis вне форума Ответить с цитированием
Старый 23.12.2010, 19:24   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ну как-то так:
Код:
Uses CRT;
Var
     S,Word:String;
     Words:array[1..10] of String;
     I,n:Integer;
     isWord:Boolean;
Begin
        Clrscr;
        Write('Enter string:');
        Readln(S);
        isWord:=False;
        n:=0;
        For I:=1 To Length(S) Do
        Begin
                If (S[i] in ['A'..'Z']) or
                   (S[i] in ['a'..'z'])  Then
                Begin
                        If not isWord Then
                        Begin
                               isWord:=True;
                               Word:='';
                               Word:=Word+S[i];
                        End
                        Else
                        Word:=Word+S[i];
                End
                Else
                Begin
                      isWord:=False;
                      Writeln(Word);
                      If Pos('k',Word)<>0 Then
                      Begin
                              Inc(N);
                              Words[N]:=Word;
                      End;
                End;
        End;
        isWord:=False;
        Writeln(Word);
        If Pos('k',Word)<>0 Then
        Begin
        Inc(N);
        Words[N]:=Word;
        End;
        For I:=1 To N Do
        Writeln('Word = ',Words[I]);
        Readln;
End.
Не очень оптимально, но сойдёт.
_-Re@l-_ вне форума Ответить с цитированием
Старый 23.12.2010, 19:40   #3
tutis
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 13
По умолчанию

Спасибо большое!А разве программа,которую я написала выше,работает неправильно или она не совсем точная?Вы не могли бы написать комметарии ко своей программе.
tutis вне форума Ответить с цитированием
Старый 23.12.2010, 19:42   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Пожалуйста, еще такой вариант
Код:
program zad1;
var s1,s:string;
j,i,l:integer;
begin
readln(s);
for i:=1 to length(s) do
begin
if (s[i]=' ') or (i=length(s)) then
begin
if i=length(s) then s1:=s1+s[i];
for j:=1 to length(s1) do
if s1[j]='k' then
begin
if l=0 then writeln('слова в которых есть буква k');
writeln(s1);
inc(l);
break;
end;
s1:='';
end
else
s1:=s1+s[i];
end;
if l=0 then writeln('таких слов в строке нет');
end.
Базиля вне форума Ответить с цитированием
Старый 23.12.2010, 19:44   #5
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
А разве программа,которую я написала выше,работает неправильно или она не совсем точная?
Только что проверил ее. Она не работает правильно. Ввел два слова с буквой к, а он вывел только одно.
Базиля вне форума Ответить с цитированием
Старый 23.12.2010, 20:03   #6
tutis
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Базиля Посмотреть сообщение
Только что проверил ее. Она не работает правильно. Ввел два слова с буквой к, а он вывел только одно.
Большое спасибо!А можешь написать объяснения ко своей программе.
tutis вне форума Ответить с цитированием
Старый 23.12.2010, 20:16   #7
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Код:
program zad1;
var s1,s:string;
j,i,l:integer;
begin
readln(s); {ввод строки}
for i:=1 to length(s) do {бегаем по символьно по всей строке}
begin
if (s[i]=' ') or (i=length(s)) then {если очередной символ равен пробелу(т.о. забираем по слову из строки) или последнему сиволу строки(значит это последнее слово)}
begin
if i=length(s) then s1:=s1+s[i]; { если в строке s мы на последнем символе значит это последнее слово и нужно занести этот символ в строку s1 т.к. на ветку else мы не попадем и пропустим этот последний символ, а он может оказаться тем самым символом который нам нужен, да и при выводе если там окажется символ к выведем не все слово целиком}
for j:=1 to length(s1) do
if s1[j]='k' then {если очередной символ строки s1 равен к то эта строка которая нам нужна соответственно выводим ее}
begin
if l=0 then writeln('слова в которых есть буква k'); {думаю здесь все и так понятно :) }
writeln(s1);
inc(l); { увеличиваем перменную l на 1, она нам нужна для того чтобы не выводить предложение по несколько раз 'слова в которых есть буква k' это будет не красиво, и также для вывода в случае если символа к в строке вообще нет}
break; { прерываем цикл т.к. в последующих итерациях нету смысла}
end;
s1:='';{ "обнуляем" строку s1 для занесения в нее нового слова.}
end
else
s1:=s1+s[i]; {добавляем в cтроку s1 символы из строки s т.о. выделяем предложение из строки s}
end;
if l=0 then writeln('таких слов в строке нет');
end.
Базиля вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Строки sllh_111 Помощь студентам 9 15.05.2010 18:54
Паскаль. Строки. Mon_ Ennemi Помощь студентам 2 05.01.2010 22:31
Паскаль(Строки) ax/bx Помощь студентам 1 29.12.2009 17:13
Паскаль строки! Antonio_getscool Помощь студентам 1 18.12.2009 11:45
Строки(Паскаль) Паскалька^^ Помощь студентам 6 14.11.2009 13:12