Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 29.07.2009
Сообщений: 119

Процедура присваения значения элементу массива

22.08.2009, 22:22. Показов 1015. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть процедура, которой передаётся массив строк и число - индекс какого-нибудь елемента. Процедура присваевает элементу с этим индексом значение (например вводимое с клавиатуры). Когда в главной программе элемент с этим индексом выводится на экран, оказывается, что он пуст! Почему так? Ведь когда мы в процедуре изменяем числовую переменную, в главной программе видно, что она изменяется.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.08.2009, 22:22
Ответы с готовыми решениями:

Определить количество элементов массива, значения которых равно первому элементу
N=8 Определить количество элементов массива, значения которых = первому элементу.

Удалить из массива элемент, расположенный после каждого значения, равного максимальному элементу
Помогите,не вьезжаю! Дан одномерный массив. Надо а)удалить из него элемент,расположенный после каждого значения,равного максимальному...

Определить количество элементов массива размера 10, значения которых равны последнему элементу.
Помогите :) N=10 Определить количество элементов массива, значения которых = последнему элементу.

9
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
22.08.2009, 23:01
Вообще-то надо бы Ваш код посмотреть. А в принципе так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 type mass:array[1..100] of integer;
procedure Zamena(var m:nass;k,z:integer);
begin
m[k]:=z;
end;
 
var a:mass;
     ind,chs:integer;
begin
{создаем массив}
write('ind=');readln(ind);
write('chs=');readln(chs);
Zamena(a,ind,chs);
{вывод измененного массива}
0
0 / 0 / 1
Регистрация: 29.07.2009
Сообщений: 119
22.08.2009, 23:12  [ТС]
Я говорю о массиве строк... Ну например:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
S : array [1..10] of string;
Kol : Byte;
procedure A(var Kol : Byte; S : array of string);
 begin
  Readln(S[kol-1]);
 end;
begin
kol := 1;
A(kol,S);
Write(S[Kol]);
Readln;
end.
Строка не выводиться, она пуста.))
0
(Yellow_Duck)
 Аватар для MadMag
1261 / 130 / 15
Регистрация: 16.10.2008
Сообщений: 733
23.08.2009, 00:48
Приветствую, puporev, давно не заходил.

Алекс, это же прозрачно, когда создается функция она создает массив, который никак не связан с остальным кодом программы, я имею ввиду, что перед переменной S не стоит ключевого слова вар. И кроме того, создается открытый массив, в котором нумерация с нуля, а не, это учтено, не заметил, короче, подстановка слова var перед переменной S в объявлении функции, исправит проблему, это будет означать что этот параметр будет по ходу функции изменяться.
1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.08.2009, 09:35
Я говорю о массиве строк... Ну например:
Да какая разница массив чего, хоть файлов, суть же не в этом, а в том что Вы не написали, как правильно заметил Yellow Duck, волшебное слово var, и ничего не передали в программу, а тип массива здесь не при чем.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.08.2009, 09:58
У Вас и все остальное неправильно написано, надо например так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses crt;
type
mas=array [1..3] of string; //объявляем тип массива для передачи в процедуру
procedure A(Kol : Byte; var S : mas);//var пишем только перед выходными параметрами, 
                                         //причем перед параметрами разного типа var пишется снова
                                         //например procedure B(a,b:integer; var sum:integer; var castn:real);
                                         //водим 2 целых числа, получаем сумму-целое число, частное-вещественное число
 begin
  writeln(S[kol-1]);//вывести на экран это write, или writeln. readln-это читать
 end;
var
S : mas;
Kol, i : Byte;
begin
clrscr;
writeln('Введите 3 слова:');
for i:=1 to 3 do// индексы c 1
readln(s[i]);
kol := 2;
A(kol,S);//выведет на экран первое слово(kol-1)
Readln
end.
1
0 / 0 / 1
Регистрация: 29.07.2009
Сообщений: 119
23.08.2009, 10:19  [ТС]
Вы мне прям с озов))) Про вар объяснили, спасибо. Этого я ещё не знал. А зачем тип объявлять? Нельзя объявить просто массив?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.08.2009, 10:22
Нельзя объявить просто массив?
Нет, нельзя. Массив это пользовательский тип, а не стандартный как например integer, где заранее определены все его данные. А массив надо определить сначала, а потом им пользоваться.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.08.2009, 10:28
Кстати динамических массивов типа array of string в Паскале нет. Еще, при объявлении строковых массивов желательно ограничивать если это возможно длину строки, иначе, напрмер при объявлении большого массива, порядка 200 элементов, у Вас просто не хватит памяти под него, поскольку по умолчанию тип string в Паскале это 255 символов. Редко же пользуемся строками длиннее 80 символов.
type mas=array[1..200] of string[80];
При использовании записей(record), бывает несколько строковых полей в одной записи, что требует памяти. Там вообще приходиться прикидывать максимальную длину полей и ограничивать до 10, 20 символов.
0
(Yellow_Duck)
 Аватар для MadMag
1261 / 130 / 15
Регистрация: 16.10.2008
Сообщений: 733
23.08.2009, 10:29
Или можно не объявлять в начале и потом не пользоваться, а объявить только когда объявляешь переменную.
Типа такого:
var
mas:array[0..10] of integer;
begin
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2009, 10:29
Помогаю со студенческими работами здесь

Удалить из массива все элементы, значения которых равны наименьшему элементу
Будьте добры, помогите решить!!! Задача 1. Сформировать случайным образом два массива: А(10) целых и В(15) вещественных чисел. Увеличить...

Присвоение значения случайному элементу массива
Всем привет. Такой вопрос. Вот есть у меня массив, скажем, A, состоящий из десяти элементов. Необходимо, что девять из десяти элементов...

Задание значения конкретному элементу массива
Доброго времени суток,товарищи.Столкнулся с проблемой на поиски которой уже потратил неделю,но так и не нашел ответал,потому прошу вашей...

Присвоение значения элементу двумерного массива
Почему я могу сделать так: Coors = 2560.6301, Coors = -1289.7698, Coors = 1044.1250;, а так: Coors = { 2560.6301, -1289.7698, 1044.1250 };...

Задание n элементу массива значения во время инициализации
Читал книгу Кочан С. - Программирование на языке С - 2007, дошел до главы с массивами. Наткнулся на пример, который мне показался мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru