Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с boolean, comp, char
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Вячеслав Л.
Задание:
Написать программу, использующую при своей работе не меньше 3х переменных boolean.
То же самое для comp и char. То есть три разных программы. Натолкните хотя бы на мысль - не представляю, что это должны быть за программы - сами проги уже попытаюсь написать сам.
RathaR
Цитата(Вячеслав Людской @ 10.10.2009 18:00) *

Задание:
Написать программу, использующую при своей работе не меньше 3х переменных boolean.
То же самое для comp и char. То есть три разных программы. Натолкните хотя бы на мысль - не представляю, что это должны быть за программы - сами проги уже попытаюсь написать сам.



if Dojd=True then zontik:=true else plyag:=true;
{или}
if (dojd=false) and (sonce=true) then plyag:=true;
write('plyag = ',plyag);


идея понятна? smile.gif

З.Ы. можна развить идею, добавив - comp - температура, а char - дни недели например smile.gif
Получишь програму определяющую стоит тебе сидеть дома, или пойти на пляж, при заданых температуре, дне недели и состоянии погоды smile.gif
volvo
Цитата
идея понятна?
Нет, не понятна... Зачем сравнивать сами по себе логические значения еще с чем-то?
Цитата
if (dojd=false) and (sonce=true) then plyag:=true;
должно звучать так:
if (not dojd) and sonce then plyag:=true; { скобки необязательны, но приветствуются }
или вообще:
plyag := (not dojd) and sonce;
TarasBer
А лучше

Beach := (not Rain) and Sun;

RathaR
Цитата(volvo @ 10.10.2009 19:26) *

Нет, не понятна... Зачем сравнивать сами по себе логические значения еще с чем-то?

Так то оно так, но зачем заставлять человека сразу розсматривать оператор not,если он еще даже булевый тип не разсмотрел толком и путать выражением
 and sonce
, если можна пояснить, и записать
 and (sonce=true)
...
Говорю по себе, ибо как только начинал програмировать я сам несразу понял что переменные булевого типа можно сравнивать именно так
 and sonce
, а не
 and (sonce=true)
andriano
var
i : array[0..2]of integer;
b : array[0..2]of boolean;
c : array[0..2]of comp;
d : array[0..2]of char;
begin
for i[0] := 0 to 2 do
b[i[0]] := i[0] = 1;
for i[1] := 0 to 2 do
c[i[1]] := i[1];
for i[2] := 0 to 2 do
d[i[2]] := char(byte('0') + i[2]));
end.
Lapp
Цитата(RathaR @ 10.10.2009 21:15) *
я сам несразу понял что переменные булевого типа можно сравнивать именно так
 and sonce
, а не
 and (sonce=true)
Ну, и зачем вводить другого человека в ту же ошибку? Чем раньше он поймет, тем лучше. А надо бы (при условии хороших преподавателей или достаточной собственной сообразительности) просто сразу. Мне кажется, в любом учебнике при вводе boolean именно так и делается. Я неправ?
andriano
if (BoolVar1 = TRUE) and ((not BoolVar1) = FALSE) then
BoolVar2 := TRUE
else
BoolVar2 := FALSE;
Вячеслав Л.
Мне лично более всего понравилась запись:
plyag := (not dojd) and sonce;
Имхо, кажется, наиболее логичной и понятной.

Я понял, что мне надо попробовать для начала написать прогу, определяющую надо ли идти на пляж в зависимости от dojd и sonce. Получилось что-то такое:
var
dojd,sonce,plyag:boolean;
begin
read(dojd);
read(sonce);
plyag := (not dojd) and sonce;
write('plyag = ',plyag);
end.
Появляется "ошибка:нельзя вводить данные этого типа". Где я неправ?

Цитата
З.Ы. можна развить идею, добавив - comp - температура, а char - дни недели например
Получишь програму определяющую стоит тебе сидеть дома, или пойти на пляж, при заданых температуре, дне недели и состоянии погоды
Как это сделать я незнаю (за 40 мин в неделю мы не много успеваем smile.gif ), напишите примерный алгоритм, пожалуйста.

Еще вопрос, что это за программа такая?
Цитата
var
i : array[0..2]of integer;
b : array[0..2]of boolean;
c : array[0..2]of comp;
d : array[0..2]of char;
begin
for i[0] := 0 to 2 do
b[i[0]] := i[0] = 1;
for i[1] := 0 to 2 do
c[i[1]] := i[1];
for i[2] := 0 to 2 do
d[i[2]] := char(byte('0') + i[2]));
end.

Поясните, пожалуйста, что она делает и как работает (прокомментируйте короче smile.gif )?
Lapp
Цитата(Вячеслав Людской @ 11.10.2009 9:34) *
Еще вопрос, что это за программа такая?
Поясните, пожалуйста, что она делает и как работает (прокомментируйте короче smile.gif )?
Ничего она не делает. Она даже не скомпилируется..

2 andriano: нельзя ли поответственее? Зачем вводить начинающего в заблуждение? Это шутка такая была?..
andriano
Цитата(Вячеслав Людской @ 11.10.2009 9:34) *
Еще вопрос, что это за программа такая?
Поясните, пожалуйста, что она делает и как работает (прокомментируйте короче smile.gif )?
Программа ничего ПОЛЕЗНОГО не делает, а служит лишь для иллюстрации использования по 3 штуки переменных каждого из типов: integer, boolean, char и comp одновременно.
Все три переменные каждого типа объединены в массив.
Что же касается компилируемости, то мне кажется странной сама постановка такого вопроса: данная программа служит для иллюстрации, а не для того, чтобы быть откомпилированной. Она может быть написана, например, на псевдокоде, как и любая другая программа, написанная в иллюстративных целях. Никто ведь не требует компилируемости от псевдокода!
Если же всерьез рассматривать компилируемость, то следует сразу отметить, что любой вменяемый компилятор не оставит от этой программы в буквальном смысле ничего. Скорее всего, не выделит даже память под переменные.
Lapp
Цитата(andriano @ 11.10.2009 11:06) *
Что же касается компилируемости, то мне кажется странной сама постановка такого вопроса: ...
А мне кажется странной постановка ответа. -1

И впредь попрошу обращать более пристальное внимание на замечания модераторов/администраторов.
Вячеслав Л.
Так, все таки... Что с вот этим. Мне сдавать уже скоро, а дело не продвигается.

Цитата
Понял, что мне надо попробовать для начала написать прогу, определяющую надо ли идти на пляж в зависимости от dojd и sonce. Получилось что-то такое:

var
dojd,sonce,plyag:boolean;
begin
read(dojd);
read(sonce);
plyag := (not dojd) and sonce;
write('plyag = ',plyag);
end.
Появляется "ошибка:нельзя вводить данные этого типа". Где я неправ?


Цитата

З.Ы. можна развить идею, добавив - comp - температура, а char - дни недели например
Получишь програму определяющую стоит тебе сидеть дома, или пойти на пляж, при заданых температуре, дне недели и состоянии погоды
Как это сделать я незнаю (за 40 мин в неделю мы не много успеваем ), напишите примерный алгоритм, пожалуйста.

volvo
Цитата
Так, все таки... Что с вот этим.
А что с этим? Правильно компилятор тебе говорит: не вводятся значения логического типа напрямую с клавиатуры. Вводи "окольными путями", например запрашивай "Y/N":
var
dojd,sonce,plyag:boolean;
ans: char;
begin
write('дождь?'); readln(ans); dojd := (ans = 'Y');
write('солнце?'); readln(ans); sonce := (ans = 'Y');

plyag := (not dojd) and sonce;
write('plyag = ',plyag); { А вот выводить - можно }
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.