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

Функция vs Массив

11.04.2009, 20:14. Показов 1249. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задача такая:
преобразовать матрицы А и В следующим образом: если элемент на главной диагонали отрицателен, то все последующие элементы столбца в котором он находится увеличить на единицу. сложить полученные матрицы.
вот код:
Pascal
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
uses crt;
type mass=array[1..5,1..5] of integer;
var i,j,k:integer;
var a: mass;
    b:mass;
    c:mass;
function matr2(f:mass):integer;
begin
for i:=1 to 5 do begin
for j:=1 to 5 do begin
 if f[i,j]<0  then
 begin
 for k:=i+1 to 5 do begin
 f[k,j]:=f[k,j]+1;
 end;end;end;end;
for i:=1 to 5 do begin
        for j:=1 to 5 do begin
        write(f[i,j]:4);
    end;
    writeln;
end;
end;
begin
clrscr;
writeln('Massiv A');
for i:=1 to 5 do begin
for j:=1 to 5 do begin
writeln('Vvedite element',i,'-',j);
read(a[i,j]);
end;end;
readkey;
writeln('massiv B');
for i:=1 to 5 do begin
    for j:=1 to 5 do begin
        writeln('Vvedite element',i,'-',j);
        read(b[i,j]);
                end;end;
writeln('Ishodnaya matrica A');
write('');
for i:=1 to 5 do begin
    for j:=1 to 5 do begin
        write(a[i,j]:4);
    end;
        writeln;
    end;
        writeln;
    writeln('Ishodnaya matrica B');
        writeln;
for i:=1 to 5 do begin
        for j:=1 to 5 do begin
        write(b[i,j]:4);
    end;
        writeln;
    end;
        readkey;
writeln('Izmenennaya matrica A ');
matr2(a);
writeln('Izmenennaya matrica B ');
matr2(b);
readkey;
writeln('Summa izmenennyh matric A i B');
for i:=1 to 5 do begin
for j:=1 to 5 do begin
c[i,j]:=a[i,j]+b[i,j];
end;end;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
 
    write(c[i,j]:4);
    end;
    writeln;
end;
readkey;
end
Проблема вот в чем!
когда массив в функции меняется то в главной программе он почему-то остается неизменным! тоесть сумма в главной программе получается как сумма введенных с клавиатуры массивов а не измененных функцией...массив то глобальный он же должен измениться! что делать я не знаю...аналогичный код на с++ прекрасно работает. Но мне надо именно на паскале. Подскажите
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2009, 20:14
Ответы с готовыми решениями:

Функция заполняющая массив и функция вывода массива
Напишите две функции. Первая функция заполняет массив, вторая функция выводит массив на экран

Функция принимающая два аргумента - массив строк и возвращающая массив целых чисел
Добрый день! Нужно реализовать функцию принимающую два аргумента - массивы строк и возвращающая массив целых чисел public static int...

Функция которая принимает целочисленный массив и возвращает 1 если это центрированный массив
Здравствуйте! Помогите пожалуйста решить задание.Работаю в среде MS visual studio .Раньше не передавала в качестве параметра массив. ...

9
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
11.04.2009, 20:15
Цитата Сообщение от argen666 Посмотреть сообщение
задача такая:
Это всё, что у меня написано.
0
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 5
11.04.2009, 20:20  [ТС]
я исправил
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
11.04.2009, 20:24
Видимо, при перезагрузке матрицы, нужно перезагрузить и все процедуры/функции.
0
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 5
11.04.2009, 20:30  [ТС]
Цитата Сообщение от Kidalvь Посмотреть сообщение
Видимо, при перезагрузке матрицы, нужно перезагрузить и все процедуры/функции.
если честно не понял что ты имел ввиду
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
11.04.2009, 20:45
Укажи так:

Pascal
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
function matr2:mass;
begin
for i:=1 to 5 do begin
for j:=1 to 5 do begin
if f[i,j]<0 then
begin
for k:=i+1 to 5 do begin
f[k,j]:=f[k,j]+1;
end;end;end;end;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
write(matr2[i,j]:4);
end;
writeln;
end;
end;
 
end;
begin
...
a:=matr2;
...
b:=matr2;
...
end.
0
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 5
11.04.2009, 20:51  [ТС]
Цитата Сообщение от Kidalvь Посмотреть сообщение
Укажи так:


Код Pascal

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



function matr2:mass;
begin
for i:=1 to 5 do begin
for j:=1 to 5 do begin
if f[i,j]<0 then
begin
for k:=i+1 to 5 do begin
f[k,j]:=f[k,j]+1;
end;end;end;end;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
write(matr2[i,j]:4);
end;
writeln;
end;
end;

end;
begin
...
a:=matr2;
...
b:=matr2;
...
end.
Error 34: invalid function result name
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
11.04.2009, 20:52
Да нет, вы что, всё проще, напишите не так :
Pascal
1
function matr2(f:mass):integer;
а вот так:
Pascal
1
function matr2(var f:mass):integer;
Если я правильно понял проблему, то у вас получается что во время работы функции происходят изменения матрицы, а потом в головной программе она остаётся неизменоой (после работы функции). Так вот, если так, что знайте переменная описанная в функции (в скобках, т.е. в передаваемых параметрах) вместе с var будет изменятся в главной, т.е. меняется глобальная переменная, а вот всё что вы описывает без var является как бы privat'овскими для данной функции, только она может её использовать...
1
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
11.04.2009, 21:09
Цитата Сообщение от lexus_ilia Посмотреть сообщение
Да нет, вы что, всё проще, напишите не так :
Pascal
1
function matr2(f:mass):integer;
а вот так:
Pascal
1
function matr2(var f:mass):integer;
Если я правильно понял проблему, то у вас получается что во время работы функции происходят изменения матрицы, а потом в головной программе она остаётся неизменоой (после работы функции). Так вот, если так, что знайте переменная описанная в функции (в скобках, т.е. в передаваемых параметрах) вместе с var будет изменятся в главной, т.е. меняется глобальная переменная, а вот всё что вы описывает без var является как бы privat'овскими для данной функции, только она может её использовать...
Это да, тогда смысл делать функцию? Тогда нужно делать процедуру:

Pascal
1
procedure matr2(var f:mass);
0
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 5
11.04.2009, 21:20  [ТС]
СПАСИБО ОГРОМНОЕ ВСЕМ!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2009, 21:20
Помогаю со студенческими работами здесь

Рекурсивная функция, которая выведет массив с конца (переворачивать массив не нужно, просто вывод элементов с конца)
Рекурсивная функция, которая выведет массив с конца (переворачивать массив не нужно, просто вывод элементов с конца)

Функция: принять массив слов, вернуть массив из групп этих слов
Напишите функцию на языке PHP, которая принимает массив слов, а возвращает массив из групп этих слов. К одной группе относятся слова,...

Массив и функция
Есть массив. Как сделать, чтобы в функции изменялись значения массива?

C++ функция и массив
Помогите,пожалуйста написать программу на C++. Написать программу по обработке массива на функциях. Функция1: заполнение массива...

Функция и массив
Всем привет, вот задание: &quot;Создать функцию которая обнуляет в массиве значения между минимальным и максимальным&quot; Вроде все...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru