IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> 4+4=8, Программа
Rossi
сообщение 20.06.2007 16:14
Сообщение #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
сообщение 20.06.2007 16:29
Сообщение #2


Начинающий


Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Цитата(Rossi @ 20.06.2007 17:14) *

Правильно ли я реализовал эту программу ?

Так и быть поработаю debug'ером: ERROR 74: Constant and CASE types do not match.

Сообщение отредактировано: Urnix - 20.06.2007 16:36


--------------------
Интернет, как смерть - забирает лучших...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rossi
сообщение 20.06.2007 16:37
Сообщение #3


Гость






Цитата(Urnix @ 20.06.2007 17:29) *

Так и быть поработаю debug'ером: ERROR 74: Constant and CASE types do not match.

???
 К началу страницы 
+ Ответить 
compiler
сообщение 20.06.2007 16:39
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Rossi @ 20.06.2007 16:37) *
???
добавь еще варианты или используй if ... then...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rossi
сообщение 20.06.2007 16:43
Сообщение #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 mega_chok.gif
 К началу страницы 
+ Ответить 
compiler
сообщение 20.06.2007 16:55
Сообщение #6


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


вводится всегда буде с однозначные числа?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rossi
сообщение 20.06.2007 16:56
Сообщение #7


Гость






Да.
 К началу страницы 
+ Ответить 
compiler
сообщение 20.06.2007 16:58
Сообщение #8


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


и всегда использываться операция сложения?

Сообщение отредактировано: compiler - 20.06.2007 16:58


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.06.2007 17:01
Сообщение #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
сообщение 20.06.2007 17:06
Сообщение #10


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 20.06.2007 17:01) *

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Urnix
сообщение 20.06.2007 17:09
Сообщение #11


Начинающий


Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


А я бы сделал так

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


--------------------
Интернет, как смерть - забирает лучших...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rossi
сообщение 20.06.2007 17:14
Сообщение #12


Гость






Спасибо огромнишое всем!!!
Теперь у меня появился вопрос что такое read? lol.gif
хз мне преподователь про него нечего не говорил хммм(((
 К началу страницы 
+ Ответить 
volvo
сообщение 20.06.2007 17:16
Сообщение #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
сообщение 20.06.2007 17:16
Сообщение #14


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Rossi @ 20.06.2007 17:14) *
Теперь у меня появился вопрос что такое read
справка в помощ... вообще это readln без перевода каретки...


Добавлено через 7 мин.
Цитата(volvo @ 20.06.2007 17:16) *
Я и не присваивал...
там же был смайлик
Цитата(volvo @ 20.06.2007 17:16) *
зачем лишил пользователя возможности редактировать строку при ее вводе?

зато не надо вводить с пробелами...
Цитата(volvo @ 20.06.2007 17:16) *
Что, нельзя было сделать так:
как то программка твоя не коректно работает...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.06.2007 17:30
Сообщение #15


Гость






Цитата
как то программка твоя не коректно работает...
Ты еще не научился? Я больше повторять не буду - я голословные заявления НЕ принимаю! Как значения вводишь, то и получаешь. Больше мне сказать нечего (пока нет примеров ввода вывода)... А как будет пример - я ЕГО же протестирую на ТВОЕЙ программе, договорились? А потом приведу СВОЙ пример некорректной работы ТВОЕЙ программы (заметь, начал ТЫ. dry.gif )
 К началу страницы 
+ Ответить 
Urnix
сообщение 20.06.2007 17:35
Сообщение #16


Начинающий


Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Цитата(compiler @ 20.06.2007 18:16) *

как то программка твоя не коректно работает...


Цитата(volvo @ 20.06.2007 18:30) *

Ты еще не научился? Я больше повторять не буду - я голословные заявления НЕ принимаю! Как значения вводишь, то и получаешь. Больше мне сказать нечего (пока нет примеров ввода вывода)... А как будет пример - я ЕГО же протестирую на ТВОЕЙ программе, договорились? А потом приведу СВОЙ пример некорректной работы ТВОЕЙ программы (заметь, начал ТЫ. dry.gif )


Ребята вы загнались, и я тоже.

Вот такая фигня вполне будет работать...

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 lol.gif

Сообщение отредактировано: Urnix - 20.06.2007 17:38


--------------------
Интернет, как смерть - забирает лучших...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 20.06.2007 17:41
Сообщение #17


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 20.06.2007 17:30) *
Как значения вводишь, то и получаешь. Больше мне сказать нечего (пока нет примеров ввода вывода)...
пример в названии темы(только с пробелами иначе не работает) ввожу 4 + 4 получаю 4+=-1(не выводится второе число+ неправильный результат (чесно говоря сам не зная почему))
Цитата(volvo @ 20.06.2007 17:30) *
А как будет пример - я ЕГО же протестирую на ТВОЕЙ программе, договорились?
договорились smile.gif только без пробелов
Цитата(volvo @ 20.06.2007 17:30) *
А потом приведу СВОЙ пример некорректной работы ТВОЕЙ программы
жду...
Цитата(volvo @ 20.06.2007 17:30) *
(заметь, начал ТЫ. dry.gif )
что начал?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rossi
сообщение 20.06.2007 17:45
Сообщение #18


Гость






Воть подумал можно ли модефицировть нашу программку от volva с помощью if и then ?
 К началу страницы 
+ Ответить 
compiler
сообщение 20.06.2007 17:46
Сообщение #19


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Urnix @ 20.06.2007 17:35) *
Ребята вы загнались, и я тоже.
я пока не нашел число что б получить не верный результат(если использовать сложение и положительные числа да десяти) жду...
Цитата(Urnix @ 20.06.2007 17:35) *
А ведь забавно: завести тему и устроить в ней дисскуссию на предмет "как решить в Паскале 4+4", хорошо, хоть не 2+2 lol.gif
smile.gif


Добавлено через 2 мин.
Цитата(Rossi @ 20.06.2007 17:45) *
Воть подумал можно ли модефицировть нашу программку от volva с помощью if и then ?
пишеш
if c='+' then write('+');



--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.06.2007 17:50
Сообщение #20


Гость






Цитата
только с пробелами иначе не работает
Очень интересно... Тогда смотри сюда:
Прикрепленное изображение

А в своем примере набери 3, потом подними глаза выше, посмотри на название темы, и попробуй сделать так, чтобы посчиталось 4+4 ...

P.S.
Цитата
договорились только без пробелов
То есть, МОЮ программу, которая выполняет ТО ЖЕ самое, что и твоя (и это написано в посте №13), только с сохранением возможности редактирования, ты гоняешь с пробелами, и когда она не работает, ты меня в это тыкаешь носом, а когда ТВОЯ программа не работает по той же (да и не только, см. выше) причине - то это ее несомненный плюс?


Сообщение отредактировано: volvo - 20.06.2007 17:56
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 30.05.2024 2:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"