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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Логическая функция
SeRGuS
сообщение 16.01.2005 15:13
Сообщение #1


Новичок
*

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

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


Описать логическую функцию, проверяющую упорядочены ли по возрастанию или убыванию элементы массива.

Проверьте где я допустил ошибку.

Код

uses crt;
const n=5;
type mass= array[1..n] of integer;
var a:mass;
   i:integer;
   p: boolean;

function yp(a:mass):boolean;
var i: integer;
    p:boolean;
begin
 p:=false;
  for  i:=1 to n-1 do
   if (a[i] > a[i+1]) or (a[i] < a[i+1]) then p:=true;
 yp:=p;
end;

begin
clrscr;
for i:=1 to n do begin
    write ('a[',i,']=');
    read (a[i]); end;

if yp(a) then writeln('упоряд.')
      else writeln('не упоряд.');
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 16.01.2005 15:22
Сообщение #2


N337
****

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

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


Цитата
Код
if (a[i] > a[i+1]) or (a[i] < a[i+1]) then p:=true;

Надо проверять условия возрастания/убывания отдельно:

Код

{ ... }
p1 := True;
p2 := True;
for i := 1 to n - 1 do
 begin
   p1 := p1 and (a[i] > a[i + 1]);
   p2 := p2 and (a[i] < a[i + 1]);
 end;
yp := p1 or p2;
{ ... }


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 15:22
Сообщение #3


Пионер
**

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

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


Я бы сделал что-то вроде такого.
Код


uses crt;
const n=5;
type mass= array[1..n] of integer;
var a:mass;
  i:integer;

function MintoMax(a:mass):boolean;
var i: integer;
   p:boolean;
begin
 p:=false;
 for  i:=1 to n-1 do
  if (a[i] < a[i+1]) then p:=true
  else begin
  p:=false;
  exit;
  end;

  MinToMax:=p;
end;

function MaxToMIn(a:mass):boolean;
var i: integer;
   p:boolean;
begin
p:=false;
 for  i:=1 to n-1 do
  if (a[i] > a[i+1]) then p:=true
  else begin
  p := false;
  exit;
  end;
  MaxToMIn:=p;
end;

begin
clrscr;
for i:=1 to n do begin
   write ('a[',i,']=');
   read (a[i]); end;

if (mintomax(a) or maxtomin(a)) then writeln('упоряд.')
     else writeln('не упоряд.');
end.


Сообщение отредактировано: SHnur - 16.01.2005 16:09


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.01.2005 15:31
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


И не работает. smile.gif
Код
yp:=p;

заменить на
Код
MixnoMax:=p;

кстати может все-таки MinToMax ? smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 15:34
Сообщение #5


Пионер
**

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

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


Вот так smile.gif
а там ведь главное принцип smile.gif) Просто лень было Паскаль пускать для теста ..


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 16.01.2005 15:53
Сообщение #6


N337
****

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

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


Можно и так... Только если совсем-совсем одну функцию надо... ;) :D


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 15:59
Сообщение #7


Пионер
**

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

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


xds , конечно .. так как у тебя , намного проще ;)


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 16.01.2005 16:03
Сообщение #8


N337
****

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

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


Не факт (не для всех проще). Встречал много людей, которые очень удивлялись, увидев присвоение логической переменной результата логического же выражения smile.gif


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 16:05
Сообщение #9


Пионер
**

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

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


помоему ещё чаше люди удивляются применению логичиских операторов к численым значениям ;))
у меня самого долго в голове не уеладывалось "как ?" ;)

Сообщение отредактировано: SHnur - 16.01.2005 16:05


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.01.2005 16:05
Сообщение #10


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


SHnur,
А работает-то не правильно smile.gif
вот "текстовый скришот":
Цитата
a[1]=1
a[2]=3
a[3]=2
a[4]=5
a[5]=6
упоряд.


smile.gif

так что в алгоритме ошибка.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 16.01.2005 16:07
Сообщение #11


N337
****

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

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


В котором?


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 16:10
Сообщение #12


Пионер
**

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

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


