Bài tập  /  Bài đang cần trả lời

Viết chương trình nhập vào mảng n phần tử (n<100)

Pascal
Viết chương trình nhập vào mảng n phần tử(n<100)
a) In ra các phần tử là số nguyên tố trong mảng
b) Tính tổng các số nguyên tố trong mảng
c) In ra số nguyên tố nhỏ nhất trong mảng
d) In ra các số lẻ liên tiếp nhau nhỏ hơn n
1 trả lời
Hỏi chi tiết
91
2
0
Thịnh Nguyễn
17/01 21:08:36
+5đ tặng
program ArrayOperations;

const
  MAX_SIZE = 100;

var
  arr: array[1..MAX_SIZE] of integer;
  n, i, sum, minPrime, consecutiveOddCount, consecutiveOddStart: integer;
  isPrime: boolean;

procedure InputArray(var arr: array of integer; n: integer);
var
  i: integer;
begin
  writeln('Nhap vao ', n, ' phan tu cua mang:');
  for i := 1 to n do
  begin
    write('arr[', i, '] = ');
    readln(arr[i]);
  end;
end;

procedure OutputArray(arr: array of integer; n: integer);
var
  i: integer;
begin
  writeln('Cac phan tu cua mang la:');
  for i := 1 to n do
    write(arr[i], ' ');
  writeln;
end;

function IsPrime(num: integer): boolean;
var
  i: integer;
begin
  IsPrime := num > 1;
  for i := 2 to trunc(sqrt(num)) do
    if num mod i = 0 then
    begin
      IsPrime := False;
      Exit;
    end;
end;

begin
  write('Nhap vao so luong phan tu cua mang (n < 100): ');
  readln(n);

  if (n <= 0) or (n >= 100) then
  begin
    writeln('So luong phan tu khong hop le.');
    Exit;
  end;

  InputArray(arr, n);

  // a) In ra cac phan tu la so nguyen to trong mang
  writeln('a) Cac phan tu la so nguyen to trong mang:');
  for i := 1 to n do
    if IsPrime(arr[i]) then
      write(arr[i], ' ');
  writeln;

  // b) Tinh tong cac so nguyen to trong mang
  sum := 0;
  for i := 1 to n do
    if IsPrime(arr[i]) then
      sum := sum + arr[i];
  writeln('b) Tong cac so nguyen to trong mang la: ', sum);

  // c) In ra so nguyen to nho nhat trong mang
  minPrime := MaxInt;
  for i := 1 to n do
    if IsPrime(arr[i]) and (arr[i] < minPrime) then
      minPrime := arr[i];
  if minPrime = MaxInt then
    writeln('c) Khong co so nguyen to trong mang.')
  else
    writeln('c) So nguyen to nho nhat trong mang la: ', minPrime);

  // d) In ra cac so le lien tiep nhau nho hon n
  writeln('d) Cac so le lien tiep nhau nho hon n:');
  consecutiveOddCount := 0;
  consecutiveOddStart := 0;
  for i := 1 to n do
  begin
    if arr[i] mod 2 = 1 then
    begin
      if c then
        consecutiveOddStart := i;
      Inc(consecutiveOddCount);
    end
    else
    begin
      if consecutiveOddCount > 1 then
      begin
        for i := consecutiveOddStart to consecutiveOddStart + consecutiveOddCount - 1 do
          write(arr[i], ' ');
        writeln;
      end;
      consecutiveOddCount := 0;
    end;
  end;
  if consecutiveOddCount > 1 then
  begin
    for i := consecutiveOddStart to consecutiveOddStart + consecutiveOddCount - 1 do
      write(arr[i], ' ');
    writeln;
  end;
end.
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Bài tập liên quan
Bài tập Tin học Lớp 8 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Gia sư Lazi Gia sư