Помощник
Pascal |
Banderas
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
8.11.2009, 23:44;
Ответить: ZiTosS
Сообщение
#2
|
|
Banderas, поскольку паскаль не изучал, попробую написать интуитивно...
program calc; uses CRT; {секция объявления переменных} var a, b , isError : integer; z : char; begin ClrScr; {очищаем экран} isError := 0; {обнуляем переменную ошибок} writeln ('Считает [+/-] чисел A и B'); { цикл с постусловием } repeat writeln ('Введите целое число A: '); readln(a); val(a, a, isError); until isError > 0; { цикл с постусловием } repeat writeln ('Введите целое число B: '); val(readln(a), b, isError); until isError > 0; { цикл с постусловием } repeat writeln ('Введите знак [ + / - ] : '); readln(z); val(z, z, isError); until isError > 0 and (z <> '+' or z <> '-'); case z of '+' : writeln (a+b); '-' : writeln (a-b); else writeln ('unknow z'); end end. Сейчас понял что работать код не будет, так как в переменные с клавиатуры не всегда изначально будут считываться те символы что нужно, а проверка уже идёт затем. Даже не знаю что и предложить, языка я не знаю. |
|
|
Гость_0_* Гость_0_* |
9.11.2009, 1:06;
Ответить: Гость_0_*
Сообщение
#3
|
|
Блин вы что издеваетесь))))
Всё проще на много Program CALC; uses CRT; var a,b:integer; z:char; begin clrscr; write('a='); readln(a); write('b='); readln(B); write('vvedite znak +/-...'); readln(z); IF z='+' THEN writeln('a+b=', a+B); IF z='-' THEN writeln('a-b=', a-B); end. У меня работает. Можно конечно же и по-другому, но так проще всего ИМХО |
|
|
Banderas
|
Сообщение
#4
|
|
Лёха, я пацтулом
Дима, а если например использывать не + и -, а ещё и другие знаки, да и вообще если не я введу вот такое :*:% ??? Здесь надо case... Может надо применять ещё и readkey? |
|
|
Гость_0_* Гость_0_* |
9.11.2009, 2:50;
Ответить: Гость_0_*
Сообщение
#5
|
|
Banderas, нет, больше ничего не нужно. В условии не написано ничего, программа правильно работает и подходит под условие. Оператор выбора не нужен
|
|
|
Banderas
|
Сообщение
#6
|
|
А как это с case прокрутить?
|
|
|
ZiTosS |
9.11.2009, 15:14;
Ответить: ZiTosS
Сообщение
#7
|
|
admin, ужас, я введу билиберду и получу билиберду... Это называется правильно...
|
|
|
Гость_0_* Гость_0_* |
9.11.2009, 16:05;
Ответить: Гость_0_*
Сообщение
#8
|
|
Banderas, тебе нужно с case делать?
|
|
|
Banderas
|
Сообщение
#9
|
|
Та я уже понял, только новая проблема
Вот так все работает program calc; uses CRT; var a, b, s : integer; z : char; begin ClrScr; readln (a); readln (z); readln (b); case z of '+' : begin s:=a+b; writeln (s) end; '-' : begin s:=a-b; writeln (s) end; '*' : begin s:=a*b; writeln (s) end; else writeln ('unknow z'); end end. Но если я добавляю '/' : begin s:=a/b; writeln (s) end; то пишет ошибку: Error 26: Type mismatch. |
|
|
Гость_0_* Гость_0_* |
9.11.2009, 16:33;
Ответить: Гость_0_*
Сообщение
#10
|
|
Banderas, я тебя не понимаю. Я написал код под твоё условие, если что-то не так или ещё что-то нужно, то напиши условие новое
|
|
|
|
Текстовая версия | Сейчас: 19.4.2024, 11:58 |