Вопрос задан 27.10.2023 в 14:18. Предмет Информатика. Спрашивает Кузнецова Лиза.

Паскаль ABC Хочу сделать так, что бы если человек писал Да, то программа предлагала бы ему ввести

значения снова, а она пропускает строку 'Введите коффициент а' и если человек отвечает Нет или пишет еще что то, она выдавала фразу в конце( Спасибо за использование). Что я сделал не так? program Pr1; const H = 'Здравствуйте, '; var a,b,c,d: real; name: string; t: boolean; Begin writeln('Введите свое имя:'); readln(name); writeln(H, name, ', вас приветствует программа-калькулятор квадратного уравнения' ); writeln('Введите коеффициент "a"'); readln (a); writeln('Введите коeффициент "b"'); readln (b); writeln('Введите коeффициент "c"'); readln (c); d := b*b-4*a*c; if d=0 then begin writeln ('X1,X2 =', (-b+sqrt(d)/(2*a))); end; if d<0 then begin writeln ('D<0, корней нет'); end; if d>0 then begin writeln('D = ', b*b-4*a*c); writeln ('X1 =', (-b+sqrt(d)/(2*a))); writeln ('X2 =', (-b-sqrt(d)/(2*a))); end; writeln ('Хотите воспользоваться калькулятором еще раз? Введите T(Да)\F(Нет)'); readln; if t then writeln('Введите коеффициент "a"'); readln (a); writeln('Введите коeффициент "b"'); readln (b); writeln('Введите коeффициент "c"'); readln (c); d := b*b-4*a*c; if d=0 then begin writeln ('X1,X2 =', (-b+sqrt(d)/(2*a))); end; if d<0 then begin writeln ('D<0, корней нет'); end; if d>0 then begin writeln('D = ', b*b-4*a*c); writeln ('X1 =', (-b+sqrt(d)/(2*a))); writeln ('X2 =', (-b-sqrt(d)/(2*a))); end else writeln ('Спасибо за использование'); end.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Тимофеева Ульяна.
Ты в условном операторе не указал что должно проверяться... И к тому же нет begin и end;Также переменную t: string; сделай, так как иначе не выйдет.

У тебя:
readln; <- к тому же не указал что надо писать.
if t then <- что это такое? Ошибка.
writeln('Введите коеффициент "a"');
readln (a);
writeln('Введите коeффициент "b"');
readln (b);
writeln('Введите коeффициент "c"');
readln (c);
d := b*b-4*a*c;

Должно быть:

program Pr1;

const 
H = 'Здравствуйте, ';
var
a,b,c,d: real;
name, t: string;

Begin
writeln('Введите свое имя:');
readln(name);
writeln(H, name, ', вас приветствует программа-калькулятор квадратного уравнения' );
writeln('Введите коеффициент "a"');
readln (a);
writeln('Введите коeффициент "b"');
readln (b);
writeln('Введите коeффициент "c"');
readln (c);
d := b*b-4*a*c;
if d=0 then
begin
writeln ('X1,X2 =', (-b+sqrt(d)/(2*a)));
end;
if d<0 then
begin
writeln ('D<0, корней нет');
end;
if d>0 then
begin
writeln('D = ', b*b-4*a*c);
writeln ('X1 =', (-b+sqrt(d)/(2*a)));
writeln ('X2 =', (-b-sqrt(d)/(2*a)));
end;
writeln ('Хотите воспользоваться калькулятором еще раз? Введите T(Да)\F(Нет)');
readln(t);

t := t.ToLower;

if t = 'да' then
begin
writeln('Введите коеффициент "a"');
readln (a);
writeln('Введите коeффициент "b"');
readln (b);
writeln('Введите коeффициент "c"');
readln (c);
d := b*b-4*a*c;
end
else
writeln('Спасибо за использование!');

if d=0 then
begin
writeln ('X1,X2 =', (-b+sqrt(d)/(2*a)));
end;

if d<0 then
begin
writeln ('D<0, корней нет');
end;

if d>0 then
begin
writeln('D = ', b*b-4*a*c);
writeln ('X1 =', (-b+sqrt(d)/(2*a)));
writeln ('X2 =', (-b-sqrt(d)/(2*a)));
end;
end.
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Привет! Похоже, у тебя возникли проблемы с программой на языке Pascal. Давай разберемся вместе.

Ошибка в программе

В программе, которую ты предоставил, есть несколько ошибок, из-за которых она не работает так, как ты ожидаешь. Вот основные проблемы:

1. Переменная `t` не инициализирована. В строке `readln; if t then writeln('Введите коэффициент "a"');` ты пытаешься проверить значение переменной `t`, но она не имеет начального значения. Тебе нужно добавить `readln(t);` перед этой проверкой.

2. После проверки значения переменной `t` и вывода результатов, ты должен снова спросить пользователя, хочет ли он воспользоваться калькулятором еще раз. Для этого ты можешь использовать цикл `while` или `repeat...until`. Например:

```pascal repeat // Весь код, связанный с калькулятором writeln('Хотите воспользоваться калькулятором еще раз? Введите T (Да) или F (Нет)'); readln(t); until not t; ```

Пояснения к коду

Теперь давай разберемся, что делает программа. Она представляет собой калькулятор для решения квадратных уравнений. Пользователю предлагается ввести значения коэффициентов `a`, `b` и `c` для уравнения `ax^2 + bx + c = 0`. Затем программа вычисляет дискриминант `D` и выводит результаты в зависимости от его значения.

Если `D` равен 0, программа выводит значения `x1` и `x2`, которые являются корнями уравнения. Если `D` меньше 0, программа сообщает, что корней нет. Если `D` больше 0, программа выводит значения `D`, `x1` и `x2`.

После вывода результатов программа спрашивает пользователя, хочет ли он воспользоваться калькулятором еще раз. Если пользователь вводит `T` (Да), то программа снова запрашивает значения коэффициентов и выполняет вычисления. Если пользователь вводит `F` (Нет), то программа выводит сообщение "Спасибо за использование" и завершается.

Исправленный код

Вот исправленный код программы:

```pascal program Pr1; const H = 'Здравствуйте, '; var a, b, c, d: real; name: string; t: boolean; begin writeln('Введите свое имя:'); readln(name); writeln(H, name, ', вас приветствует программа-калькулятор квадратного уравнения'); repeat writeln('Введите коэффициент "a"'); readln(a); writeln('Введите коэффициент "b"'); readln(b); writeln('Введите коэффициент "c"'); readln(c); d := b * b - 4 * a * c; if d = 0 then begin writeln('X1, X2 = ', (-b + sqrt(d)) / (2 * a)); end else if d < 0 then begin writeln('D < 0, корней нет'); end else begin writeln('D = ', d); writeln('X1 = ', (-b + sqrt(d)) / (2 * a)); writeln('X2 = ', (-b - sqrt(d)) / (2 * a)); end; writeln('Хотите воспользоваться калькулятором еще раз? Введите T (Да) или F (Нет)'); readln(t); until not t; writeln('Спасибо за использование'); end. ```

Теперь программа будет работать так, как ты ожидаешь. Она будет предлагать пользователю ввести значения коэффициентов снова, если пользователь вводит `T` (Да), и выводить сообщение "Спасибо за использование", если пользователь вводит `F` (Нет).

Надеюсь, это поможет! Если у тебя возникнут еще вопросы, не стесняйся задавать.

0 0

Похожие вопросы

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

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

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