Bài tập Pascal kiểm tra phần tử mảng

Viết chương trình nhập vào một mảng A gồm N số nguyên và nhập thêm vào một số nguyên X. Hãy kiểm tra xem phần tử X có trong mảng A hay không?:xinhqua:
các thớt trả lời thắc mắc e để trong dấu {{{{ }}}} với
Uses Crt;
Type Mang = ARRAY[1..50] Of Integer;
Var A:Mang;
N,i,x:Integer;

Function TimKiem(x, N: Integer; A:Mang):Integer;
Var i:Integer;
Begin
I:=1;
While (I <= N) and (X<>A) do I:=I+1; {{{{tại sao lại phải làm như bước này, tại sao lại lấy i đi so sánh với N}}}}
If I <= N Then Timkiem:=I Else Timkiem:=0;
End;

Begin
{Nhập mảng}
Write(‘Nhap N=’); Readln(N);
For i:=1 To N Do
Begin
Write(‘A[‘,i,’]=’); Readln(A);
End;
Write(‘Nhap X=’); Readln(x);
{Kết quả tìm kiếm}
If TimKiem(X,N,A)<>0 Then
Writeln(‘Vi tri cua X trong mang la:’, TimKiem(X,N,A))
Else Writeln(‘X khong co trong mang.’);
Readln;
End.
 
  • Chủ đề
    nhờ các thớt trả lời thắc mắc với
  • taplamhacker

    ♥ Thanh Trâm ♥
    Reply: nhờ các thớt trả lời thắc mắc

    để xem x có phải là 1 phần tử trong mảng k
    vd: 1 tới 40
    nhập x = 41
    thì lấy 41 so sánh lần lượt với 1 2 3 4 ... 40
    nếu = thì thuộc mảng, k bằng thì k có trong mảng
     

    linhtinhsd99

    Quang Linh
    Reply: nhờ các thớt trả lời thắc mắc

    ớ nhưng mà tại sao lấy i=1 và so sánh i <= N. tui vẫn chưa rõ chỗ này lắm, làm ơn giải thích rõ ra dc k?
     

    linhtinhsd99

    Quang Linh
    Reply: nhờ các thớt trả lời thắc mắc

    để xem x có phải là 1 phần tử trong mảng k
    vd: 1 tới 40
    nhập x = 41
    thì lấy 41 so sánh lần lượt với 1 2 3 4 ... 40
    nếu = thì thuộc mảng, k bằng thì k có trong mảng

    ớ nhưng mà tại sao lấy i=1 và so sánh i <= N. tui vẫn chưa rõ chỗ này lắm, làm ơn giải thích rõ ra dc k?
     

    taplamhacker

    ♥ Thanh Trâm ♥
    Reply: nhờ các thớt trả lời thắc mắc


    ớ nhưng mà tại sao lấy i=1 và so sánh i <= N. tui vẫn chưa rõ chỗ này lắm, làm ơn giải thích rõ ra dc k?
    vì nếu i >n thì i k còn thuộc mảng nữa
    mình chỉ so sánh những phần tử thuộc mảng thôi
     

    quanltv

    Sư phụ của ADMIN
    While (I <= N) and (X<>A) do I:=I+1;
    là loại vòng lặp không xác định số lần lặp. Nó vẫn chạy mãi khi mà điều kiện vẫn còn đúng, ĐK ở đây là ĐK ghép (i<=n và x khác ai), i<=n để xét các chỉ số phần tử từ 1 -> n, x khác ai để nếu gặp được phần tử = x thì cũng dừng luôn.

    Cái này tương đương với cấu trúc sau:

    for i:=1 to n do
    if x=a then break; {break có tác dụng phá vớ vòng lặp hiện thời}

    if i<=n then timkiem:= i-1 else timkiem:=0; {nhớ rằng phải là i-1 vì nó luôn được + thêm 1 trước khi kết thúc vòng lặp}
     

    Bài viết mới nhất

    Thống kê

    Chủ đề
    101,869
    Bài viết
    469,231
    Thành viên
    340,261
    Thành viên mới nhất
    thecontinental

    Bài viết được quan tâm nhiều

    Top