Тема: Динамічні масиви

Всім доброго дня. Є проблема з вирішенням задачі про динамічний масив: Дані два масива: М1(n1)=(-5 , 10 , 21 , 35  ,-9 , 11 , 4 , 5) i M2(n2)=( 1,  5 , 10 , -3 , 4  ,-15 , 36,  6 , 11). Знайти їх об'єднання та результат записати в масив M3(n3). Вихідні дані ввести із текстового файлу. Потрібні дії оформити у вигляді підпрограми та отриманий результат вивести у текстовий файл
По звичайному написати програму можу, а от з використанням динамічного масиву, не до кінця розумію.

код програми без динамічного масиву:

program sd;
type 
  n1=array[1..8] of integer; 
  n2=array[1..9] of integer;
  n3=array[1..17] of integer;
var 
  m1:n1;
  m2:n2;
  m3:n3;
  i,j:integer;
  ur,wi:text;
 begin
    assign(ur,'kurs9.txt');
    reset(ur);
    for i := 1 to 8 do read(ur,m1[i]);
      write(m1[i]:4);
    for i := 1 to 9 do read(ur,m2[i]);
      write(m2[i]:4);    
     close(ur);
       m3[j]:=m1[i]+m2[i]; 
  writeln(m3:4);
  assign(wi, 'hod.txt');
  rewrite(wi);
  write(wi,' Увесь масив:'); 
  for i := 1 to 17 do
      write(wi, m3[j]:5);  
  close(wi);
  readln;
  end.

2

Re: Динамічні масиви

Ви впевнені, що під об’єднанням мається на увазі не https://uk.wikipedia.org/wiki/%D0%9E%D0 … 0%B8%D0%BD ?

Подякували: koala, leofun012

3

Re: Динамічні масиви

quez написав:

Ви впевнені, що під об’єднанням мається на увазі не https://uk.wikipedia.org/wiki/%D0%9E%D0 … 0%B8%D0%BD ?

думаю що так. так набагато легше.

4

Re: Динамічні масиви

Щось не бачу у вашому коді ніякого об'єднання.
http://replace.org.ua/post/17261/#p17261

5

Re: Динамічні масиви

quez написав:

Ви впевнені, що під об’єднанням мається на увазі не https://uk.wikipedia.org/wiki/%D0%9E%D0 … 0%B8%D0%BD ?

Задумавшись над вашим питанням, я знайшов на сайтах як зробити злиття масивів, програма працює, але в кінці сортування виносить не всі числа та M3(n3) не хоче записувати до файлу. Хто може допоможіть у вирішення цієї проблеми.

Post's attachments

876.JPG 19.27 kb, 304 downloads since 2014-05-04 

6

Re: Динамічні масиви

Пане, ви не знаходите, що для відповіді на ваше питання чогось не вистачає?

Подякували: Odin881

7

Re: Динамічні масиви

koala написав:

Пане, ви не знаходите, що для відповіді на ваше питання чогось не вистачає?

я не розумію вашу відповідь.

8

Re: Динамічні масиви

Опис завдання і проблеми у вас є. А код де?

9

Re: Динамічні масиви

koala написав:

Опис завдання і проблеми у вас є. А код де?

от блін..

program fs;

const
  q1 = 8; q2 = 9;

type
  m1 = array[1..q1] of integer;
  m2 = array[1..q2] of integer;
  m3 = array[1..q1 + q2] of integer;

var
  i, j, k: byte;
  p: integer;
  fil, rez: text;
  n1: m1;  
  n2: m2;
  n3: m3;

begin
  assign(fil, 'masiv.txt');
  reset(fil);
  for p := 1 to q1 do
    read(fil, n1[p]);
  for p := 1 to q2 do  
    read(fil, n2[p]);
  close(fil);
  writeln('Масив чисел:');
  writeln('M1(n1):');
  for p := 1 to q1 do
    write(n1[p]:4);
  writeln;
  writeln('M2(n2):');
  for p := 1 to q2 do
    write(n2[p]:4);
  writeln;
  i := 1; j := 1; k := 1;
  while (i <= q1) and (j <= q2) do 
  begin
    if n1[i] < n2[j] then begin
      n3[k] := n1[i];
      i := i + 1
    end
    else begin
      n3[k] := n2[j];
      j := j + 1
    end;
    k := k + 1;
  end;
  
  while i <= q1 do 
  begin
    n3[k] := n1[i];
    i := i + 1;
    k := k + 1
  end;
  
  while j <= q2 do 
  begin
    n3[k] := n1[j];
    j := i + 1;
    k := k + 1
  end;
  
  writeln;
  writeln('M3(n3):');
  for i := 1 to q1 + q2 do
    write(n3[i]:4);
  
  assign(rez, 'rezult.txt');
  rewrite(rez);
  write(rez, 'Масив чисел M3(n3):');
  for p := 1 to (q1 + q2) do 
  write(rez,n3[p]:4);
  readln; 
end.

10

Re: Динамічні масиви

Рядок 60. Нічого не наплутали?
Ну і алгоритм у вас для злиття сортованих масивів, для несортованих він безглуздий.

11

Re: Динамічні масиви

koala написав:

Рядок 60. Нічого не наплутали?
Ну і алгоритм у вас для злиття сортованих масивів, для несортованих він безглуздий.

ось спробував почистити, але тепер видає помилку

program fs;

const
  q1 = 8; q2 = 9;

type
  m1 = array[1..q1] of integer;
  m2 = array[1..q2] of integer;
  m3 = array[1..q1 + q2] of integer;

var
  i, j, k: byte;
  p: integer;
  fil, rez: text;
  n1: m1;  
  n2: m2;
  n3: m3;

begin
  assign(fil, 'masiv.txt');
  reset(fil);
  for p := 1 to 8 do
    read(fil, n1[p]);
  for p := 1 to 9 do  
    read(fil, n2[p]);
  close(fil);
  writeln('Масив чисел:');
  writeln('M1(n1):');
  for p := 1 to 8 do
    write(n1[p]:4);
  writeln;
  writeln('M2(n2):');
  for p := 1 to 9 do
    write(n2[p]:4);
  writeln;
  
  i := 1; j := 1; k := 1;
  for p:=1 to 8 do 
  begin
    n3[k] := n1[i]; 
    k := k + 1;
    i := i + 1;
  end; 
  for p:=1 to 9 do  
  begin
    n3[k] := n2[j];
    k := k + 1;
    j := j + 1;
  end;
  
  writeln;
  writeln('M3(n3):');
  for i := 1 to q1 + q2 do
    write(n3[k]:4);
  
  assign(rez, 'rezult.txt');
  rewrite(rez);
  write(rez, 'Масив чисел M3(n3):');
  for p := 1 to (q1 + q2) do 
  write(rez,n3[p]:4);
  readln; 
end.
Post's attachments

8jgcf.png 50.57 kb, 274 downloads since 2014-05-04 

12

Re: Динамічні масиви

Вибачте, а ви в рядок 54 дивилися, як вам написало?

Подякували: Torbins1

13

Re: Динамічні масиви

koala написав:

Вибачте, а ви в рядок 54 дивилися, як вам написало?

ну а що в ній не так, дивився і не один раз, програма пише що індекс вийшов за межі границь масиву для того щоб зчитати дані, але як зробити щоб він зчитав їх звідки потрібно?

14

Re: Динамічні масиви

рядок 53, не підглядайте
for i := 1 to q1 + q2 do

рядок 54:

  write(n3[k]:4);

Чому дорівнює k в цьому місці коду?

Подякували: Torbins1