Var c: Char; s: String; i,k,p: Integer; Begin ReadLn(c); {Чтение заданного символа} ReadLn(s); {Чтение заданного слова} p:= Pos(c,s); {Определяем позицию символа} If (p=0) Then {Функция вернёт 0, если символ не будет найден} WriteLn('Такого символа в слове нет.') Else {Если символ есть, то ...} Begin WriteLn('Указанный символ расположен на позиции: ',p); k:= 0; {k хранит количество вхождений} p:= Length(s); {p хранит длину строки(слова)} For i:=1 To p Do {Пробегаем по всем символам слова} If (s[i]=c) Then inc(k); {Если символ совпадает, увеличиваем на 1 переменную k} WriteLn('Количество вхождений данного символа: ',k); End; End.
kirik197308
08.03.2020
Сначала надо избавиться от ошибок (пункт №3) иначе не сможем выполнить 1 и 2 пункт задания. Исправляем if N mod 10 k:=N mod 10; на if (N mod 10 < k) then k:=N mod 10; Исправляем N:N div 10; на N:= N div 10;
После исправления ошибок при вводе 537 получим 3 Программа будет работать правильно для любого числа, у которого вторая цифра слева меньше первой цифры, например: 7193
Чтобы программа работала правильно для всех чисел надо изменить это: while N > 10 do на while N > 0 do
После всех исправлений код программы стал таким: var N, k: integer; begin readln(N); k := 9; while N > 10 do begin if (N mod 10 < k) then k := N mod 10; N := N div 10; end; write(k) end.
Var c: Char;
s: String;
i,k,p: Integer;
Begin
ReadLn(c); {Чтение заданного символа}
ReadLn(s); {Чтение заданного слова}
p:= Pos(c,s); {Определяем позицию символа}
If (p=0) Then {Функция вернёт 0, если символ не будет найден}
WriteLn('Такого символа в слове нет.')
Else {Если символ есть, то ...}
Begin
WriteLn('Указанный символ расположен на позиции: ',p);
k:= 0; {k хранит количество вхождений}
p:= Length(s); {p хранит длину строки(слова)}
For i:=1 To p Do {Пробегаем по всем символам слова}
If (s[i]=c) Then inc(k); {Если символ совпадает, увеличиваем на 1 переменную k}
WriteLn('Количество вхождений данного символа: ',k);
End;
End.