1

Тема: Створити масив через процедуру

Ситуація: створив масив через процедуру. Але виникає така проблема(скрін).
Якщо в type прописую integer - працює. Але мені потрібно прописувати текст в консолі;//
[img]5.jpg[/img]


program sproba1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
    n = 6;

type
    miniarr = array[1..n] of string;

var
    a, b, d, f, g, l: miniarr;
                {Íàçâà â³ää³ëó}
procedure name_v (k:integer; var arr: miniarr);
    var i: byte;
    begin
          write ('VvediTb nazvy viddily: ');
        for i := 1 to k do
          read (arr[i]);
    end;
              {Íàçâà ï³äðîçä³ëó}
procedure name_p (k:integer; var arr: miniarr);
    var i: byte;
    begin
        write ('VvediTb nazvy pidrozdily: ');
        for i := 1 to k do
            read (arr[i]);
    end;
                {Íîìåð òåëåôîíó}
procedure number_t (k:integer; var arr: miniarr);
    var i: byte;
    begin
        write ('VvediTb nomer telefony: ');
        for i := 1 to k do
            read (arr[i]);
    end;
                {Prizvywe}
procedure surname (k:integer; var arr: miniarr);
    var i: byte;
    begin
        write ('VvediTb prizvywe: ');
        for i := 1 to k do
            read (arr[i]);
    end;
                {Im'ya}
procedure name (k:integer; var arr: miniarr);
    var i: byte;
    begin
        write ('VvediTb name: ');
        for i := 1 to k do
            read (arr[i]);
    end;
                {po_bat'kovi}
procedure middle_name (k:integer; var arr: miniarr);
    var i: byte;
    begin
        write ('VvediTb po-baTbkovi: ');
        for i := 1 to k do
            read (arr[i]);
    end;
                    {Âèâ³ä} 
procedure arr_out (k:integer; var arr: miniarr);
    var i: byte;
    begin
        write ('Vivod mas: ');
        for i := 1 to k do
            write (arr[i]:4);
        writeln;
    end;

begin

    name_v (n, a); {}
    arr_out (n, a);
    writeln;
    name_p (n, b);   {}
    arr_out (n, b);
    writeln;
    number_t (n, d);   {}
    arr_out (n, d);
    writeln;
    surname (n, f);     {}
    arr_out (n, f);
    Writeln;
    name (n, g);           {}
    arr_out (n, g);
    writeln;
    middle_name (n, l);      {}
    arr_out (n, l);

Readln;
Readln;
end.

2

Re: Створити масив через процедуру

Картинка не прикріпилася (там після завантаження ще одну кнопку треба натиснути). Але краще текстом писати.

3

Re: Створити масив через процедуру

Я чомусь не можу вставити фотку.
Я ввожу перший масив, а дальше текст з writeln виводиться на екран
Приблизно виглядає так:
VvediTb nazvy viddili: {Я ввожу} Yuri Danya і тд...
Vivod mas: {Виводить масив} Yuri Danya
{А дальше воно тупо виводить текст з writeln як показано нише}
VvediTb nazvy pidrozdily: Vivod mas:

VvediTb nomer telefony: Vivod mas:

VvediTb prizvywe: Vivod mas:

VvediTb name: Vivod mas:

VvediTb po-baTbkovi: Vivod mas:

4

Re: Створити масив через процедуру

Тоді ясно. Read - читає рівно стільки, скільки сказано (скажімо, для integer - тільки цифри), а решту символів лишає в буфері введення, і наступний read читає їх (якщо вони там є). ReadLn - читає до символу кінця рядка (Enter). Замініть усі read на readln, і буде вам щастя.

Подякували: Dmy, qaytarma2

5

Re: Створити масив через процедуру

Будь ласка, підкажіть як переробити нижчезгаданий код так, щоб спочатку ввести всі масиви, а потім одночасно їх вивести.
{Введення}
VvediTb nazvy viddily: bla bla bla
VvediTb nazvy viddily1: bla1 bla2 bla3
{Вивід}
VvediTb nazvy viddily: bla bla bla
VvediTb nazvy viddily1: bla1 bla2 bla3


program kod;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
    n = 6;
 
type
    miniarr = array[1..n] of string;
    miniarr1 = array[1..n] of string;
    miniarr2 = array [1..n] of string;
    miniarr3 = array [1..n] of string;
    miniarr4 = array [1..n] of string;
    miniarr5 = array [1..n] of string;

var
    a: miniarr;
    b: miniarr1;
    d: miniarr2;
    f: miniarr3;
    g: miniarr4;
    l: miniarr5;
                {Nazva viddily + vyvid}
procedure name_v (k:integer; var arr: miniarr);
    var i: byte;
    begin
          writeln ('VvediTb nazvy viddily: ');
        for i := 1 to k do
          readln (arr[i]);
    end;
procedure arr_out (k:integer; var arr: miniarr);
    var i: byte;
    begin
        writeln ('Nazvy viddilliv: ');
        for i := 1 to k do
            writeln (arr[i]:4);
        writeln;
    end;
              {Nazva pidrozdily + vyvid}
procedure name_p (k:integer; var arr: miniarr1);
    var i: byte;
    begin
        writeln ('VvediTb nazvy pidrozdily: ');
        for i := 1 to k do
            readln (arr[i]);
    end;
procedure arr_out1 (k:integer; var arr: miniarr1);
    var i: byte;
    begin
        writeln ('Nazvy pidrozdiliv: ');
        for i := 1 to k do
            writeln (arr[i]:4);
        writeln;
    end;
                {Nomer telefony + vyvid}
procedure number_t (k:integer; var arr: miniarr2);
    var i: byte;
    begin
        writeln ('VvediTb nomer telefony: ');
        for i := 1 to k do
            readln (arr[i]);
    end;
procedure arr_out2 (k:integer; var arr: miniarr2);
    var i: byte;
    begin
        writeln ('Nomery telefoniv: ');
        for i := 1 to k do
            writeln (arr[i]:4);
        writeln;
    end;
                {Prizvywe + vyvid}
procedure surname (k:integer; var arr: miniarr3);
    var i: byte;
    begin
        writeln ('VvediTb prizvywe: ');
        for i := 1 to k do
            readln (arr[i]);
    end;
procedure arr_out3 (k:integer; var arr: miniarr3);
    var i: byte;
    begin
        writeln ('Prizvywe: ');
        for i := 1 to k do
            writeln (arr[i]:4);
        writeln;
    end;
                {Imya + vyvid}
procedure name (k:integer; var arr: miniarr4);
    var i: byte;
    begin
        writeln ('VvediTb name: ');
        for i := 1 to k do
            readln (arr[i]);
    end;
procedure arr_out4 (k:integer; var arr: miniarr4);
    var i: byte;
    begin
        writeln ('Imya: ');
        for i := 1 to k do
            writeln (arr[i]:4);
        writeln;
    end;
                {Po-Batbkovi + vyvid}
procedure middle_name (k:integer; var arr: miniarr5);
    var i: byte;
    begin
        writeln ('VvediTb po-baTbkovi: ');
        for i := 1 to k do
            readln (arr[i]);
    end;
procedure arr_out5 (k:integer; var arr: miniarr5);
    var i: byte;
    begin
        writeln ('Po-batbkovi: ');
        for i := 1 to k do
            writeln (arr[i]:4);
        writeln;
    end;


begin

    name_v (n, a);
    arr_out (n, a);

    name_p (n, b);
    arr_out1 (n, b);

    number_t (n, d);
    arr_out2 (n, d);

    surname (n, f);
    arr_out3 (n, f);

    name (n, g);
    arr_out4 (n, g);

    middle_name (n, l);
    arr_out5 (n, l);

Readln;
Readln;
end.

6

Re: Створити масив через процедуру

Будь ласка, не розмножуйте теми. Це ваш код? Ви розумієте, що роблять функції arr_out[число] і звідки вони викликаються?