Перейти к содержимому


× Быстрый вопрос
Пользователь месяца
ShowPrint ShowPrint 1-й за Март
Очков активности: 1 152 1 тема, 61 сообщение, 12 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Андрей WPMasterKZ
    #1

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 1008 Вне конкурса за определение пользователя месяца

  • Фотография OlgaGetman
    #2

    OlgaGetman
    Очков активности: 564 Вне конкурса за определение пользователя месяца

  • Фотография Vmir
    #3

    Vmir
    Очков активности: 528 4 темы, 32 сообщения, 8 баллов репутации

  • Фотография Mandarin
    #4

    Mandarin
    Очков активности: 306 10 тем, 21 сообщение, 4 балла репутации

  • Фотография ShowPrint
    #5

    ShowPrint (ShowPrint.ru)
    Очков активности: 204 Вне конкурса за определение пользователя месяца

  • Фотография maxnik
    #6

    maxnik (konovalovpavel.ru)
    Очков активности: 72 1 тема, 21 сообщение, 2 балла репутации

  • Фотография pozitron123
    #7

    pozitron123
    Очков активности: 67.5 3 темы, 6 сообщений, 3 балла репутации

  • Фотография Megoydagi
    #8

    Megoydagi (24ho.ru)
    Очков активности: 66 1 тема, 19 сообщений, 2 балла репутации

  • Фотография re-search
    #9

    re-search
    Очков активности: 49.5 7 тем, 12 сообщений, 1 балл репутации

  • Фотография Constantine
    #10

    Constantine
    Очков активности: 39 4 темы, 14 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 20.04.2019
  • Яндекс выдача: 24.04.2019
Топ 5 участников по репутации


Pascal

#1 Banderas

Banderas
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 08 Ноябрь 2009 - 19:38

Хотел задать парочку вопросов, но не хотел покидать МВ, поэтому решил создать тему на форуме ВЕБ местеров =)

Задание 29: «Калькулятор». Ученик вводит с клавиатуры число(a), символ арифметического действия(z) (+, -) и еще одно число(:). Компьютер должен напечатать результат. Указание: Используйте три оператора ReadLn.


program calc;
uses  CRT;
var
a, b : integer;
z : char;
begin
ClrScr;
readln (a);
readln (z);
readln (b);
case z of
	+ : writeln (a+b);
	- : writeln (a-b);
	else writeln ('unknow z');
end
end.

Надеюсь мне помогут...)))

пс. я вообще нуб в паскале, только начал его учить, по программе коледжа надо :)

 

 

  • 0

I'm web-developer 

Magento one love!



#2 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 08 Ноябрь 2009 - 22:44

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

#3 admin

admin
  • Пользователь PRO
  • 5 275 сообщений
  • Репутация: 56

Отправлено 09 Ноябрь 2009 - 00:06

Блин вы что издеваетесь))))
Всё проще на много :)

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.

У меня работает. Можно конечно же и по-другому, но так проще всего ИМХО :)
  • 0

#4 Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 09 Ноябрь 2009 - 01:39

Лёха, я пацтулом :)

Дима, а если например использывать не + и -, а ещё и другие знаки, да и вообще если не я введу вот такое :*:% ??? Здесь надо case... Может надо применять ещё и readkey?
  • 0

I'm web-developer 

Magento one love!



#5 admin

admin
  • Пользователь PRO
  • 5 275 сообщений
  • Репутация: 56

Отправлено 09 Ноябрь 2009 - 01:50

Banderas, нет, больше ничего не нужно. В условии не написано ничего, программа правильно работает и подходит под условие. Оператор выбора не нужен
  • 0

#6 Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 09 Ноябрь 2009 - 11:35

А как это с case прокрутить?
  • 0

I'm web-developer 

Magento one love!



#7 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Ноябрь 2009 - 14:14

admin, ужас, я введу билиберду и получу билиберду... Это называется правильно...
  • 0

#8 admin

admin
  • Пользователь PRO
  • 5 275 сообщений
  • Репутация: 56

Отправлено 09 Ноябрь 2009 - 15:05

