Paster Fob писал(а):что-то совсем хрень какая-то,в задаче совсем не то сказано
Да, не то. Но я всего лишь проверил исходный вариант ученика на компиляцию.
Модераторы: Oleg_D, Модераторы
Paster Fob писал(а):что-то совсем хрень какая-то,в задаче совсем не то сказано
function NoG: string;
var n: string;
ch: char;
begin
n:='';
read (INtext, ch);
while not eoln (INtext) and (ord(ch)>32) do begin n:=n+ch; read (INtext, ch); end;
NoG:=n;
end;
n:='';
deka47 писал(а):Что значит вот это чудо: n:='';
deka47 писал(а):И еще один вопрос, нужно создать функцию, чтобы она получала введенную стринговую строку от пользователя и печатала только первое слово с этой строки. Т.е. до первого пробела, как это сделать? С файлом как-то легче, чем с веденной строкой.
R:='';
for i:=1 to Length(S) do begin
if S[i]=Chr(32) then break;
R:= R+S[i];
end;
deka47 писал(а):Допустим, что строка не пустая, то почему она не выводит слово? Даже если бы строка имела какое-то значение, то нужное слово вывелось бы? Почему нет?
Paster Fob писал(а):"частично упорядоченная очередь" .Это как?
function sumnumber(arg:integer):integer;
var n,sum:byte;
begin
sum:=0;
repeat
n:=arg mod 10;
sum:=sum+n;
arg:=arg div 10;
until arg=0;
sumnumber:=sum;
end;
function checknumber(arg:longint):boolean;
var n1,n2:integer;
begin
checknumber:=false;
n1:=arg mod 1000;
n2:=arg div 1000;
if sumnumber(n1)=sumnumber(n2) then
checknumber:=true;
end;
var
i,n1,n2:longint;
begin
writeln('введите диапозон через пробел в пределах 100000-999999');
readln(n1,n2);
for i:=n1 to n2 do
if checknumber(i) then
write(i,' ');
readln
end.
function checknumber(arg:longint):boolean;
begin
checknumber:= sumnumber(arg mod 1000) = sumnumber(arg div 1000)
end;
function check (s: string; ch: char): boolean;
var i: integer;
b: boolean;
n: string;
begin
check:=false;
n:='';
for i:=1 to length (s) do if (s[i]=ch) then begin writeln('Position in the word - ', i); b:=true; end;
if b then
writeln ('There is a letter!') else
writeln ('There isn''t a letter!');
check:=b;
end;
var s: string;
ch: char;
begin
write ('Write a word - '); readln (s);
write ('Write a letter - '); readln (ch);
check (s, ch);
end.
Position in the word - 2
Position in the word - 5
There is a letter!
Position in the word - 2, 5
There is a letter!
Write a word - PASCAL
Write a letter - A
Position in the word - 2, 5,
There is a letter!
Write a word - PASCAL
Write a letter - M
Position in the word -
There isn't a letter!
n:='';
for i:=1 to length (s) do if (s[i]=ch) then begin k:=inttostr(i); n:=n + k + ', '; b:=true; end;
writeln('Position in the word - ', n);
function check2(var s:string;ch:char):boolean;
var i:integer;
begin
check2:=false;
for i:=1 to length(s) do
if s[i]=ch then begin
check2:=true;
break;
end;
end;
function check3(var s:string;ch:char):integer;
var i,k:integer;
begin
k:=0;
for i:=1 to length(s) do
if ch=s[i] then
inc(k);
check3:=k;
end;
function check (var s: string; ch: char): boolean;
var i,k:integer;b:boolean;
c:char;
begin
k:=0;
check:=false;
b:=check2(s,ch);
for i:=1 to length(s) do begin
if b then begin
write('Position in the word - ');
b:=false;
end;
if (s[i]=ch) then begin
inc(k);
if check3(s,ch)=k then c:='.'
else c:=',';
write(i,c);
check:=true;
if c='.' then begin
write(#10);
break
end;
end;
end;
end;
var s: string;
ch: char;
begin
write ('Write a word - ');
readln (s);
write ('Write a letter - ');
readln (ch);
if check (s, ch) then begin
write(#13);
writeln ('There is a letter!')
end
else
writeln ('There is not a letter!');
readln;
end.
deka47 писал(а):Вот код:
- Код: Выделить всё
n:='';
for i:=1 to length (s) do if (s[i]=ch) then begin
k:=inttostr(i); n:=n + k + ', '; b:=true;
end;
writeln('Position in the word - ', n);
Осталось разобраться с запятой после последней цифры и выводом, который выводиться когда нету буквы. Если нету буквы, то пусть и не выводится, что ли...
T:='';
for i:=1 to length (s) do if s[i]=ch then begin
if Length(T)>0 then T:=T + ', ';
T:=T + inttostr(i);
end;
if Length(T)>0
then writeln('Positions in the word : ', T)
else writeln ('There is not a letter!');
deka47 писал(а):Осталось разобраться с запятой после последней цифры и выводом, который выводиться когда нету буквы.
procedure check(const w: string; ch: char);
var
i, found: integer;
begin
found := 0;
for i := 1 to length(w) do
if w[i] = ch then begin
if found = 0
then write('Position(s) in the word: ', i)
else write(', ', i);
found := found + 1;
end;
if found > 0 then writeln('.');
case found of
0: writeln('There is NO letter.');
1: writeln('There is letter.');
else writeln('There are ', found, ' letters.');
end;
end;
var
s: string;
c: char;
begin
write('Enter a word: '); readln(s);
write('Enter a char: '); readln(c);
check(s, c);
end.
$ ./test1
Enter a word: pascal
Enter a char: z
There is NO letter.
$ ./test1
Enter a word: pascal
Enter a char: s
Position(s) in the word: 3.
There is letter.
$ ./test1
Enter a word: pascal
Enter a char: a
Position(s) in the word: 2, 5.
There are 2 letters.
var s: string;
i, j, k: integer;
b: boolean;
begin
writeln (s); readln (s);
j:=length(s);
k:=j;
for i:=1 to length(s) do if s[1] = s[k] then begin
j:=length(s)-i;
if j=0 then break else
if s[i+1] = s[j] then b:=true else b:=false;
end;
if b
then writeln ('Слово є паліндромом.')
else writeln ('Слово не являється паліндромом.');
end.
Вернуться в Книга "Песни о Паскале"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1