Oleg_Z , так точно должно работать ! Проверь ;)


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.01.2005 16:11
Сообщение #13


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Цитата(SHnur @ 16.01.05 15:22)
Я бы сделал что-то вроде такого.
Код


uses crt;
const n=5;
type mass= array[1..n] of integer;
var a:mass;
  i:integer;

function MintoMax(a:mass):boolean;
var i: integer;
   p:boolean;
begin
 p:=false;
 for  i:=1 to n-1 do
  if (a[i] < a[i+1]) then p:=true
  else begin
  p:=false;
  exit;
  end;

  MinToMax:=p;
end;

function MaxToMIn(a:mass):boolean;
var i: integer;
   p:boolean;
begin
p:=false;
 for  i:=1 to n-1 do
  if (a[i] > a[i+1]) then p:=true
  else begin
  p := false;
  exit;
  end;
  MaxToMIn:=p;
end;

begin
clrscr;
for i:=1 to n do begin
   write ('a[',i,']=');
   read (a[i]); end;

if (mintomax(a) or maxtomin(a)) then writeln('упоряд.')
     else writeln('не упоряд.');
end.

вот результат.
Цитата
a[1]=1
a[2]=3
a[3]=2
a[4]=5
a[5]=6
упоряд.


НЕ РАБОТАЕТ!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 16:13
Сообщение #14


Пионер
**

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

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


Oleg_Z , я отредактировал его ! Посмотри заново !

Код

uses crt;
const n=5;
type mass= array[1..n] of integer;
var a:mass;
 i:integer;

function MintoMax(a:mass):boolean;
var i: integer;
  p:boolean;
begin
p:=false;
for  i:=1 to n-1 do
 if (a[i] < a[i+1]) then p:=true
 else begin
    MinToMax:=false;
    exit;
 end;

 MinToMax:=p;
end;

function MaxToMIn(a:mass):boolean;
var i: integer;
  p:boolean;
begin
p:=false;
for  i:=1 to n-1 do
 if (a[i] > a[i+1]) then p:=true
 else begin
 MaxToMIn := false;
 exit;
 end;
 MaxToMIn:=p;
end;

begin
clrscr;
for i:=1 to n do begin
  write ('a[',i,']=');
  read (a[i]); end;

  writeln( (mintomax(a) or maxtomin(a)));
  readkey;
end.


Сообщение отредактировано: SHnur - 16.01.2005 16:18


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.01.2005 16:27
Сообщение #15


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


так хорошо smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 16:29
Сообщение #16


Пионер
**

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

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


Oleg_Z , я думал просто , что exit выходит только из цикла а не из всей функции ... оэтому не хотело работать ;)

Индюк тоже думал, да в суп попал smile.gif проверять надо!

Сообщение отредактировано: Oleg_Z - 16.01.2005 16:30


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.01.2005 16:32
Сообщение #17


Гость






Цитата(SHnur @ 16.01.05 14:34)
Просто лень было Паскаль пускать для теста ..

Вот и напрасно. В следующий раз читай правила, я ведь просил проверять программы перед тем, как их постить.


Согласен, я сейчас вынесу это в основные правила!

Сообщение отредактировано: Oleg_Z - 16.01.2005 16:34
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 16:35
Сообщение #18


Пионер
**

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

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


ОК ! Без проверки небуду кидать ! :p2:


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 16.01.2005 16:58
Сообщение #19


Смотрю...
*****

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

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


Цитата
думал просто , что exit выходит только из цикла а не из всей функции ...

Break; - прерывает цикл, а exit; выходит из подпрограмм


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
SHnur
сообщение 16.01.2005 17:07
Сообщение #20


Пионер
**

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

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


APAL , спасибо за информацию !

а в HELP залезть было слабо?
Break -Прерывает операторы циклов For, While или Repeat.
Exit - Немедленно выходит из текущего блока программы.
Halt - Останавливает выполнение программы и выходит в операционную систему.


Сообщение отредактировано: Oleg_Z - 16.01.2005 17:11


--------------------
Двадцать пятый час в сутках может появиться всего лишь из-за небольшой ошибки в программе.
Чтобы не воспользоваться сумасшедшими возможностями, нужно быть идиотом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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