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

 

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