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

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

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

 
 Ответить  Открыть новую тему 
> Описание в подпрограмме
irena
сообщение 2.11.2004 20:48
Сообщение #1


Новичок
*

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

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


Вот код:

Код

const
arr: array[ 1 .. 100 ] of integer =

& #40;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,2
9,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,
56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82
,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100);


function minIndex: integer;
var
  i: integer;
  min: integer;
begin
  min := maxInt;
  for i := 1 to 100 do
    if min > arr[i] then
      begin
        min := arr[i]; minIndex := i
      end;
end;

function maxIndex: integer;
var
  i: integer;
  max: integer;
begin
  max := - maxInt;
  for i := 1 to 100 do
if max < arr[i] then
begin
max := arr[i]; maxIndex := i
end;
end;


как описать массив arr[i] в самой подпрограмме?

Сообщение отредактировано: irena - 2.11.2004 20:50
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.11.2004 20:53
Сообщение #2


Гость






В приведенном коде 2 подпрограммы... В какой именно описать? И почему именно в подпрограмме, а не там, где это описано сейчас?
 К началу страницы 
+ Ответить 
GoodWind
сообщение 2.11.2004 20:53
Сообщение #3


Автооответчик
*****

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

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


а зачем ?? blink.gif


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
irena
сообщение 2.11.2004 21:31
Сообщение #4


Новичок
*

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

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


Цитата(volvo @ 2.11.04 20:53)
В приведенном коде 2 подпрограммы... В какой именно описать? И почему именно в подпрограмме, а не там, где это описано сейчас?

В обоих. Почему не знаю, у нас такие правила, в таком виде не принимают.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.11.2004 21:41
Сообщение #5


Гость






Глупость совершеннейшая ... blink.gif

Код

function minIndex: integer;
const
arr: array[ 1 .. 100 ] of integer =
(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,
61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100);
var
 i: integer;
 min: integer;
begin
 min := maxInt;
 for i := 1 to 100 do
   if min > arr[i] then
     begin
       min := arr[i]; minIndex := i
     end;
end;

function maxIndex: integer;
const
arr: array[ 1 .. 100 ] of integer =
(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,
61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100);
var
 i: integer;
 max: integer;
begin
 max := - maxInt;
 for i := 1 to 100 do
if max < arr[i] then
begin
max := arr[i]; maxIndex := i
end;
end;
 К началу страницы 
+ Ответить 
Amro
сообщение 2.11.2004 22:13
Сообщение #6


Пионер
**

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

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


Цитата
Глупость совершеннейшая ...
Зато красиво то как ! :D :p2:
Цитата
В обоих. Почему не знаю, у нас такие правила, в таком виде не принимают.

irena Интересно где вас такому обучают?


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
irena
сообщение 2.11.2004 22:23
Сообщение #7


Новичок
*

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

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


А можно сделать что бы массив с числовой последовательностью использовался в коде только один раз или же нет? числа в последовательности могут идти не попорядку, так что циклом его задать не получиться. Можно ли уйти от констант?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.11.2004 22:31
Сообщение #8


Гость






irena
Все дело в том, что это не совсем константы (а вернее - совсем не константы)... Это переменные с начальным значением. Ну, а от переменных уйти вряд ли удастся...

Так что вариант, который был в самом начале - наиболее оптимальный :yes:
 К началу страницы 
+ Ответить 
Amro
сообщение 2.11.2004 22:53
Сообщение #9


Пионер
**

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

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


Может ты имеешь ввиду сделать так?! blink.gif
В самой программе массив можно задать так
Код
const
n=100;
type
 atype = array[1..n] of integer;
const
 arr: atype =
 (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,
 61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
 81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100);
Функции можно переписать таким образом ........
Код
function minIndex(arr :atype): integer;

Код
function maxIndex(arr : atype): integer;

Когда будешь их вызывать, просто посылай в ф-цию свой массив arr
"minIndex(arr)"


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
irena
сообщение 2.11.2004 23:26
Сообщение #10


Новичок
*

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

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


Amro похоже что так
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.11.2004 23:28
Сообщение #11


Гость






irena
Небольшое уточнение... Это называется "Передать в подпрограмму как параметр"
:D
 К началу страницы 
+ Ответить 
Amro
сообщение 2.11.2004 23:33
Сообщение #12


Пионер
**

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

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


Цитата
Передать в подпрограмму как параметр

По научному это звучит именно так :D


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Digitalator
сообщение 3.11.2004 18:51
Сообщение #13


Бывалый
***

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

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


Цитата
Все дело в том, что это не совсем константы (а вернее - совсем не константы)... Это переменные с начальным значением


После слова const??
эээ... ну если это переменные, попробуйте изменить их значения. удачи! rolleyes.gif

ЗЫ: если измените, не забудьте показать код (тока без асма плиз)


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.11.2004 18:56
Сообщение #14


Гость






Я не имею в виду Дельфи...

Код

const
arr: array[ 1 .. 100 ] of integer = ( {данные} );


В Турбо-Паскале 7.0 значение меняется на ура ... Можете проверить. Удачи.

Пример: ( только для ТР )
Код

const
 a: integer = 9;

begin
 writeln( 'a = ', a ); { a = 9 }
 a := 4;
 writeln( 'a = ', a ); { OOPS! }
end.


Сообщение отредактировано: volvo - 3.11.2004 19:09
 К началу страницы 
+ Ответить 
Digitalator
сообщение 3.11.2004 19:17
Сообщение #15


Бывалый
***

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

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


хммunsure.gif .. действительно, правда только для типизированных -
Цитата
Typed constant declarations are used to declare initialized variables.
Unlike an untyped constant, the declaration of a typed constant specifies
both the type and the value of the constant. Typed constants can be modified
just like variables.


для нетипизированных ничего не выйдет....

PS: имхо не стоит засорять стэк - надо передавать указатель


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 4.11.2004 9:17
Сообщение #16


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

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

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


Цитата
если измените, не забудьте показать код (тока без асма плиз)

можно без асма, если указать какую-нибудь переменную по адресу константы:

Код

const
n:byte=10;
var
b:byte absolute n;
begin
b:=2;
writeln(n); {2}
end.
Таким образом можно любый константы менять в процессе исполнения программы!
Цитата
удачи!

И тебе! :D


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


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

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

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


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

Вот бы на пасе работал такой код без ошибок:
Код
const
n:byte=10;
var
b:byte absolute n;
 m : array [1..n] of Byte;
begin
b:=20;
writeln(n); {2}
 m[19]:=0;
end.


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


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

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

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


Абалдеть! rolleyes.gif
Это надо получше изучить ....
супер... я не знал что так можно и массив обмануть ...


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

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

 

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