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

Процедуры, поиск ошибки.

07.01.2010, 00:36. Показов 993. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
До этого не писал ни одной процедуры или функции, поэтому думаю накосячил в них, но не факт. Выводит нули и какие-то большие числа. Укажите на ошибку, а то замаялся уже.

Условие:
Дана матрица D, имеющая N строк и N столбцов. Сформируйте два одно¬мерных массива. В один запишите четные, а в другой — нечетные элемен¬ты матрицы. Выведите на экран все массивы.

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
program vosem;
uses crt;
const n=100;
type m1 = array[1..n, 1..n] of integer;
     m2 = array[1..n] of integer;
var r,x,y: integer;
    A: m1;
    B: m2;
    C: m2;
procedure randomik; {Prisvaivaet sluchainie znacheniya}
    var i, j: integer;
    begin
       randomize;
       for i:=1 to r do
          for j:=1 to r do A[i,j]:=random(40)-20;
    end;
procedure BC;     {proverya na chtnost i nechetnost', zapolnyat B i C}
    var i, j: integer;
    begin
        for i:=1 to r do
          for j:=1 to r do
            begin
                if (A[i,j] mod 2) = 0 then
                  begin
                      A[i,j]:=B[x];
                      x:=x+1;
                  end;
                if ((A[i,j] mod 2) = 1) or ((A[i,j] mod 2) = -1) then
                  begin
                      A[i,j]:=C[y];
                      y:=y+1;
                  end;
            end;
    end;
procedure vivod(D: m2; var t: integer);  {vivod massiva}
    var i: integer;
    begin
 
        for i:=1 to t do write(D[i]:5);
        writeln;
    end;
 
begin
    clrscr;
    write('vvedite razmer massiva ');
    readln(r);
    randomik;
    x:=1; y:=1;
    BC;
    vivod(b, x);
    vivod(c, y);
    readln;
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.01.2010, 00:36
Ответы с готовыми решениями:

Ошибки при вызове процедуры
Вот сама функция function GCD(A: Integer; B: Integer): Integer; begin A := Abs(A); B...

Lazarus ошибки SIGSEGV и 202 при вызове процедуры
Если у кого-нибудь есть какие-нибудь мысли, прошу высказывать. любая толика по делу будет полезна,...

Выберите строку, в которой нет ошибки применения данной процедуры
1 Даны описания: Var a,b:integer; c,d:real; procedure obmen(var a:integer; var b:integer); Var...

8
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
07.01.2010, 01:46
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
program vosem;
uses crt;
const n=100;
type m1 = array[1..n, 1..n] of integer;
     m2 = array[1..n] of integer;
var i,j,r,x,y: integer;
    A: m1;
    B: m2;
    C: m2;
procedure randomik(r:integer; var a: m1); {Prisvaivaet sluchainie znacheniya}
    var i, j: integer;
    begin
       randomize;
       for i:=1 to r do
          for j:=1 to r do A[i,j]:=random(40)-20;
    end;
    
 procedure BC(a:m1; var b:m2 ; var c:m2; var x:integer; var y: integer);     {proverya na chtnost i nechetnost', zapolnyat B i C}
    var k,i, j: integer;
    begin
 
        for i:=1 to r do
          for j:=1 to r do
            begin
                if (A[i,j] mod 2) = 0 then
                  begin
                      B[x]:=A[i,j];
                      x:=x+1;
                  end else
                                begin
                   C[y]:=A[i,j];
                      y:=y+1;
                  end;
            end;
    end;
    
    begin
    clrscr;
    write('vvedite razmer massiva ');
    readln(r);
    randomik(r,a);
                  for i:=1 to r do
                  begin
                  for j:=1 to r do
                  write(a[i,j], '   '); writeln; end;
 
    x:=1; y:=1;
    BC(a,b,c,x,y);
    writeln;
 
    for i:=1 to x do
    write(b[i],'  ');
    
    writeln;
    writeln;
    
    for i:=1 to y do
    
    write(c[i],'   ' ); end.
Вот посмотрите. Правда, я так и не придумал к чему отнести 0. Он попадает и туда и сюда - доработайте.
И еще - все таки это противоестественно для моего мозга, когда тело программы состоит из одних процедур.
1
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 5
07.01.2010, 02:08  [ТС]
Спасибо Вам большое. Такая глупая ошибка: во второй процедуре вместо B[x]:=A[i,j] написал все наоборот... А нолик убрал, в выводе надо было поставить for i:=1 to (t-1).
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
07.01.2010, 05:51
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Kizer Посмотреть сообщение
И еще - все таки это противоестественно для моего мозга, когда тело программы состоит из одних процедур.
Тогда Вам следует перестать быть программистом или всё-таки привыкать к тому, что Ваша программа будет состоять из одних функций,классов,структур и т.п. Ведь на этом и держится всё программирование (ну как одна из основ программирования).
3
07.01.2010, 12:44

Не по теме:

Цитата Сообщение от lexus_ilia Посмотреть сообщение
Тогда Вам следует перестать быть программистом или всё-таки привыкать к тому, что Ваша программа будет состоять из одних функций,классов,структур и т.п. Ведь на этом и держится всё программирование (ну как одна из основ программирования).
Давайте, Вы оставите мне выбирать быть мне программистом или нет. Я еще все таки только учусь.

Все-таки не согласен с Вами. Программирование, Слава богу, держится не на функциях, а на ветвлении и цикличности. Да, есть случаи, когда программы состоят из одних подпрограмм, но во-первых, эти программы гораздо более объемны чем данные, во-вторых: в Паскале не слишком удачно реализовано исполнение подпрограмм. Не слишком удобно каждый раз, разбираясь в коде, залезать в блок описания.

0
3318 / 1380 / 110
Регистрация: 28.04.2009
Сообщений: 4,822
07.01.2010, 12:51
Цитата Сообщение от Kizer Посмотреть сообщение
Все-таки не согласен с Вами. Программирование, Слава богу, держится не на функциях, а на ветвлении и цикличности. Да, есть случаи, когда программы состоят из одних подпрограмм, но во-первых, эти программы гораздо более объемны чем данные, во-вторых: в Паскале не слишком удачно реализовано исполнение подпрограмм. Не слишком удобно каждый раз, разбираясь в коде, залезать в блок описания.
конечно это не нужно... только когда вам надо найти положительное число в массиве.
а в остальном без подпрограмм не обойтись.
lexus_ilia, прав!
0
07.01.2010, 12:57

Не по теме:

Wolf, да никто не спорит, что не обойтись. просто ИМХО, для решения таких задач, где заполняется всего 1-н масссив, не нужно городить огород и писать процедуру его заполнения.

0
07.01.2010, 13:04

Не по теме:

начинать учиться надо с малого

0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
07.01.2010, 13:24
Kizer, Я Вас не учу, не упаси бог, у меня нет соответствующего звания. Просто Вам бы посмотреть любую программу написанную под компиляторы с ООП (не считая Pascal компиляторы), например, Delphi, VS и т.п. Вы бы понимали что у программы есть несколько режимов , назовём их "пассивный" и "активный", так вот когда программа в пассивном режиме, не выполняется ни одна из написанных Вами функций и процедур, как только происходит некоторое действие (Операционной системе отправляется сообщение, которое вызывает в Вашей программе соответствующую функцию/процедуру). Поэтому они неимоверно важны. Невозможно представить например класс без методов (а ведь методы класса - это его функции/процедуры). А Класс является основой ООП, а ООП является востребованной частью программирования. Так что давайте не будет разводить тут лишний флуд. Просто решим что функции и процедуры важны так же как и циклы и ветвления.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.01.2010, 13:24
Помогаю со студенческими работами здесь

Поиск процедуры в джобе
Всем добрый день. Как узнать в каком джобе прописана определённая процедура, не проверяя все...

Помогите в создании Процедуры Поиск в (7.7)
Как написать процедуру Поиска товара в Справочнике "Номенклатура" по фрагменту наименование...

Процедуры-функции, поиск минимального значения
Делал, делал. И меня остановил вывод из функции. Подскажите бездарному, как это решить? Найти...

Поиск минимума в виде подпрограммы-процедуры
Ввести двумерный массив A(N,N) (N<=10) и выдать его на печать в виде таблицы. Увеличить все...

В случае ошибки не прервать выполнение программы, а перейти к другой процедуре или к другому месту той же процедуры
Прошу помочь: в случае ошибки не прервать выполнение программы, а перейти к другой процедуре или к...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru