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

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

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

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


Начинающий


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

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


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

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

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

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


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


Гость






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

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

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


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

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

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


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


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


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

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

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


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


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


Гость






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


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

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

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


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

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


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


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


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


Гость






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



?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






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


--------------------
Интернет, как смерть - забирает лучших...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Воть подумал можно ли модефицировть нашу программку от volva с помощью if и then ?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






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

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

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


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

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

 





- Текстовая версия 28.03.2024 18:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name