Вопрос задан 27.02.2019 в 01:36. Предмет Информатика. Спрашивает Габдулхакова Оксана.

Почему программа в Паскале не видит "." в программе: program lolipops; var s:string; n,k,i:integer;

begin writeln ('Введите слово'); readln (s); I:=1; While i<=length(s) do begin If s[i]='.' then k:=k+1; end; writeln (k); end.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Клусс Даша.
Ты говоришь:
пока i < длины строки S делай:
если S с индексом i = "." то k++
Все
Ты не меняешь "i", он у тебя всегда 1й элемент смотрит)
Как должно быть:
------------------
While i<=length(s) do begin
If s[i]='.' then
k:=k+1;
inc(i);
end;
----------------------


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В вашем фрагменте программы на Pascal есть несколько проблем, из-за которых код может не выполняться корректно. Давайте разберемся с ними.

1. Ваша программа не инициализирует переменную `k` перед использованием. Вы должны установить начальное значение `k` равным 0:

```pascal var s: string; n, k, i: integer; begin writeln('Введите слово'); readln(s); i := 1; k := 0; // инициализация переменной k while i <= length(s) do begin if s[i] = '.' then k := k + 1; i := i + 1; end; writeln(k); end. ```

2. В строке `while i <= length(s) do` вы используете оператор `do`, но не заключаете тело цикла в `begin` и `end`. В Pascal тело цикла должно быть заключено в блок `begin...end`. Я внес исправление в код, добавив `begin` перед `while` и `end` после `writeln(k)`:

```pascal var s: string; n, k, i: integer; begin writeln('Введите слово'); readln(s); i := 1; k := 0; // инициализация переменной k while i <= length(s) do begin if s[i] = '.' then k := k + 1; i := i + 1; end; writeln(k); end. ```

3. В операторе `readln(s)` вы можете встретиться с проблемой, если ввод будет содержать пробелы. Для считывания строки целиком с пробелами рекомендуется использовать функцию `ReadLn` вместо `readln(s)`:

```pascal var s: string; n, k, i: integer; begin writeln('Введите слово'); ReadLn(s); i := 1; k := 0; // инициализация переменной k while i <= length(s) do begin if s[i] = '.' then k := k + 1; i := i + 1; end; writeln(k); end. ```

После внесения этих изменений ваша программа должна корректно считывать строку и подсчитывать количество точек в ней.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос