Задача 10 Урок 9

Урок 9 — If

Есть программа:

var m,s:integer;
  f:boolean;
begin
    writeln('Vvedite chislo M');
    readln(m);
    s:=1;
    if (s = 1) then
       writeln('soobchenie 1'); 
    if (s = m) then
        writeln('soobchenie 2'); 
end;

-- при этом известно, что если s равно 1, то на экран должно вывестись только первое сообщение (а второе выводиться не должно), а если s равно m, то второе (а первое выводиться не должно).
Но сейчас программа работает не так, исправьте это.

var m,s:integer;
  f:boolean;
begin
    s:=1;
    writeln('Vvedite chislo M');
    readln(m);
    if (s = m) then
        writeln('soobchenie 2')
    else
        writeln('soobchenie 1');
    readln();
end.
vedro-compota's picture

Нужно чтобы сравнение с единицей шло раньше, чем с m ;)

для лучшего понимания уточнил условие задачи (в т.ч. в уроке):

этом известно, что если s равно 1, то на экран должно вывестись только первое сообщение (а второе выводиться не должно), а если s не равно 1, но равно m, то второе (а первое выводиться не должно).
Но сейчас программа работает не так, исправьте это

_____________
матфак вгу и остальная классика =)

этом известно, что если s равно 1, то на экран должно вывестись только первое сообщение (а второе выводиться не должно), а если s не равно 1, но равно m, то второе (а первое выводиться не должно).

сначала проверка на равенство 1, затем else проверка на равенство s и m, но если s всегда = 1 и значение присваивается до проверки, то второе сообщение никогда не выведется

var m,s:integer;
  f:boolean;
begin
  writeln('Vvedite chislo M');
  readln(m);
  s:=1;
  if (s = 1) then
    writeln('soobchenie 1')
  else if (s = m) then
    writeln('soobchenie 2'); 
end.
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)