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