Viết chương trình nhập vào mảng 1 chiều các số nguyên gồm N số(N<300).Tính a.Tổng các số chia hết cho 4 b.TB các số chia hết cho 2 và 5 c.Đếm các số < 0 d.Sắp xếp mảng vừa nhập theo thứ tự tăng dần Giúp mik vs ạ
2 câu trả lời
uses crt;
var i,j,n,t,tam,s,s2,d:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap so ptu:');readln(n);
s:=0;s2:=0;d:=0;t:=0;
for i:=1 to n do
begin
write('A[',i,']=');
readln(a[i]);
if a[i] mod 4=0 then s:=s+a[i];
if(a[i] mod 10=0) then begin s2:=s2+a[i];d:=d+1;end;
if a[i]<0 then t:=t+1;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i] >a[j] then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
writeln('tong cac so chia het cho 4 la:',s);
if d>0 then writeln('TB cac so chia het cho 2 va 5 la:',s/d:4:2)
else writeln('TB cac so chia het cho 2 va 5 la:0');
writeln('so luong cac so be hon 0 la:',t);
write('mang sau khi sap xep la:');
for i:=1 to n do write(a[i],' ');
readln;
end.
a) Các phần tử chia hết cho 4 nghĩa là chia cho 4 dư 0. Nên mình sẽ dùng mod.
Code
Program vidu1;
Uses crt;Var a:array[1..300] of integer;
n,i, s:integer;
BEGIN
clrscr;
Readln(n);
For i:=1 to n do Readln(a[i]);
For i:= 1 to n do if a[i] mod 4 = 0 then s:= s+a[i];
Writeln(s);
Readln;
END.
b) Cũng giống như trên nhưng thêm bước nữa là tính trung bình.
Code
Program vidu2;
Uses crt;Var a:array[1..300] of integer;
n,i, s,d:integer;
BEGIN
clrscr;
Readln(n);
For i:=1 to n do Readln(a[i]);
d:=0;
For i:= 1 to n do if (a[i] mod 2 = 0) and (a[i] mod 5 = 0) then
begin
s:= s+a[i];
d:=d+1;
end;
Writeln('Trung binh cac so chia het cho 2 va 5 trong mang la:');
Writeln(s/d:4:2);
Readln;
END.
c) Mình sẽ so sánh từng phần tử nhỏ hơn ko nếu đúng sẽ cộng 1 vào biến đếm
Code
Program vidu3;
Uses crt;
Var a:array[1..300] of integer;
n,i,d:integer;
BEGIN
clrscr;
Readln(n);
For i:= 1 to n do Readln(a[i]);
For i:= 1 to n do if a[i]<0 then d:=d+1;
Writeln(d);
Readln;
END.
d) Mình sẽ cho chạy 2 vòng lặp với biến đếm i và j sau đó so sánh nếu a[i] < a[j] sẽ đổi chỗ và từ đó mảng sẽ đước sắp xếp theo thứ tự tăng dần.
Code
Program vidu4;
Uses crt;
Var a:array[1..300] of integer;
n,i,d,j:integer;
BEGIN
clrscr;
Readln(n);
For i:= 1 to n do Readln(a[i]);
For i:= 1 to n do
For j := 1 to n do
If a[i] < a[j] then begin d:=a[i]; a[i]:= a[j]; a[j]:=d; end;
write('Mang sau khi sap xep: ');
For i:= 1 to n do Write(a[i],' ');
Readln;
END.