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

Разбить программу на подпрограммы

17.10.2015, 17:54. Показов 944. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста исправить прогу.
Ввести, вывести, убрать нули, отсортировать всё через отдельные подпрограммы. Не могу понять в чём трабл, почему при сортировке начальное количество элементов массива, а не то, что получилось после удаления нулей.
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
75
76
77
program main;
type
  m=array [1..100] of integer;
var
  a:m;
  
procedure inp(var a:m; var n:integer);
var
  i:integer;
begin
  write('введите количество элементов массива ');
  readln(n);
  for i:=1 to n do begin
      write('введите элемент ');
      readln(a[i]); 
    end;
    end;
    
procedure out(var a:m; var n:integer);
var
  i:integer; 
  begin
write ('исходный массив ');
  for i:=1 to n do
  begin
      write(a[i]:2,' ');
end;
writeln
end;
 
 
procedure del(var a:m; var n:integer);
var
  i,k:integer;
begin
k:=0;
  for i:=1 to n do 
  if a[i]*14<>0 then
  begin
  k:=k+1;
  a[k]:=a[i];
  end;
  write ('конечный массив ');
  for i:=1 to k do
  write(a[i]:2,' ');
    end;
    
procedure sor(var a:m; var k:integer);
var
  i,p,obm:integer;
begin
repeat
p:=0;
for i:=1 to k-1 do
if a[i]>a[i+1] then
begin
obm:=a[i];
a[i]:=a[i+1];
a[i+1]:=obm;
p:=1;
end;
until p=0;
writeln;
write ('отсортированный массив ');
for i:=1 to k do 
write (a[i]:2,' ');
      end;
   
   var
n,k:integer; 
begin
  inp(a,n);
  out(a,n);
  del(a,n);
  sor(a,n);
 
    end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2015, 17:54
Ответы с готовыми решениями:

Разбить программу на подпрограммы
Нужно переделать эту программу,чтобы были(-а) подпрограммы(-а). Uses crt; var str:string; ...

Нужно разбить программу на подпрограммы и вынести их в модуль
Уже всё пересмотрел. Ничего не получается const name1 = 'text.txt'; {файл с текстомм} name2 =...

Разбить графические программы на подпрограммы
реалтзовать отрисовку прямоугольников в виде процедуры вот код: uses crt,graph; var w:array of...

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

2
Модератор
Эксперт по электронике
8519 / 4373 / 1648
Регистрация: 01.02.2015
Сообщений: 13,585
Записей в блоге: 9
17.10.2015, 18:31 2
Pascal
1
2
3
4
5
procedure del(var a:m; var n:integer);
begin
.........................
  n:=k;
end;
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
17.10.2015, 18:32 3
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
type
    TArray = Array[Byte] Of Integer;
procedure Print(const arr: TArray; const n: Byte);
var
    i: Byte;
begin
    Write('исходный массив:');
    for i := 0 to n - 1 do
        Write(arr[i]:3);
    WriteLn;
end;
procedure Input(var arr: TArray; var n: Byte);
var
    i: Byte;
begin
    repeat
        Write('введите количество элементов массива (1..255): ');
        ReadLn(n);
    until (n > 0);
    Randomize;
    for i := 0 to n - 1 do
        arr[i] := Random(19) - 9;
    Print(arr, n);
end;
procedure DelZero(var arr: TArray; var n: Byte);
var
    i, j: Byte;
begin
    i := 0;
    while (i < n) do
    begin
        if (arr[i] = 0)
        then
        begin
            for j := i + 1 to n - 1 do
                arr[j - 1] := arr[j];
            Dec(n);
        end
        else
            Inc(i);
    end;
    Print(arr, n);
end;
procedure Sort(var arr: TArray; var n: Byte);
var
    i, j: Byte;
procedure Swap(var x, y: Integer);
var
    z: Integer;
begin
    z := x;
    x := y;
    y := z;
end;
begin
    for i := 0 to n - 1 do
        for j := 0 to n - i - 1 do
            if (arr[j] > arr[j + 1])
            then
                Swap(arr[j], arr[j + 1]);
    Print(arr, n);
end;
var
    a: TArray;
    n: Byte;
begin
    Input(a, n);
    DelZero(a, n);
    Sort(a, n);
end.
0
17.10.2015, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2015, 18:32
Помогаю со студенческими работами здесь

Нужно разбить программу на подпрограммы
Вот у меня есть программа) Только я не могу её разбить на подпрограммы( Она у меня тогда просто...

Разбить на подпрограммы программу, которая выводит на экран седловые точки матрицы
Приветствую. Вот код, программа выводит на экран седловые точки матрицы MxN (минимальные в...

Разбить на подпрограммы
Не могу понять как разбить свой код на 2 подпрограммы. n = int(input(' n = ')) print('*'*...

Разбить на подпрограммы (седловые точки матрицы)
Приветствую. Вот код, в консоли программа выводит на экран седловые точки матрицы MxN (минимальные...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru