Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
8 / 5 / 3
Регистрация: 19.01.2015
Сообщений: 88
1

Нужно исправить ошибку в программе

10.09.2015, 11:53. Показов 1175. Ответов 4
Метки нет (Все метки)

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
78
79
80
program zad3;
label l1;
type mas=array [1..50] of integer;
mas1=array [1..100] of integer;
var
 
a,b : mas;
c : mas1;
i, j,k,fl,n,m:byte;
procedure sort(a:integer; var arr: mas);{процедура сортировки по возрастанию методом пузырька}
var i,j,k:integer;
begin
    for i := 1 to a-1 do
        for j := 1 to a-i do
            if arr[j] > arr[j+1] then begin
                k := arr[j];
                arr[j] := arr[j+1];
                arr[j+1] := k
            end;
end;
procedure concat(a,b:mas; n,m:integer; var arr: mas1);{процедура формирования масива с из двух отсортированных}
var i,j,k:integer;
begin
 i:=1;
 j:=1;
 k:=1;
 while(k<n+m) do
  begin
   while((a[i]<=b[j])and(i<=n))do {запись в массив с элементов массива а,пока не найдётся элемент больший, чем в массиве b}
     begin
      c[k]:=a[i];
      inc(k);
      inc(i);
     end;
   while((b[j]<=a[i])and(j<=m))do{запись в массив с элементов массива b,пока не найдётся элемент больший, чем в массиве a}
     begin
      c[k]:=b[j];
      inc(k);
      inc(j);
     end;
  if((j>m)and(i<n)) then{запись в массив с оставшихся элементов массива а}
     while(i<=n)do
     begin
      c[k]:=a[i];
      inc(k);
      inc(i);
     end;
   if((i>n)and(j<m))then{запись в массив с оставшихся элементов массива b}
      while(j<=m)do
     begin
      c[k]:=b[j];
      inc(k);
      inc(j);
     end;
  end;   
end;
begin
 
l1: writeln ('Vvedite razmer vektora a(<=50)');{ввод количества элементов массива а}
 readln(n);
 writeln ('Vvedite razmer vektora b(<=50)');{ввод количества элементов массива b}
 readln(m);
 if(n>50)or(n<1)or(m>50)or(n<1)then {проверка допустимых значений}
  begin
   writeln ('Nekorrektnie vhodnie dannie');
   goto l1;
  end; 
 for i:=1 to n do  {формирование исходного массива а }
     readln(a[i]);
 for j:=1 to m do  {формирование исходного массива b }
     readln(b[j]);
 
 sort(n,a);{сортировка массива а}
 sort(m,b);{сортировка массива b}
 concat(a,b,n,m,c);
 {вывод искомого массива с}
 writeln ('Itogovii massiv C:');
 for i:=1 to n+m do  
   write (c[i]:8,'');
end.
Суть ошибки: При вводе больших чисел, при заполнении массивов, последний максимальные элемент обнуляется.
Нужно исправить ошибку в программе
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2015, 11:53
Ответы с готовыми решениями:

Рекурсия. Нужно исправить ошибку в программе.
Народ, нужна ваша помощь. Вот условие задачи: Найти знaчeние выpaжения, испoльзyя peкурсивный...

Исправить ошибку в программе
Недавно написал программу, но не могу найти в ней ошибку. Суть в том, что программа всегда выдает...

Исправить ошибку в программе
uses wincrt; var s, t:string; i:integer; d, f, d1:text; begin for i:=1 to 100 do ...

Исправить ошибку в программе
Всё время ставит оценку 5,и k всегда равно 10: program test; uses crt; var ans, k:...

4
Jazon_deenAlt
10.09.2015, 12:07
  #2
 Комментарий модератора 
https://www.cyberforum.ru/announcement.php?a=3
1.4 Официальными языками форума являются русский и английский языки. Размещение сообщений на других языках запрещено.
5.18 Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.

перепишите задание по правилам
0
8 / 5 / 3
Регистрация: 19.01.2015
Сообщений: 88
10.09.2015, 15:13  [ТС] 3
Задание:
Есть упорядоченные по убыванию материальные массивы. Составить программу, состоящую из слияния массивов и упорядоченный по не убывания массив.

Надеюсь, хоть что то будет понятно.
0
Модератор
Эксперт по электронике
8476 / 4335 / 1642
Регистрация: 01.02.2015
Сообщений: 13,461
Записей в блоге: 8
10.09.2015, 19:43 4
Лучший ответ Сообщение было отмечено kEkCJkee как решение

Решение

IMHO, какая-то ошибка в реализации слияния.
Там нужно
1. Пока в обоих массивах есть элементы - вставлять элемент в итоговый.
2. Теперь в одном из массивов элементов нет, а в другом остались. Делаем два цикла для дозаписи "хвоста" - один выполнится, а другой - нет.
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
  procedure concat(a, b: mas; n, m: integer; var arr: mas1);
  {процедура формирования масива с из двух отсортированных}
  var
    i, j, k: integer;
  begin
    i := 1;
    j := 1;
    k := 1;
    {Пока в обоих массивах есть элементы - вставлять элемент в итоговый.}
    while (i <= n) and (j <= m) do
    begin
      if a[i] < b[j] then
      begin
        c[k] := a[i];
        Inc(i);
      end else
      begin
        c[k] := b[j];
        Inc(j);
      end;
      Inc(k);
    end;
    {Теперь в одном из массивов элементов нет, а в другом остались.
     Делаем два цикла для дозаписи "хвоста" - один выполнится, а другой - нет.}
    while (i <= n) do
    begin
      c[k] := a[i];
      Inc(i);
      Inc(k);
    end;
    while (j <= m) do
    begin
      c[k] := b[j];
      Inc(j);
      Inc(k);
    end;
  end;
1
8 / 5 / 3
Регистрация: 19.01.2015
Сообщений: 88
10.09.2015, 21:08  [ТС] 5
Благодарю за помощь!
0
10.09.2015, 21:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2015, 21:08
Помогаю со студенческими работами здесь

Нужно исправить ошибки в программе
Program Min_el; Const N=9; var a: array of real; {massiv celihj} min: Integer; {nomer...

Нужно исправить ошибки в программе
Program poezdka; Uses CRt; Label m1; Var Gor: string; {Naimenovanie gorode} S,V,T:...

Нужно исправить ошибку
Будете смеяться,вычисляю интеграл методом симпсона,функция во вложенном файле не сходится ответ с...

Нужно исправить ошибку
Всем привет. При написании програмы у меня возникла проблема такого типа: Нужно создать массив С с...

Нужно исправить ошибки в программе гадания на ромашке
programm ROMASKA uses CRT; var k:string; begin CLSSCR; WritLn(' GODANIE NA ROMASKE...

Нужно исправить ошибку(рекурсия)
здрастуйте,помогите пожалуйста исправить ошибку,у меня переполняется стек при массиве когда n&gt;...


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

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