Страница 1 из 1
не могу понять
Добавлено: 01 апр 2014, 19:21
sisaw
Распечатать список учеников, фамилии которых начинаются на букву В, с указанием даты их рождения(у меня программа не проверяет фамилии начинающие на букву "в" сказали что надо вырезать этот фрагмент и сделать проверку но я даже не представляю каким оператором можно это сделать)
Код: Выделить всё
program b;
type anketa=record
f:string;
i:string;
o:string;
dat_r:string;
end;
var
s:array[1..4] of anketa;
i,k:integer;
begin
for i:=1 to 4 do
begin
writeln('введите ФИО');
readln(s[i].f);
readln(s[i].i);
readln(s[i].o);
writeln('ввод закончен');
end;
k:=0;
for i:=1 to 4 do
if s[1].f='в' then
begin
writeln('фамилии студентов',s[i].f,s[i].dat_r);
end
else
k:=k+1;
if k=4 then
writeln('нет');
end.
Re: не могу понять
Добавлено: 01 апр 2014, 19:28
somewhere
if s[1].f='в' - проверяет всю строку на равенство "в", а нужен именно 1 символ (в самом простом случае): if s.f[1]='в'
Нужно предусмотреть, что фамилия может начинаться с пробела или быть пустой, а так же предусмотреть заглавные и строчные буквы
Re: не могу понять
Добавлено: 01 апр 2014, 19:46
sisaw
somewhere писал(а):if s[1].f='в' - проверяет всю строку на равенство "в", а нужен именно 1 символ (в самом простом случае): if s.f[1]='в'
Нужно предусмотреть, что фамилия может начинаться с пробела или быть пустой, а так же предусмотреть заглавные и строчные буквы
А как сделать что бы он проверял и заглавную букву
Re: не могу понять
Добавлено: 01 апр 2014, 20:09
Duncon
if s[1].f='В'
Re: не могу понять
Добавлено: 01 апр 2014, 21:27
sisaw
Duncon писал(а):if s[1].f='В'
да это понятно просто я не понимаю как его в цикл записать там надо еще раз for открывать или нет?
Re: не могу понять
Добавлено: 01 апр 2014, 22:57
Duncon
if (s[1].f='в') or (s[1].f='В') then
Re: не могу понять
Добавлено: 04 апр 2014, 11:15
Сионист
Нет. Зачем первый элемент в цикле проверять?
Re: не могу понять
Добавлено: 04 апр 2014, 11:19
Сионист
А если надо отбросить стартовые пробелы, то
Код: Выделить всё
function CutStartSpaces(s:string):string;
var i,l:integer;
c:char;
r:string;
f:boolean;
begin
r:='';
l:=length(s);
f:=false;
for i:=1 to l do
begin
c:=s[i];
if c<>' ' then f:=true;
if f then r:=r+c;
end;
CutStartSpaces:=r;
end;
и тогда
Код: Выделить всё
if (CutStartSpaces(s[i].f)='в') or (CutStartSpaces(s[i].f)='В') then
Re: не могу понять
Добавлено: 04 апр 2014, 11:21
Сионист
Но вообще то помощь тебе не нужна, иначе дал бы теме осмысленное название.