Эм, ну, обычно для такого задания дают рисунок. Исходя из рисунка строиться путь, т.к есть разные варианты дороги, нельзя к каждому написать один алгоритм.
Но он будет в роде: "влево/вправо пока закрашено" таким образом, робот будет идти в сторону, до тех пор, пока клетки будут закрашены. Также, если будет пробел (закрашено, по середине пусто, закрашено) , то нужно написать следующий алгоритм : "Если незакрашено вправо/влево" НО если там будет извилистая дорога, то потребуются еще действия. Надеюсь, вы поняли. Удачи!
Не совсем понятно, что хотите сделать в данной программе. Обо всем по порядку.
1. Ошибка: "Нельзя преобразовать тип string к real".
D := ('b*b-4*a*c');
Вы пытаетесь присвоить переменной D строку, хотя она является переменной типа Real . Это абсолютно два разных типа переменных.
Real - вещественный тип, т.е. поддерживает числа с запятой и принимает на ввод такие числа, как "2.534" или "3.0"; никаких букв быть не может;
String - строковый тип, т.е. поддерживает строки, где значение заключается в одинарные кавычки, например 'Мама мыла раму'; также можно ввести цифры, например '4,096', но учтите, что строки не могу принимать участие в арифметических операциях (есть конечно процедуры перевода из строки в число, но, насколько я поняла, вы только начинаете программировать и пока что нужно понять азы программирования).
Нельзя присвоить вещественному типу строку и наоборот, что вы и делаете в 11 строке.
А теперь перейдем к моментам, в которых не совсем понятно, что хотите сделать.
Возьмем 11 и 12 строки:
D := ('b*b-4*a*c');
readln('дискримінант',D);
Что вам нужно?:
а) Посчитать и вывести чему будет равен D:
Для этого нужно убрать одинарные кавычки в 11 строке и вместо "ReadLn" написать "WriteLn". Строки будут иметь следующий вид:
D:=b*b-4*a*c;
Writeln('дискримінант ',D);
б) Вывести строку как считается дискриминант и попросить пользователя ввести данное число:
В этом случае, в 11 строке пишем WriteLn, а в 12 строке убираем 'дискримінант'. Строки будут иметь следующий вид:
writeln('D:=(b*b-4*a*c). ', 'дискримінант');
readln(d);
Та же история и со строками 13-14, 15-16.
2. У вас не объявлены переменные "x1", "x2". Для того, чтобы программа работала, добавляем их в "var":
Но он будет в роде: "влево/вправо пока закрашено"
таким образом, робот будет идти в сторону, до тех пор, пока клетки будут закрашены.
Также, если будет пробел (закрашено, по середине пусто, закрашено) , то нужно написать следующий алгоритм : "Если незакрашено вправо/влево"
НО если там будет извилистая дорога, то потребуются еще действия.
Надеюсь, вы поняли. Удачи!
Объяснение:
Не совсем понятно, что хотите сделать в данной программе. Обо всем по порядку.
1. Ошибка: "Нельзя преобразовать тип string к real".
D := ('b*b-4*a*c');
Вы пытаетесь присвоить переменной D строку, хотя она является переменной типа Real . Это абсолютно два разных типа переменных.
Real - вещественный тип, т.е. поддерживает числа с запятой и принимает на ввод такие числа, как "2.534" или "3.0"; никаких букв быть не может;
String - строковый тип, т.е. поддерживает строки, где значение заключается в одинарные кавычки, например 'Мама мыла раму'; также можно ввести цифры, например '4,096', но учтите, что строки не могу принимать участие в арифметических операциях (есть конечно процедуры перевода из строки в число, но, насколько я поняла, вы только начинаете программировать и пока что нужно понять азы программирования).
Нельзя присвоить вещественному типу строку и наоборот, что вы и делаете в 11 строке.
А теперь перейдем к моментам, в которых не совсем понятно, что хотите сделать.
Возьмем 11 и 12 строки:
D := ('b*b-4*a*c');
readln('дискримінант',D);
Что вам нужно?:
а) Посчитать и вывести чему будет равен D:
Для этого нужно убрать одинарные кавычки в 11 строке и вместо "ReadLn" написать "WriteLn". Строки будут иметь следующий вид:
D:=b*b-4*a*c;
Writeln('дискримінант ',D);
б) Вывести строку как считается дискриминант и попросить пользователя ввести данное число:
В этом случае, в 11 строке пишем WriteLn, а в 12 строке убираем 'дискримінант'. Строки будут иметь следующий вид:
writeln('D:=(b*b-4*a*c). ', 'дискримінант');
readln(d);
Та же история и со строками 13-14, 15-16.
2. У вас не объявлены переменные "x1", "x2". Для того, чтобы программа работала, добавляем их в "var":
var
a, b, c, d, x1, x2: real;