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

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

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

 
 Ответить  Открыть новую тему 
> Помогите с boolean, comp, char
Вячеслав Л.
сообщение 10.10.2009 18:00
Сообщение #1


Бывалый
***

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

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


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


--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RathaR
сообщение 10.10.2009 18:27
Сообщение #2


Знаток
****

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

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


Цитата(Вячеслав Людской @ 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

Сообщение отредактировано: RathaR - 10.10.2009 18:32


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.10.2009 19:26
Сообщение #3


Гость






Цитата
идея понятна?
Нет, не понятна... Зачем сравнивать сами по себе логические значения еще с чем-то?
Цитата
if (dojd=false) and (sonce=true) then plyag:=true;
должно звучать так:
if (not dojd) and sonce then plyag:=true; { скобки необязательны, но приветствуются }
или вообще:
plyag := (not dojd) and sonce;
 К началу страницы 
+ Ответить 
TarasBer
сообщение 10.10.2009 19:39
Сообщение #4


Злостный любитель
*****

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

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


А лучше

Beach := (not Rain) and Sun;



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RathaR
сообщение 10.10.2009 20:15
Сообщение #5


Знаток
****

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

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


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

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

Так то оно так, но зачем заставлять человека сразу розсматривать оператор not,если он еще даже булевый тип не разсмотрел толком и путать выражением
 and sonce
, если можна пояснить, и записать
 and (sonce=true)
...
Говорю по себе, ибо как только начинал програмировать я сам несразу понял что переменные булевого типа можно сравнивать именно так
 and sonce
, а не
 and (sonce=true)


Сообщение отредактировано: RathaR - 10.10.2009 20:17


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 10.10.2009 21:36
Сообщение #6


Гуру
*****

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

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


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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 11.10.2009 4:26
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(RathaR @ 10.10.2009 21:15) *
я сам несразу понял что переменные булевого типа можно сравнивать именно так
 and sonce
, а не
 and (sonce=true)
Ну, и зачем вводить другого человека в ту же ошибку? Чем раньше он поймет, тем лучше. А надо бы (при условии хороших преподавателей или достаточной собственной сообразительности) просто сразу. Мне кажется, в любом учебнике при вводе boolean именно так и делается. Я неправ?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 11.10.2009 8:33
Сообщение #8


Гуру
*****

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

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


if (BoolVar1 = TRUE) and ((not BoolVar1) = FALSE) then
BoolVar2 := TRUE
else
BoolVar2 := FALSE;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Вячеслав Л.
сообщение 11.10.2009 8:34
Сообщение #9


Бывалый
***

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

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


Мне лично более всего понравилась запись:
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 )?


--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 11.10.2009 8:52
Сообщение #10


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


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

2 andriano: нельзя ли поответственее? Зачем вводить начинающего в заблуждение? Это шутка такая была?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 11.10.2009 10:06
Сообщение #11


Гуру
*****

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

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


Цитата(Вячеслав Людской @ 11.10.2009 9:34) *
Еще вопрос, что это за программа такая?
Поясните, пожалуйста, что она делает и как работает (прокомментируйте короче smile.gif )?
Программа ничего ПОЛЕЗНОГО не делает, а служит лишь для иллюстрации использования по 3 штуки переменных каждого из типов: integer, boolean, char и comp одновременно.
Все три переменные каждого типа объединены в массив.
Что же касается компилируемости, то мне кажется странной сама постановка такого вопроса: данная программа служит для иллюстрации, а не для того, чтобы быть откомпилированной. Она может быть написана, например, на псевдокоде, как и любая другая программа, написанная в иллюстративных целях. Никто ведь не требует компилируемости от псевдокода!
Если же всерьез рассматривать компилируемость, то следует сразу отметить, что любой вменяемый компилятор не оставит от этой программы в буквальном смысле ничего. Скорее всего, не выделит даже память под переменные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 11.10.2009 10:15
Сообщение #12


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(andriano @ 11.10.2009 11:06) *
Что же касается компилируемости, то мне кажется странной сама постановка такого вопроса: ...
А мне кажется странной постановка ответа. -1

И впредь попрошу обращать более пристальное внимание на замечания модераторов/администраторов.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Вячеслав Л.
сообщение 13.10.2009 15:34
Сообщение #13


Бывалый
***

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

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


Так, все таки... Что с вот этим. Мне сдавать уже скоро, а дело не продвигается.

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

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


Цитата

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



--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.10.2009 18:54
Сообщение #14


Гость






Цитата
Так, все таки... Что с вот этим.
А что с этим? Правильно компилятор тебе говорит: не вводятся значения логического типа напрямую с клавиатуры. Вводи "окольными путями", например запрашивай "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.
 К началу страницы 
+ Ответить 

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

 



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