![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Rossi |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
При в воде на экрна 4+4 после нажатия на ентер все должно посщитатся и вывести в таком формате 4+4=8.
Правильно ли я реализовал эту программу ? uses crt;
var a,b,s,c:integer;
begin
write('>'); readln(a,c,b);
write(a);
s:=a+b;
case c of
'+':write('+');
end;
write(b);
writeln('=',s);
end.
Сообщение отредактировано: Rossi - 20.06.2007 16:15 |
Urnix |
![]()
Сообщение
#2
|
![]() Начинающий Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Правильно ли я реализовал эту программу ? Так и быть поработаю debug'ером: ERROR 74: Constant and CASE types do not match. Сообщение отредактировано: Urnix - 20.06.2007 16:36 -------------------- Интернет, как смерть - забирает лучших...
|
Rossi |
![]()
Сообщение
#3
|
Гость ![]() |
|
compiler |
![]()
Сообщение
#4
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
-------------------- Спасибо!
Удачи! |
Rossi |
![]()
Сообщение
#5
|
Гость ![]() |
Ошибку нашел... забыл c:char;
program pas; uses crt; var a,b,s:integer; c:char; begin write('>'); readln(a,c,b); write(a); case c of '+':write('+'); end; write(b); s:=a+b; writeln('=',s); end. всеравно почемута не работает пишет invalid ![]() |
compiler |
![]()
Сообщение
#6
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
вводится всегда буде с однозначные числа?
-------------------- Спасибо!
Удачи! |
Rossi |
![]()
Сообщение
#7
|
Гость ![]() |
Да.
|
compiler |
![]()
Сообщение
#8
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
и всегда использываться операция сложения?
Сообщение отредактировано: compiler - 20.06.2007 16:58 -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата всеравно почемута не работает Потому, что ты наверняка вводишь так: Число+Число, т.е., между числом и знаком пробела нет... Так не пойдет, компилятор читает число до первого символа табуляции (пробел или #9 или #13). То есть, единственный вариант для тебя - program pas;
uses crt;
var
a,b,s:integer;
c, ch:char;
begin
write('>');
read(a); { <-- Читаешь первое число }
read(ch, c); { <-- пробел между первым числом и знаком, и сам знак }
readln(ch, b); { <-- пробел между знаком и вторым числом и второе число }
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
Вводить надо, соответственно, с пробелами: 2 + 3 P.S. Если с учетом последнего поста, то читать введенные числа в виде символов, и обрабатывать их через Ord(a) - Ord('0') ... Сообщение отредактировано: volvo - 20.06.2007 17:03 |
compiler |
![]()
Сообщение
#10
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
P.S. Если с учетом последнего поста, то читать введенные числа в виде символов, и обрабатывать их через Ord(a) - Ord('0') ... Э, это моя идея :lol: вот код uses crt;
var s:integer;
c,a,b:char;
begin
write('>');
a:=readkey; write(a);
c:=readkey;write( с ); //что с ним делать незнаю :)
b:=readkey;write(b);
s:=ord(a) + ord(b)-(48*2); //до Ord('0') не додумался :(
writeln('=',s);
readln;
read;
end.
Сообщение отредактировано: compiler - 20.06.2007 17:14 -------------------- Спасибо!
Удачи! |
Urnix |
![]()
Сообщение
#11
|
![]() Начинающий Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
А я бы сделал так
uses crt;
const
GoodChars = ['0'..'9','+','-','*','/','.'];
ActionChars = ['+','-','*','/'];
var
s:string;
error:boolean;
i,ActionNum,val_err:integer;
ActionChar:char;
a,b:real;
begin
clrscr;
writeln('vvedite arifmeticheskoe virazhenie:');
readln(s);
clrscr;
error:=false;
for i:=1 to length(s) do
if not (s[i] in GoodChars)
then error:=true;
ActionNum:=0;
for i:=1 to length(s) do
if s[i] in ActionChars
then
begin
ActionChar:=s[i];
inc(ActionNum);
end;
if (ActionNum<>1) or (pos(ActionChar,s)=1) or (pos(ActionChar,s)=length(s))
then error:=true;
if not error
then
begin
val(copy(s,1,pos(ActionChar,s)-1),a,val_err);
val(copy(s,pos(ActionChar,s)+1,length(s)-pos(ActionChar,s)),b,val_err);
case ActionChar of
'+': writeln(s,'=',a+b:1:2);
'-': writeln(s,'=',a-b:1:2);
'*': writeln(s,'=',a*b:1:2);
'/': if b=0
then writeln('na nol delit'' nel''za')
else writeln(s,'=',a/b:5:2);
end;
end
else writeln('Vvedenniy tekst ne yavlaetsa arifmeticheskim virazheniem');
readln;
end.
//это для общего случаяСообщение отредактировано: Urnix - 20.06.2007 17:30 -------------------- Интернет, как смерть - забирает лучших...
|
Rossi |
![]()
Сообщение
#12
|
Гость ![]() |
Спасибо огромнишое всем!!!
Теперь у меня появился вопрос что такое read? ![]() хз мне преподователь про него нечего не говорил хммм((( |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата это моя идея Я и не присваивал... А вот реализовал ты свою идею из рук вон плохо: зачем лишил пользователя возможности редактировать строку при ее вводе? Что, нельзя было сделать так:program pas;
uses crt;
var
s:integer;
a, b, c:char;
begin
write('>');
readln(a, c, b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=ord(a)+ord(b) - 2*ord('0');
writeln('=',s);
end.
? |
compiler |
![]()
Сообщение
#14
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Теперь у меня появился вопрос что такое read справка в помощ... вообще это readln без перевода каретки...Добавлено через 7 мин. Я и не присваивал... там же был смайликзачем лишил пользователя возможности редактировать строку при ее вводе? зато не надо вводить с пробелами... Что, нельзя было сделать так: как то программка твоя не коректно работает...-------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Цитата как то программка твоя не коректно работает... Ты еще не научился? Я больше повторять не буду - я голословные заявления НЕ принимаю! Как значения вводишь, то и получаешь. Больше мне сказать нечего (пока нет примеров ввода вывода)... А как будет пример - я ЕГО же протестирую на ТВОЕЙ программе, договорились? А потом приведу СВОЙ пример некорректной работы ТВОЕЙ программы (заметь, начал ТЫ. ![]() |
Urnix |
![]()
Сообщение
#16
|
![]() Начинающий Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
как то программка твоя не коректно работает... Ты еще не научился? Я больше повторять не буду - я голословные заявления НЕ принимаю! Как значения вводишь, то и получаешь. Больше мне сказать нечего (пока нет примеров ввода вывода)... А как будет пример - я ЕГО же протестирую на ТВОЕЙ программе, договорились? А потом приведу СВОЙ пример некорректной работы ТВОЕЙ программы (заметь, начал ТЫ. ![]() Ребята вы загнались, и я тоже. Вот такая фигня вполне будет работать...
var
s:string;
val_err:integer;
a,b:byte;
begin
write('>');
readln(s);
val(s[1],a,val_err);
val(s[3],b,val_err);
writeln(s,'=',a+b);
readln;
end.
А ведь забавно: завести тему и устроить в ней дисскуссию на предмет "как решить в Паскале 4+4", хорошо, хоть не 2+2 ![]() Сообщение отредактировано: Urnix - 20.06.2007 17:38 -------------------- Интернет, как смерть - забирает лучших...
|
compiler |
![]()
Сообщение
#17
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Как значения вводишь, то и получаешь. Больше мне сказать нечего (пока нет примеров ввода вывода)... пример в названии темы(только с пробелами иначе не работает) ввожу 4 + 4 получаю 4+=-1(не выводится второе число+ неправильный результат (чесно говоря сам не зная почему))А как будет пример - я ЕГО же протестирую на ТВОЕЙ программе, договорились? договорились ![]() А потом приведу СВОЙ пример некорректной работы ТВОЕЙ программы жду... (заметь, начал ТЫ. что начал?![]() -------------------- Спасибо!
Удачи! |
Rossi |
![]() ![]()
Сообщение
#18
|
Гость ![]() |
Воть подумал можно ли модефицировть нашу программку от volva с помощью if и then ?
|
compiler |
![]()
Сообщение
#19
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Ребята вы загнались, и я тоже. я пока не нашел число что б получить не верный результат(если использовать сложение и положительные числа да десяти) жду...А ведь забавно: завести тему и устроить в ней дисскуссию на предмет "как решить в Паскале 4+4", хорошо, хоть не 2+2 ![]() ![]() Добавлено через 2 мин. Воть подумал можно ли модефицировть нашу программку от volva с помощью if и then ? пишеш
if c='+' then write('+');
-------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#20
|
Гость ![]() |
Цитата только с пробелами иначе не работает Очень интересно... Тогда смотри сюда:![]() А в своем примере набери 3, потом подними глаза выше, посмотри на название темы, и попробуй сделать так, чтобы посчиталось 4+4 ... P.S. Цитата договорились только без пробелов То есть, МОЮ программу, которая выполняет ТО ЖЕ самое, что и твоя (и это написано в посте №13), только с сохранением возможности редактирования, ты гоняешь с пробелами, и когда она не работает, ты меня в это тыкаешь носом, а когда ТВОЯ программа не работает по той же (да и не только, см. выше) причине - то это ее несомненный плюс?Сообщение отредактировано: volvo - 20.06.2007 17:56 |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 0:16 |