Trang chủ Tin Học Lớp 8 Cho 2 mảng số nguyên A và B lần lượt...

Cho 2 mảng số nguyên A và B lần lượt có N và M số. Các phần tử trong cả 2 mảng A và B được sắp xếp theo thứ tự tăng dần Yêu cầu: Hãy tạo mạng C gồm N+M phần

Câu hỏi :

Cho 2 mảng số nguyên A và B lần lượt có N và M số. Các phần tử trong cả 2 mảng A và B được sắp xếp theo thứ tự tăng dần Yêu cầu: Hãy tạo mạng C gồm N+M phần tử từ tất cả các phần tử của A và B sao cho các phần tử của C cũng có thứ tự tăng dần Dữ liệu vào trong file: tronmang.inp - dòng đầu chứa 2 số N M (0<N, M< 50000) N dòng sau mỗi dòng chứa một số nguyên của mảng A M dòng tiếp theo chứa một số nguyên ứng với các phần tử của mảng B vd tronmnang.inp tronmang.out 3 2 1 1 2 2 2 5 4 2 5 4 mọi người hoàn thiện giúp em chương trình mà em viết: var a,b,c:array[0..10000] of longint; i,j,k,n,m: longint; begin readln(n,m); for i:=1 to n do read(a[i]); for j:=1 to m do read(b[i]); while (i<=n) and (j<=m) do begin if a[i]<b[i] then begin inc(k); c[k]:=a[i]; inc(i); end else begin inc(k); c[k]:=b[j]; inc (j); end while (i=n) or (j=m) do ..... giúp em với cách làm: là khi i=n hoặc j=m tức là khi i chạy đến cuối vd ở trên là i chạy đến 5 mà j mới 2 thì mik hốt luôn cả cho 5 2 4 vào mảng c luôn ạ ai viết ra câu lện giùm em với hoàn thiện chương trình ạ

Lời giải 1 :

uses crt;
var n,m:longint;
    a,b,c:array[0..100000] of longint;
    i,j,k,p:longint;
begin
    clrscr;
    readln(n,m);
    for i:=1 to n do read(a[i]);
    for i:=1 to m do read(b[i]);
    i:=1;j:=1;
    while (i <= n) or (j <= m) do
        begin
            if i > n then
                begin
                    for p:=j to m do
                        c[k + p - j + 1]:=b[p];
                    break;
                end;
            if j > m then
                begin
                    for p:=i to n do
                        c[k + p - i + 1]:=a[p];
                    break;
                end;
            if a[i] > b[j] then
                begin
                    inc(k);
                    c[k]:=b[j];
                    inc(j);
                end
            else
                begin
                    inc(k);
                    c[k]:=a[i];
                    inc(i);
                end;
        end;
    for i:=1 to n + m do writeln(c[i]);
readln;
end.

Thảo luận

-- cái đó nằm cuối mà
-- cái đó thì viết theo cách nào được? :(( mình không nghĩ ra :v nên mình viết theo kiểu nếu i> n thì hốt phần còn lại của mảng b vào nếu j>m thì hốt phần còn lại của mảng a vào :v
-- Câu của mk nx bạn ơi
-- bạn ơi
-- cái bài bờm á bạn giải thích cách giải hộ mik với
-- https://hoidap247.com/cau-hoi/2603660#answer_4694170
-- https://hoidap247.com/cau-hoi/2647392
-- làm giúp mik bài này

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe nhé!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247