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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Логическая функция
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


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

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

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


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

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

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


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


Пионер
**

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

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


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


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


N337
****

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

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


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


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


Пионер
**

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

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


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


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


N337
****

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

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


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


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


Пионер
**

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

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


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

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


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


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

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

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


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


smile.gif

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


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


N337
****

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

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


В котором?


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


Пионер
**

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

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


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


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


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

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

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


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

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

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


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


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


Пионер
**

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

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


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

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

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


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


Гость






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

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


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

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


Пионер
**

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

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


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


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


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

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

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


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

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


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


Пионер
**

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

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


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

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


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


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

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

 





- Текстовая версия 18.12.2025 1:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name