Nội dung của Bài 9: Làm việc với dãy số dưới đây chúng ta sẽ cùng tìm hiểu về khái niệm mảng một chiều; cách khai báo mảng, nhập, in, truy cập các phần tử của mảng; thuật toán tìm số lớn nhất, số nhỏ nhất của một dãy số;... Mời các em cùng theo dõi bài học để tìm hiểu nội dung chi tiết.
Dữ liệu kiểu mảng:
Là dãy hữu hạn các phần tử có cùng kiểu dữ liệu, được sắp xếp thứ tự bằng cách gán cho mỗi phần tử một chỉ số.
Hình 1. Minh họa dữ liệu kiểu mảng
Trong đó:
Biến mảng:
Hình 2. Minh họa biến mảng và giá trị của biến mảng
Cách khai báo mảng trong Pascal như sau:
Tên mảng: array [ < Chỉ số đầu > .. < Chỉ số cuối > ] of < Kiểu dữ liệu >;
Trong đó:
Ví dụ 1: Khai báo mảng sau:
Hình 3. Mảng Tuoi
var Tuoi: array[1..40] of integer;
Trong đó:
Lưu ý:
Kích thước của mảng phải được khai báo bằng một con số cụ thể.
Cú pháp: Tên mảng [ Chỉ số ]
Ví dụ 2: Tuoi[4]=9
Tham chiếu tới phần tử thứ tư của mảng Tuoi
Sử dụng lệnh Read (hoặc Readln) kết hợp với For ... do để nhập giá trị cho mảng.
Các bước nhập giá trị cho mảng:
Ví dụ 3: Thể hiện bằng pascal
Write('Nhap vao so HS: ');
Readln(n);
For i:=1 to n do
Begin
write('Diem cho HS thu ',i, ' : ');
readln(A[i]);
end;
Sử dụng lệnh Write (hoặc Writeln) kết hợp với For ... do để in giá trị các phần tử của mảng.
Các bước in giá trị của mảng:
Ví dụ 4: Thể hiện bằng pascal
Writeln('Điểm của lớp: ');
For i:=1 to n do
Write(A[i]:5);
Ví dụ 5: Tìm những học sinh có điểm Tin đạt loại giỏi
For t := 1 to 40 do if DiemTin[t] > 8.0 then writeln('Loai Gioi');
Sử dụng biến mảng và câu lệnh lặp (thường là For…do) giúp cho việc viết chương trình được ngắn ngọn và dễ dàng hơn.
Ví dụ 6: Viết chương trình nhập N số nguyên từ bàn phím và in ra màn hình số nhỏ nhất và số lớn nhất. N cũng được nhập từ bàn phím.
Ý tưởng: Trước hết ta khai báo biến N để nhập số các số nguyên sẽ được nhập vào. Sau đó khai báo N biến lưu các số được nhập vào như là các phần tử của một biến mảng A. Ngoài ra, cần khai báo một biến i làm biến đếm cho các lệnh lặp và biến Max để lưu số lớn nhất, Min để lưu số nhỏ nhất.
Chương trình mẫu:
program MaxMin;
uses crt;
Var
i, n, Max, Min: integer;
A: array[1..100] of integer;
{Phần thân chương trình sẽ tương tự dưới đây}
Begin
clrscr;
write('Hay nhap do dai cua day so, = ');
readln(n);
writeln('Nhap cac phan tu cua day so: ');
For i:=1 to n do
Begin
write('a[',i,']='); readln(a[i]);
End;
Max:=a[1];
Min:=a[1];
For i:=2 to n do
Begin
if Max
Max:=a[i];
if Min>a[i] then
Min:=a[i]
End;
write('So lon nhat la Max = ',Max);
write('; So nho nhat la Min = ',Min);
readln;
End.
Trong chương trình này, chúng ta hãy lưu ý một số điểm sau: Số tối đa các phần tử của mảng phải được khai báo bằng một số cụ thể (Ở đây là 100).
Sau khi học xong Bài 9: Làm việc với dãy số - Tin học 8, các em cần ghi nhớ:
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 8 Bài 9 cực hay có đáp án và lời giải chi tiết.
Số phần tử trong khai báo dưới đây là bao nhiêu?
Var tuoi : array[12..80] of integer;
Khai báo mảng nào là đúng trong các khai báo sau đây?
Cú pháp khai báo dãy số nào sau đây đúng nhất?
Câu 4- 10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 8 Bài 9để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Bài tập 1 trang 79 SGK Tin học 8
Bài tập 2 trang 79 SGK Tin học 8
Bài tập 3 trang 79 SGK Tin học 8
Bài tập 4 trang 79 SGK Tin học 8
Bài tập 5 trang 79 SGK Tin học 8
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 8 DapAnHay
Số phần tử trong khai báo dưới đây là bao nhiêu?
Var tuoi : array[12..80] of integer;
Khai báo mảng nào là đúng trong các khai báo sau đây?
Cú pháp khai báo dãy số nào sau đây đúng nhất?
Để nhập dữ liệu từ bàn phím cho mảng A có 10 phần tử là số nguyên ta dùng lệnh nào sau đây?
Các cách nhập dữ liệu cho biến mảng sau, cách nhập nào không hợp lệ?
Em hãy chọn phát biểu đúng khi nói về dữ liệu kiểu mảng:
Cách khai báo biến mảng sau đây là đúng?
Cú pháp để truy cập đến giá trị phần tử trong mảng là:
Chọn câu phát biểu đúng về kiểu dữ liệu của mảng?
Để in giá trị phần tử thứ 20 của mảng một chiều A ra màn hình ta viết:
Hãy nêu các lợi ích của việc sử dụng biến mảng trong chương trình.
Các khai báo biến mảng sau đây trong Pascal đúng hay sai:
a) var X: Array[10,13] Of Integer;
b) var X: Array[5..10.5] Of Real;
c) var X: Array[3.4..4.8] Of Integer;
d) var X: Array[10..1] Of Integer;
e) var X: Array[4..10] Of Real;
"Có thể xem biến mảng là một biến được tạo từ nhiều biến có cùng kiểu, nhưng chỉ dưới một tên duy nhất". Phát biểu đó đúng hay sai?
Câu lệnh khai báo mảng sau đây có được máy tính thực hiện không?
var N: integer;
A: array[1..N] of real;
Viết chương trình Pascal sử dụng mảng để nhập từ bàn phím các phần tử của một dãy số. Độ dài của dãy cũng được nhập từ bàn phím.
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Viết ct nhập số N, nhập dãy số nguyên, in dãy số nguyên, tính tổng và in kết quả
Câu trả lời của bạn
...........
Program kthkII;
uses crt;
var i, n, s, N : integer;
A: array[1..100] of integer;
begin
write('Nhap so nguyen N: '); readln(N);
write('Nhap do dai cua day so: '); readln(n);
for i:=1 to n do
begin write('A[',i,']='); readln(A[i]); end;
for i:=1 to n do write('A[',i,']= ', A[i]);
s:=0;
for i:=1 to n do s:=s+A[i];
writeln('Tong cac so la: ', s);
readln;
End.
giải giúp vs m.n
BT1:viết chương trình nhập vào điểm toán, tin, văn của các học sinh. In ra màn hình điểm tb và xếp loại của từng học sinh trong lớp. bt: hsg>=8.0; hsk<8.0 và hsk>=6.5; hstb<6.5 và hstb>=5.0; hs yếu <5.0
BT2: viết chương trình nhập vào dãy số nguyên bất kì từ bàn phím.
a) tính tổng của các dãy số chẵn có trong dãy số.
b) in ra màn hình các số chẵn trên một dòng, số lẽ trên một dòng.
c) in ra màn hình số lớn nhất, nhỏ nhất có trong dãy.
d) in ra màn hình các số nguyên tố.
e) in ra màn hình UCLN của a[1] và a[2]
help me!!! @F.C
Câu trả lời của bạn
BT1
const
nhap='BT1.inp';
xuat='BT1.out';
var
s,toan,tin,van:real;
t:integer;
begin
assign(input,nhap); reset(input);
assign(output,xuat); rewrite(output);
read(toan,tin,van);
s:=(toan+tin+van)/3;
write(s:0:1);
if s<5 then t:=1;
if (s>=5)and (s<6.5) then t:=2;
if (s>=6.5) and (s<8) then t:=3;
if (s>=8) then t:=4; writeln;
if t=1 then write('hsy');
if t=2 then write('hstb');
if t=3 then write('hstb');
if t=4 then write('hsg');
close(input); close(output);
end.
BT2
a)const
nhap='BT2a.inp';
xuat='BT2a.out';
var
s,n,i:longint;
a:array[1..100]of longint;
begin
assign(input,nhap); reset(input);
assign(output,xuat); rewrite(output);
readln(n);
s:=0;
for i:=1 to n do
begin
read(a[i]);
if a[i] mod 2=0 then s:=s+a[i];
end;
write(s);
close(input); close(output);
end.
b)const
nhap='BT2b.inp';
xuat='BT2b.out';
var
n,i,m,t:longint;
a,b,k:array[1..100]of longint;
begin
assign(input,nhap); reset(input);
assign(output,xuat); rewrite(output);
readln(n); t:=1; m:=1;
for i:=1 to n do
begin
read(a[i]);
if a[i] mod 2=0 then begin k[t]:=a[i]; t:=t+1; end;
if a[i] mod 2<>0 then begin b[m]:=a[i]; m:=m+1; end;
end;
for i:=1 to t-1 do
write(k[i],' '); writeln;
for i:=1 to m-1 do
write(b[i],' ');
close(input); close(output);
end.
c)const
nhap='BT2c.inp';
xuat='BT2c.out';
var
i,n,min,max:longint;
a:array[1..100]of longint;
begin
assign(input,nhap); reset(input);
assign(output,xuat); rewrite(output);
readln(n);
for i:=1 to n do
read(a[i]);
min:=a[1]; max:=a[1];
for i:=1 to n do
begin
if a[i]<min then min:=a[i];
if a[i]>max then max:=a[i];
end;
writeln(min); writeln(max);
close(input); close(output);
end.
Câu d và câu e mk sẽ gửi sau nha !
Viết chương trình nhập vào mảng số nguyên n phần tử (n được nhập từ bàn phím)
a. In ra màn hình tổng và tích của các phần tử chẳn
b. In ra màn hình tổng và tích của các phần tử lẻ
c. Sắp xếp mảng theo thứ tự tăng dần
d. Sắp xếp mảng theo thứ tự giảm dần
GIẢI NHANH GIÙM MIK NHE CẦN GẤP
Câu trả lời của bạn
Bạn thử xem cách mình làm đc ko?
___________
uses crt;
var A:array[1..1000] of integer;
n,i,tc,tl,z,j,e,tic,til,dem,d,dc,dl:integer;
begin
clrscr;
Write('Nhap n: '); readln(n);
for i:=1 to n do
begin
Write('Nhap phan tu thu ',i,' :'); readln(A[i]);
end;
i:=1;
tc:=0;
tl:=0;
for d:=1 to n do if (A[d] mod 2=0) then dc:=dc+1 else dl:=dl+1;
if (dc<>0) then tic:=1 else tic:=0;
if (dl<>0) then til:=1 else til:=0;
for i:=1 to n do if (A[i] mod 2=0) then
begin
tc:=tc+A[i];
tic:=tic*A[i];
end
else
begin
tl:=tl+A[i];
til:=til*A[i];
end;
Writeln('Tong cac phan tu chan la: ' ,tc);
Writeln('Tich cac phan tu chan la: ' ,tic);
Writeln('Tong cac phan tu le la: ' ,tl);
Writeln('Tich cac phan tu le la: ' ,til);
for e:=1 to (n-1) do
for j:=e+1 to n do
if A[e]>A[j] Then
begin
z:=A[e]; A[e]:=A[j]; A[j]:=z;
end;
Writeln('Day sau khi duoc sap xep tang dan la: ');
for dem:=1 to n do Write(A[dem],' '); writeln;
writeln('Day sau khi duoc sap xep giam dan la: ');
for dem:=n downto 1 do write(A[dem],' ');
readln;
end.
Viết chương trình nhập vào mảng A với n phần tử. Cho biết mảng có bao nhiêu số chẵn và tính tổng các số chẵn đó.
GIÚP MÌNH VỚI
Câu trả lời của bạn
Bạn thử xem đúng ko nha.
______________
uses crt;
var n,i,scs,tong:integer;
A:array[1..100] of integer;
f:text;
begin
clrscr;
Write('Nhap N: '); readln(n);
for i:=1 to n do
begin
Write('A[',i,']: '); readln(A[i]);
if (a[i] mod 2=0) then
begin
scs:=scs+1;
tong:=tong+A[i];
end;
end;
Writeln('Day tren co ',scs, ' phan tu chan.');
Writeln('Tong so phan tu chan co trong day la: ',tong);
readln;
end.
AI BIẾT CÂU NÀY GIÚP MIK VS ......CẦN GẤP
Câu trả lời của bạn
Program tính_chia;
Uses crt;
Var i, n, s, a: integer;
Begin
Write('Nhap so n: '); readln(n);
s:=1;
For i:=1 to n do s:=s*i;
a:=0;
For i:=1 to n do a:=a+i;
Writeln('Ket qua phep tinh chia bang: ', s/a :10:2);
readln;
End.
viết chương trình nhập 10 số. Tìm và in ra các số âm.
Câu trả lời của bạn
program tim_so_am;
uses crt;
var i : integer;
a : array [1..100] of real;
begin
clrscr;
writeln('10 so do la: ');
for i:=1 to 10 do begin
write('So thu ',i); readln(a[i]);
for i:= 1 to 10 do if a[i]<0 then write('Cac so am là: ',a[i]:5:2);
readln
end.
Viết chương trình nhập vào 1 mảng A số nguyên (10 phần tử), sau đó thực hiện các yêu cầu sau:
a) Tìm những số chẵn xuất hiện trong A
2 8 6 -4
b) Tìm số nhỏ nhất(min) có trong mảng A
c) Tính tổng các số chẵn có trong mảng A
S=12
VD : A[1]=7; A[2]=2; A[3]=1; A[4]=8; A[5]=5; A[6]=3; A[7]=11; A[8]=6; A[9]=-4; A[10]=-9.
d) Tìm trên mảng A những số chia hết cho 3.
Câu trả lời của bạn
chương trình có chút nhược điểm, bye - bận ^^!
Viết chương trình nhập vào 1 mảng gồm 5 số nguyên và thực hiện:
(các số được nhập từ bàn phím)
a) In giá trị của mảng ra màn hình trên cùng 1 dòng
b) In các phân tử có giá trị lẻ
c) Sắp xếp mảng theo chiều tăng dần
Câu trả lời của bạn
uses crt;
var a:array[1..5] of integer;
i, j, t, dem : integer;
begin
clrscr;
writeln('nhap mang gom 5 so :');
for i:=1 to 5 do
begin
write('a[',i,']=');readln(a[i]);
end;
writeln('mang vua nhap la:');
for i:=1 to 5 do write(a[i]:3);
writeln;
dem:=0;
for i:=1 to 5 do
if a[i] mod 2 <>0 then
begin
dem:=dem+1;
writeln(a[i],' la phan tu le');
end;
if dem=0 then writeln('trong mang khong co phan tu le');
for i:=1 to 4 do
for j:=i+1 to 5 do
if a[i]>a[j] then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
writeln('mang da duoc sap xep theo chieu tang dan la:');
for i:=1 to 5 do write(a[i]:3);
readln;
end.
Viết chương trình sử dụng biến mạng để nhập từ bàn phím các phần tử của một dãy số . Độ dài của dãy số cũng được nhập từ bàn phím
Câu trả lời của bạn
program nhap;
uses crt;
var n,i:integer;
a:array[1..100] of integer;
begin
clrscr;
write('nhap do dai cua day so:');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
readln;
end.
em hãy viết chương trình nhập vào 20 số nguyên và đưa ra màn hình các số chia hết cho 3 theo thứ tự tăng dần
Câu trả lời của bạn
program bai1;
var a:array[1..100] of longint;
i,n:longint;
begin
repeat
write('N= ');
readln(n);
until n>0;
for i:=1 to n do
begin
write('[',i,']= ');
readln(a[i]);
end;
for i:=1to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
z:=a[i];
a[i]:=a[j];
a[j]:=z;
end;
for i:=1 to n do
if a[i] mod 3=0 then write(a[i],' ');
readln
end.
viết phương trình in ra màn hình các ước nguyên dương của N+1.
Câu trả lời của bạn
program bai1;
var n,s:longint;
begin
write('N= ');
readln(n);
for i:=1 to n+1 do
if n+1 mod i=0 then write(i,' ');
readln
end.
Viết phương trình tính tổng các số lẻ từ 1 đến N với N là một số bất kì (N\(\ge\)0) được nhập vào từ bàn phím.
Câu trả lời của bạn
Program tong_so_le;
Uses crt;
Var
S,N,I:Integer;
Begin
Clrscr;
Write('Nhap N ');Readln(N);
S:=0;
For I:=1 to N do
If (I mod 2<>0) then
S:=S+I;
Writeln('Tong cac so le la ',S);
Readln;
End.
Viết phương trình tính tổng các số chẵn từ 1 đến N với N là một số bất kì (N\(\ge\)0) được nhập vào từ bàn phím.
Câu trả lời của bạn
Program tong_so_chan;
Uses crt;
Var
S,N,I:Integer;
Begin
Clrscr;
Write('Nhap N ');Readln(N);
S:=0;
For I:=1 to N do
If (I mod 2=0) then
S:=S+I;
Writeln('Tong cac so chan la ',S);
Readln;
End.
1/ Viết chương trình nhận biết số n bất kì nhập vào từ bàn phím có phải là số nguyên tố hay không.
2/ S= 1+5+9+....+m. Viết chương trình tìm n để S nhỏ nhất lớn lớn m.
Câu trả lời của bạn
2)
uses crt;
var n,m,s,i:longint;
begin
clrscr;
Write('m='); readln(m);
s:=1; m:=0;
repeat
begin
s:=s+n;
n:=n+4;
end;
until s>m;
Writeln('vay voi n=',n,'thi s dat gtnn la',s);
readln;
end.
Sorry, S = 1+5+9+...+n, không phải m
Viết chương trình sử dụng biến mảng đếm số phần tử chẵn (lẽ) trong dãy n số được nhập từ bàn phím
Câu trả lời của bạn
program dem_chan_le;
uses crt;
var n,i,demchan,demle:word;
a:array[1..100] of longint;
begin
clrscr;
write('nhap n:');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
demchan:=0;
demle:=0;
for i:=1 to n do
begin
if a[i] mod 2=0 then demchan:=demchan+1
else demle:=demle+1;
end;
if demchan=0 then writeln('khong co phan tu chan trong day)
else writeln('so phan tu chan trong day la:',demchan);
if demle=0 then writeln('khong co phan tu le trong day')
else writeln('so phan tu le trong day la:',demle);
readln;
end.
Câu trả lời của bạn
Var z:array[1..1000] of real;
tbc : real; n,i : longint;
Begin
Readln(n);
For i:=1 to n do begin writeln('tbc',i,'='),
readln(z[i]);
tbc:=tbc + z[i];
End, writeln(tbc/n:8:2);
End.
Bạn chạy thử xem được chưa nhé!
Viết chương trình nhập vào 1 dãy n số nguyên
IN mảng rồi nhập ra màn hình
TÍNH tổng các phần tử của mảng
Dếm các p /tử lẻ
Tính tb cộng các số chẵn
Tính maxbin của dãy số
Tìm tất cả các kết quả ra màn hình
Câu trả lời của bạn
câu tính maxmin nhé bạn..<3
program timmaxmin;
var i,n,max,min:integer;
a:array [1..100] of integer;
begin
write('nhap do dai cua day so N=');readln(N);
writelln('nhap cac phan tu cua day so:');
for i:1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
max:=a[1] ; min a[1];
for i :2 to n do
begin
if max <a[i] then max :=a[i];
if min >a[i] then min :=a[i];
end;
writeln('so lon nhat la:',max);
writeln('so nho nhat la:',min);
readln
end.
Bài: viết câu lệnh:
A) Khai báo dãy số lưu điểm trung bình của 50 học sinh lớp 8A sau đó xuất ra màn hình.
B) khai báo dãy số lưu chiều cao của 50 học sinh lớp 8B sau đó xuất ra màn hình.
Các bạn giúp mình bài này nhé.Cảm ơn các bạn!
Câu trả lời của bạn
a)
program Diem_trung_binh;
uses crt;
var i, n: integer;
giatriTB: real;
A: array[1..100] of real;
begin
clrscr;
write('Nhap so hoc sinh lop 8A: ');
readln(n);
writeln('Nhap diem cua moi ban:');
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
giatriTB:=giatriTB+a[i]
end;
giatriTB:=giatriTB/n;
writeln('Diem trung binh cua 50 hoc sinh lop 8A la: ', giatriTB:3:2);
readln
end.
BÀI TẬP:
- Viết chương trình nhập vào giá trị nguyên cho các phần tử của mảng A gồm N phần tử. Sắp xếp giá trị của các phần tử trong mảng theo thứ tự tăng dần.
- Ví dụ:
+ A [1] = 8
+ A [2] = 2
+ A [3] = 9
+ A [4] = 6
- Sau khi sắp xếp:
+ A [1] = 2
+ A [2] = 6
+ A [3] = 8
+A [4] = 9
Giúp mình với !!!!
Câu trả lời của bạn
tam la j
oki mà thấy điêu vồn
sai rooif ban lam nhu củ cải vậy min bạn ko cho biến sao dc gà vl :)
mình làm trên free pascal nhé bạn
Uses crt;
Var tam,n,i,b,c:integer;
a ARRAY [1..100] of integer;
Begin
CLRSCR;
Writeln('Moi nhap do dai cua mang'); Readln(n);
For i:=1 to n do
Begin
Writeln('a[',i,']');
Readln(a[i]);
End;
tam:=a[i];
Min:=a[1];
For i:=1 to n do
For c:=i+1 to n do
If a[c]<a[i] then
Begin
tam:=a[i];
a[i]:=a[c];
a[c]:=tam;
End;
For i:=1 to n do
Writeln(a[i]);
Readln;
End.
bạn kiểm tra lại xem còn sót biến nào ko bổ sung nhé :)
Viết chương trình rút gon phân số a/b với a,b là hai số nhập từ bàn phím
Câu trả lời của bạn
uses crt;
var e,f,i,a,b,c,d: byte;
begin
clrscr;
write('Tu so = '); readln(e);
write('Mau so = '); readln(f);
a:=e;
b:=f;
writeln('Phan so ban dau: ',e,'/',f);
while E <> F do
if E > F then E:=E-F
else F:=F-E;
If e <> 1 then
begin
a:=a div e;
b:=b div e;
write('Phan so toi gian: ',a,'/',b);
end
else write('Phan so da toi gian, ',a,'/',b);
readln
end.
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *