Помощь - Поиск - Пользователи - Календарь
Полная версия: строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
snopy
Пожайлуста помогите подредоктировать такую программу.
Описать процедуру, которая печатает все слова, заканчивающаяся и начинающаяся на заданную букву.
В моём коде ошибка когда вводится например слова sos, coc, do, и задаётся буква s то выдаётся sos и coc/ Амн надо чтоб выдаваласть только sos. И ещё вопрос как можно сделать так чтоб слова вводились через пробел а при нажатии на ентер вводить букву и чтоб выводился результат.
Код

uses crt;  
var st:array[1..3]of string;  
    i:integer;  
procedure vozvrat(var s:string);  
begin  
if s[1]=s[length(s)] then  
writeln (s);  
end;  
begin  
clrscr;  
writeln('Ishodnye slova:');  
for i:=1 to 3 do  
readln(st[i]);
writeln('vvedite bykvy: ');
readln;  
writeln('nuznye slova:');  
for i:=1 to 3 do  
vozvrat(st[i]);  
readln;  
end.  
compiler
можна както так...
type
my_str=array[1..3]of char;
var
st:my_str;
i:integer;
procedure vozvrat(const s:my_str; const ch:char);
begin
if (s[1]=s[high(s)]) and (s[1]=ch) then
writeln (s);
end;
begin
writeln('Ishodnye slova:');
for i:=1 to 3 do begin
writeln('vvedite bykvy: ');
readln(st[i]);
end;
vozvrat(st, 's');
readln;
end.

а если через строки, то так
procedure vozvrat(const s:string; const ch:char);  
begin
if (s[1]=s[length(s)]) and (s[1]=ch) then
writeln (s);
end;
var
st:string;
begin
writeln('Ishodnye slova:');
readln(st);
vozvrat(st, 's');
readln;
end.

>>И ещё вопрос как можно сделать так чтоб слова вводились через пробел а при нажатии на ентер вводить букву и чтоб выводился результат.
читаешь строку, разбиваешь ее на слова и вызываешь процедуру для каждого слова...
как разбить на слова, есть в FAQ...
snopy
а когда через строки делать что обозначает в условии (s[1]=ch) и где оно дальше используется
volvo
Как "что означает"? Проверяет, совпадает ли первый символ строки (s[1]) с заданным (ch)...
snopy
Вот что получилось только при проверке когда вводишь sisters, coc, sos и вводить букву c то выдаёт пустоту. Помогите пожайлуста это подправить
Код

Program z1;
var st:array[1..3] of string;
    i:integer;
procedure vozvrat(var s:string;ch:char);
begin
if (s[1]=s[length(s)]) and (s[1]=ch) then
writeln (s);
end;
BEGIN
writeln('Ishodnye slova: ');
for i:=1 to 3 do
readln(st[i]);
writeln('vvedite bykvy: ');
readln;
writeln('nuznye slova: ');
for i:=1 to 3 do
vozvrat(st[i], 's');
readln;
end.
snopy
пожайлуста помогите исправить
compiler
Цитата(snopy @ 20.02.2008 21:42) *
пожайлуста помогите исправить
ты смотрела) что я привел? для обработки слова, функции необходимо _все_ слово целиком, а ты передаешь вместо слов буквы...
snopy
вообщето я мужского пола. Я смотрел но что то не дошло до меня как это сделать
volvo
Цитата
когда вводишь sisters, coc, sos и вводить букву c то выдаёт пустоту.
Вообще-то, когда при проверке твоей программы вводишь:
Цитата
Ishodnye slova:
sisters
coc
sos
vvedite bykvy:
s

, то выдается
Цитата
nuznye slova:
sisters
sos

Что я делаю не так?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.