Banderas, тебе нужно с case делать?
  • 0

#9 Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 09 Ноябрь 2009 - 15:26

Та я уже понял, только новая проблема :)

Вот так все работает
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

I'm web-developer 

Magento one love!



#10 admin

admin
  • Пользователь PRO
  • 5 275 сообщений
  • Репутация: 56

Отправлено 09 Ноябрь 2009 - 15:33

Banderas, я тебя не понимаю. Я написал код под твоё условие, если что-то не так или ещё что-то нужно, то напиши условие новое
  • 0

#11 Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 09 Ноябрь 2009 - 17:10

Задача была таковой:

Задание 29: «Калькулятор». Ученик вводит с клавиатуры число(a), символ арифметического действия(z) (+, -, *, /) и еще одно число(:). Компьютер должен напечатать результат. Указание: Используйте три оператора ReadLn. Используйте case.


  • 0

I'm web-developer 

Magento one love!



#12 Евгений

Евгений
  • Неактивные
  • 481 сообщений
  • Репутация: 0

Отправлено 09 Ноябрь 2009 - 17:56

'/' : begin s:=a/b; writeln (s) end;

в этом случае переменная s должна иметь тип не integer, а real
т.к. при делении у тебя не всегда целое число получается
  • 0

#13 Евгений

Евгений
  • Неактивные
  • 481 сообщений
  • Репутация: 0

Отправлено 09 Ноябрь 2009 - 18:01

program calc;
var
	 operation:byte;
	 a,b:integer;
begin
	write('a = ');
	readln(a);
	write('b =');
	readln(b);
	writeln('1 - summa');
	writeln('2 - vichitanie');
	writeln('3 - delenie');
	writeln('4 - umnojenie');
	readln(operation);
	case operation of:
		1: writeln(a+b);
		2: writeln(a-b);
		3: writeln(trunc(a/b));
		4: writeln(a*b);
	end;
end.

  • 0

#14 Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 09 Ноябрь 2009 - 18:17

Фигасе какой код =))

А не проще просто переменной S дать значение real?
  • 0

I'm web-developer 

Magento one love!



#15 Евгений

Евгений
  • Неактивные
  • 481 сообщений
  • Репутация: 0

Отправлено 09 Ноябрь 2009 - 23:54

write('a = ');
readln(a);
write('b =');
readln(:D;

это код такой не из-за того что переменная integter, а из-за того что не стоит забывать о том что юзеру даже в паскале должно быть понятно что он вводит, интерфейс хоть какой то чтоли)

writeln('1 - summa');
writeln('2 - vichitanie');
writeln('3 - delenie');
writeln('4 - umnojenie');
readln(operation);

эту часть можешь заменить знаком +, -, /, *, но по моему так польтзователь точно не ошибется и не нажмет левого

writeln(trunc(a/:));

напиши writeln(a/:); вот эта строчка заменяет вообще переменную S. если с переменной, то было бы так

s := a/b;
writeln(s);


  • 0

#16 Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 10 Ноябрь 2009 - 01:04

Спасибо нащаникамана :)

пс. опять пересмотрелся Наша раша =))))
  • 0

I'm web-developer 

Magento one love!



#17 Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 10 Ноябрь 2009 - 12:38

Появилась новая задача и новая проблема... =)

Задача 36

36) Для х=2700, 900, 300, 100 . . . и т.д. вычислять и печатать y=x/4 + 20 и z=2y+0.23 до тех пор, пока y*z не станет меньше 1/х.


Я напичатал
program lol;
uses CRT;
label m1, m2;
var
x, y, z, n, k : real;
begin ClrScr;
	x:=2700;
m1: x:=2700/3;
	y:=x/4+20;
	z:=2*y+0.23;
	n:=y*z;
	k:=1/x;
	if n < k then goto m2;
	goto m1;
m2: write(x:10:3);
	write(y:10:3);
	write(z:10:3);
end.
Не работает =(( Хотя когда я пишу n > k - то работает. В чем проблема, не подскажите?
  • 0

I'm web-developer 

Magento one love!



robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru