Trang chủ Tin Học Lớp 8 Help me mn ơi, còn 5 ngày nx mik thi...

Help me mn ơi, còn 5 ngày nx mik thi hsg tin r mà chx giải đc bài này nx huhuCâu 5: (5 điểm) Cho một dãy số gồm k phần tử. Yêu cầu: Em hãy viết chương trình nh

Câu hỏi :

Help me mn ơi, còn 5 ngày nx mik thi hsg tin r mà chx giải đc bài này nx huhu

image

Lời giải 1 :

Giải thích Mình sẽ cho 3 vòng lặp lồng vào nhau:

+ Vòng lặp bên ngoài(vòng lặp 1): Gán i=1 Điều kiện i<=k(với k là số phần tử mảng h). 

+Vòng bên trong vòng lặp 1(vòng lặp  2):  Điều  kiện h[i] $\neq$ h[j]i = j thì sẽ tăng biến j lên 1 đơn vị. Mục đích của vòng lặp này là tìm các phần tử h[i] và h[j] trùng nhau mà ko bị nhầm lẫn khi vị trí i và j trùng nhau.

+ Nếu j <= k thì thực hiện vòng lặp 3(Có phần tử trùng lặp)

+ Vòng bên trong vòng lặp 1(vòng lặp  3): Chạy từ d=j (điểm tìm thấy trùng nhau) cho đến n. Mục đích vòng lặp này xoá phần tử trùng nhau, rút gọn mảng.

+ Cuối cùng sắp xếp phần tử tăng dần

Code

program portfolio;
uses crt;
var h:array[1..10000] of integer;
k,i,j,d:integer;
BEGIN
clrscr;
Write('Nhap k: '); Readln(k);
For i:=1 to k do Read(h[i]);

{Tim va xoa phan tu trung lap}
i:=1;
While i <= k do{Vong lap 1} 
    begin
    j:=i+1; 
    
    While (h[i] <> h[j]) and (j<=k) do inc(j);{Vong lap 2}
    If j <= k then
        begin
            For d:=j to k - 1 do begin
            h[d]:=h[d+1];{Rut gon mang}
            end;
            k:=k-1;
        end
    else inc(i);
    end;
For i:=1 to k do Write(h[i]:2);
{Sap xep tang dan}
For i:=1 to k do
    For j:=1 to k do
    if h[i] < h [j] then 
        begin
        d:=h[i];
        h[i]:=h[j];
        h[j]:=d;
    end;

Writeln;
For i:=1 to k do Write(h[i]:2);
{portfolio}
Readln;
END.

Thảo luận

-- Thì sau khi xoá phần tử thì xuống dưới mình sắp xếp theo thứ tự tăng dần rồi đó => bạn ghi có đúng 1 vòng à
-- phần yc là + vòng 1 : 1,2,4,3,5 + vòng 2 : 1,2,3,4,5
-- 2 cái khác nhau hoàn toàn =)
-- à hiểu òi
-- đợi xíu
-- Mk sửa rồi nha. Nhưng mà mình vẫn ko hiểu là viết ra 2 lần làm gì?
-- thì cho đúng đề :>
-- nếu thiếu 1 trong 2 thì sẽ bị trừ đ

Lời giải 2 :

k=int(input())
def de(h,n):
    b=[]
    for i in range (n):
        if (not(h[i] in b)):
            b.append(h[i])
    return b
h=de(list(map(int,input().split())),k)
print(*h)
h.sort()
print(*h)

$\color{red}{\text{#Daoanhviet96}}$

image

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