Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ строки

Автор: snopy 20.02.2008 0:35

Пожайлуста помогите подредоктировать такую программу.
Описать процедуру, которая печатает все слова, заканчивающаяся и начинающаяся на заданную букву.
В моём коде ошибка когда вводится например слова 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 20.02.2008 0:53

можна както так...

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 20.02.2008 23:59

а когда через строки делать что обозначает в условии (s[1]=ch) и где оно дальше используется

Автор: volvo 21.02.2008 0:03

Как "что означает"? Проверяет, совпадает ли первый символ строки (s[1]) с заданным (ch)...

Автор: snopy 21.02.2008 1:20

Вот что получилось только при проверке когда вводишь 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 21.02.2008 2:42

пожайлуста помогите исправить

Автор: compiler 21.02.2008 3:27

Цитата(snopy @ 20.02.2008 21:42) *
пожайлуста помогите исправить
ты смотрела) что я привел? для обработки слова, функции необходимо _все_ слово целиком, а ты передаешь вместо слов буквы...

Автор: snopy 21.02.2008 11:25

вообщето я мужского пола. Я смотрел но что то не дошло до меня как это сделать

Автор: volvo 21.02.2008 13:42

Цитата
когда вводишь sisters, coc, sos и вводить букву c то выдаёт пустоту.
Вообще-то, когда при проверке твоей программы вводишь:
Цитата
Ishodnye slova:
sisters
coc
sos
vvedite bykvy:
s

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

Что я делаю не так?