K
Khách

Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.

20 tháng 11 2016

Viết chương trình mảng 1 chiều với n số nguyên và bài tập mẫu

Đầu tiên chúng ta cần tìm hiểu về lý thuyếtmảng 1 chiều là gì? Mảng một chiều là một dãy hữu hạn các phần tử có cùng dữ liệu khi khai báo và cá phần tử này có chung một tên nhưng khác nhau bởi các chỉ số phân biệt vị trí trong mảng. Các phần tử trong mảng có thể chứa cùng một giá trị nhưng khác nhau về chỉ số. Ví dụ: A[i] = 10, A[j] = 10 chúng giống nhau về giá trị là chứa một số nguyên dương bằng 10 nhưng khác nhau về chỉ số khi i khácj. Để mô tả mảng 1 chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của nó.

Khai báo mảng 1 chiều


Có 2 cách để chúng ta khai báo mảng 1 chiều như sau:

- Cách 1 khai báo trực tiếp:

var A: array[-10..20] of Real;

- Cách 2 khai báo gián tiếp:

Type Mang1C = array[1..20] of Integer;
Var A:Mang1C;

 

Tuy có 2 cách nhưng các bạn nên sử dụng cách thứ 2 vì khi viết thủ tục hoặc sử dụng hàm sẽ ngắn gọn hơn là cách 1.

Cách nhập – xuất mảng 1 chiều

Từ ví dụ dưới đây các bạn sẽ biết được cách nhập xuất mảng 1 chiều có cùng dữ liệu.

Ví dụ: Hãy nhập vào một mảng số nguyên và xuất chúng ra màn hình.

Program Vidu;
Uses crt;
Type Mang1C = array[1..10] of Integer; {khai báo tên mảng – cách 2}
Var A:Mang1C; {Đặt tên mảng là A}
i:integer;
Begin
clrscr;
Writeln('Nhap gia tri cho mang A');
For i:=1 to 10 do
Begin
Write('A[',i,'] = ');
Readln(A[i]); { đọc vào giá trị cho A thứ i}
End;
Write('Danh sach cac phan tu trong mang A: ');
For i:=1 to 10 do
Write(A[i]:5);
Readln;
End.

Lưu ý: khi nhập và xuất kết quả ra màn hình các bạn cần bắt đầu với chỉ số i từ đầu danh sách mà bạn khai báo nếu như bạn khai báo Array[1..10] mà For i:=0 to N-1 do sẽ bị lỗi ngay lập tức. Mặc dù chương trình vẫn chạy nhưng kết quả xuất ra là sai nhé.

Một số bài tập về mảng 1 chiều

Trong phần này chúng ta cùng làm một số bài tập mẫu về mảng 1 chiều. Và mình cũng viết chương trình để đáp ứng lại yêu cầu bài tập từ bạn Trương Minh Trung với bài toán: viết chương trình nhập vào mảng 1 chiều gồm n phần tử kiểu nguyên sau đó làm các thủ tục sau:

1.in ra màn hình danh sách các số chẵn

2.in ra màn hình danh sách các số lẽ

3.in ra màn hình danh sách các số 1->10

Để giải quyết bài toán chúng ta cần nhập và xuất ra mảng 1 chiều chứa n phần tử kiểu số nguyên. Sau đó gọi lần lượt các thủ tục để kiểm tra phần tử A[i] có trong mảng tùy thuộc vào yêu cầu của đề. Sử dụng mod chia lấy dư để xác định số chẵn hoặc lẽ và so sánh <= 10 để có danh sách các số từ 1 -> 10.

Đây là chương trình của bạn

Program BTMang1C;
Uses crt;
Const Max = 100;
Type Arr100=array[1..Max] of integer; {Khai báo mảng Arr100, có tối đa 100 phần tử}
Var N:integer;
A:Arr100;
{//Thu tuc nhap mang 1c}
Procedure NhapMang1C(Var A:Arr100;Var N:integer);
Var i:integer;
Begin
Write('Nhap chieu dai cua mang: ');
Readln(N);
For i:=1 to N do
Begin
Write('Nhap gt phan tu thu a[',i,']=');
Readln(A[i]);
End;

 

 

 

End;
{//Thu tuc xuat mang 1C}
Procedure XuatMang1C(Var A:Arr100; Var N:integer);
Var i:integer;
Begin
For i:= 1 to N do
Write(A[i]:5);
Writeln;
End;
{//Thu tuc tim so chan}
Procedure SoChan(A:Arr100;N:integer);
Var i: integer;
Begin
For i:= 1 to N do
begin
If(A[i] mod 2 = 0) then
Write(A[i]:5);
end;
End;
{//Thu tuc tim so le}
Procedure SoLe(A:Arr100;N:integer);
Var i:integer;
Begin
For i:=1 to N do
begin
If(A[i] mod 2 = 1) then
Write(A[i]:5);
end;
End;
{//Thu tuc in ra so nho <=10}
Procedure NhoHon10(A:Arr100;N:integer);
Var i:integer;
Begin
For i:=1 to N do
begin
If (1 <= A[i]) and (A[i] <= 10) then
Write(A[i]:5);
end;
End;
{//Phan than chuong trinh}
Begin

Clrscr;
NhapMang1C(A,N);
XuatMang1C(A,N);
Write('Danh sach so Chan: ');
SoChan(A,N);
Writeln;
Write('Danh sach so Le: ');
SoLe(A,N);
Writeln;
Write('Danh sach cac so tu 1 -> 10: ');
NhoHon10(A,N);
Readln;
End.




Một số bài tập thêm:

1. Bài toán:

a/Đếm số lần xuất hiện của giá trị X trong mảng A.

b/ Đếm số lần xuất hiện của các phần tử trong mảng.

Ví dụ cho mảng A có các phần tử là: 10 8 8 6 1 3 1 2 1. Giá trị X:=1

a/ số lần xuất hiện của X => 3 lần

b/ 10 => 1 lần

8 => 2 lần

6 => 1 lần

1 => 3 lần

3 => 1 lần

2 => 1 lần

Như vậy đầu tiên chúng ta cần xây dựng hàm đếm số lần X xuất hiện và trả về giá trị, nếu như không có X trong mảng thì trả về giá trị = 0. Đối với câu B ta sử dụng thêm thủ tục gọi lại hàm đếm phần tử xuất hiện và in ra màn hình là xong. Như vậy chúng ta xây dựng thủ tục DemPTX và SoLanXH như sau:

Function DemPTX(Var A:Arr100; N, X:integer):Integer;
Var i,dem:integer;
Begin
dem:= 0;
For i:=1 to N do
if(A[i] = X) then
dem:=dem+1;
DemPTX:=dem;
End;
Procedure SolanXH(A:Arr100; N:integer);
Var i :integer;
Begin
For i:=1 to N do
Writeln(A[i],’==> ‘,DemPTX(A,N,A[i]));
End;

Đồng thời bổ sung vào thân chương trình

Write('Nhap vao so X can dem lan xuat hien');
Readln(X);
Writeln('So lan xua hien',DemPTX(A,N,X));
Writeln('So lan xuat hien cua cac phan tu');
SolanXH(A,N);

Mặc dù chúng ta đã xây dựng thành công và có thể chạy chúng nhưng khi in tất cả các phần tử nó sẽ bị lặp lại kết quả. Để khắc phục trường hợp này bạn cần làm thêm 1 bước đó là kiểm tra xem A[i] đã được in ra trước đó hay chưa. Nếu như đã in ra rồi thì không in nữa. Cái này nâng cao để các bạn suy nghĩ thêm nhé.

2/ Tính tổng các số trong mảng A

Khá đơn giản, các bạn chỉ cần tạo hàm tính tổng sau đó dùng vòng lặp từ phần tử đầu tiên đến phần tử cuối cùng và cộng dồn chúng vào là ok.

Function TinhTong(A:Arr100; N:integer):integer;
Var i,S: integer;
Begin
S:=0;
For i:=1 to N do
S:=S+A[i];
TinhTong:=S;
 
21 tháng 11 2016

??!

uses crt;

var a:array[1..100]of integer;

i,n,t1,t2,t3:integer;

begin

clrscr;

readln(n);

for i:=1 to n do readln(a[i]);

t1:=0;

t2:=0;

t3:=0;

for i:=1 to n do 

begin

if a[i] mod 2=0 then t1:=t1+a[i]

else t2:=t2+a[i];

if (a[i] mod 2=0) and (a[i] mod 3=0) then t3:=t3+a[i];

end;

writeln(t1);

writeln(t2);

writeln(t3);

readln;

end.

14 tháng 4 2022

Khi bn nhắn mik bt lm r

hihi

a)

uses crt;

var a:array[1..20] of integer;

i,dem,t:integer;

begin

clrscr;

for i:=1 to 20 do

begin

write('A[',i,']='); readln(a[i]);

end;

writeln('Cac phan tu chia het cho 3:');

for i:=1 to 20 do

if a[i] mod 3=0 then write(a[i]:4);

writeln;

dem:=0;

t:=0;

for i:=1 to 20 do

if a[i]>0 then

begin

dem:=dem+1;

t:=t+a[i];

end;

writeln('Trung binh cong cac phan tu nguyen duong la: ',t/dem:4:2);

readln;

end.

b)

uses crt;

var a:array[1..30] of integer;

i,dem,t:integer;

begin

clrscr;

for i:=1 to 30 do

begin

write('A[',i,']='); readln(a[i]);

end;

dem:=0;

t:=0;

for i:=1 to 30 do

if a[i] mod 5=0 then

begin

dem:=dem+1;

t:=t+a[i];

end;

writeln('Trung binh cong cac phan tu chia het cho 5 la: ',t/dem:4:2);

readln;

end.

c)

uses crt;

var a:array[1..200]of integer;

i,n,max,min:integer;

begin

clrscr;

repeat

write('Nhap n='); readln(n);

until (0<n) and (n<201);

for i:=1 to n do

begin

write('A[',i,']='); readln(a[i]);

end;

max:=a[1];

min:=a[1];

for i:=1 to n do

begin

if max<a[i] then max:=a[i];

if min>a[i] then min:=a[i];

end;

writeln('Phan tu lon nhat: ',max);

writeln('Phan tu nho nhat la: ',min);

readln;

end.

10 tháng 4 2019

Lời giải :

Đề chưa cho kiểu dữ liệu nên mình sẽ làm mảng là thuộc kiểu dữ liệu số nguyên và mình sẽ làm gộp trong 1 chương trình luôn nhé !

Program hotrotinhoc ;

var a: array[1..10] of real ;

i,n : integer ;

begin

write('Nhap cac phan tu cua mang');

{cau a};

for i:= 1 to 10 do

begin

write('a[',i,']='); readln(a[i]);

end;

{cau b};

write('Cac phan tu le la :');

for i:= 1 to 10 do

if a[i] mod 2 = 1 then write(a[i]:2);

{cau c};

writeln('Cac phan tu chan la:');

for i:= 1 to 10 do

if a[i] mod 2=0 then write(a[i]:2);

{cau d};

writeln('Cac phan tu co gia tri bang 5 la :');

for i:= 1 to 10 do

if a[i] = 5 then write(a[i]);

{cau e};

writeln('Cac phan tu chia het cho 3 la :');

for i:= 1 to 10 do

if a[i] mod 3= 0 then write(a[i]:2);

readln

end.

18 tháng 6 2020

Từ Hoàng Bảo Nguyên cái này là cái form lúc trước mình thực hành nên cop vô thôi, lần ý làm là có cô hướng dẫn á!

#ngocha14092k7

18 tháng 6 2020

mà dãy số gồm 10 phần tử sao bạn ghi n số đề cho rồi mà

tks bạn

10 tháng 12 2017

help me

SUMARR - Bài tập mảng cơ bản Dữ liệu vào: standard input Dữ liệu ra: standard output Giới hạn thời gian: 1.0 giây Giới hạn bộ nhớ: 512 megabyte Đăng bởi: yhuynh Sau kì nghỉ Tết, thầy Hải trở lại trường lớp dạy thuật toán và cấu trúc dữ liệu. Năm nay thầy Hải chào đón học sinh bằng một bài tập về mảng cơ bản. Thầy Hải cho bạn 2 mảng A và B (mỗi mảng đều có N phần tử) và yêu cầu...
Đọc tiếp
SUMARR - Bài tập mảng cơ bản Dữ liệu vào: standard input Dữ liệu ra: standard output Giới hạn thời gian: 1.0 giây Giới hạn bộ nhớ: 512 megabyte Đăng bởi: yhuynh

Sau kì nghỉ Tết, thầy Hải trở lại trường lớp dạy thuật toán và cấu trúc dữ liệu. Năm nay thầy Hải chào đón học sinh bằng một bài tập về mảng cơ bản.

Thầy Hải cho bạn 2 mảng A và B (mỗi mảng đều có N phần tử) và yêu cầu bạn in ra một mảng mới Cgồm N phần tử trong đó phần tử thứ i có giá trị: C[i] = A[i] + B[i] ( 1 <= i <= N ).

Input:

- Dòng đầu tiên là số N
- Dòng thứ 2 gồm N phần tử của mảng A
- Dòng thứ 3 gồm N phần tử của mảng B

Output:

- Gồm 1 dòng là N phần tử của mảng C

Ví dụ

Input:

5 1 2 3 4 5 4 5 3 2 10

Output:

5 7 6 6 15

Giới hạn:

1 <= N <= 100000
1 <= A[i] <= 100000
1 <= B[i] <= 100000

0

1: nhập vào một mảng A gồm N số nguyên

write('Nhap n='); readln(n);

for i:=1 to n do

begin

write('A[',i,']='); readln(a[i]);

end;

2: in ra màn hình số đầu tiên số thứ hai ...số thứ n của dãy

for i:=2 to n do

write(a[i]:4);

3: sắp xếp theo thứ tự tăng dần hoặc giảm dần in ra dãy số đã sắp xếp

*Tăng dần:

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;

for i:=1 to n do

write(a[i]:4);

*Giảm dần:

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;

for i:=1 to n do

write(a[i]:4);

4: Tìm max ,min

max:=a[1];

min:=a[1];

for i:=1 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);

5: Đếm xem mảng có bao nhiêu số chẵn, số lẻ

dem:=0;

dem1:=0;

for i:=1 to n do

begin

if a[i] mod 2=0 then inc(dem)

else inc(dem1);

end;

writeln('So luong so chan la: ',dem);

writeln('So luong so le la: ',dem1);

uses crt;
var a:array[1..100]of integer;
i,n,k,max,min,t,tam,j,dem:integer;
begin
clrscr;
{----------------------------------cau-a--------------------------------}
write('nhap n='); readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
write('nhap k='); readln(k);
{----------------------------------cau-b--------------------------------}
max:=a[1];
for i:=1 to n do
if max<a[i] then max:=a[i];
writeln('gia tri lon nhat cua mang la: ',max);
writeln('vi tri cua no trong day la: ');
for i:=1 to n do
if max=a[i] then write(i:4);
{----------------------------------cau-c--------------------------------}
writeln;
min:=a[1];
for i:=1 to n do
if min>a[i] then min:=a[i];
writeln('gia tri nho nhat cua mang la: ',min);
writeln('vi tri cua no trong day la: ');
for i:=1 to n do
if min=a[i] then write(i:4);
{----------------------------------cau-d--------------------------------}
writeln;
t:=0;
for i:=1 to n do
if i mod 2=0 then t:=t+sqr(a[i]);
writeln('tong binh phuong cac phan tu o vi tri chan la: ',t);
{----------------------------------cau-e--------------------------------}
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('mang duoc xep theo thu tu tang dan la: ');
for i:=1 to n do
write(a[i]:4);
{----------------------------------cau-f--------------------------------}
writeln;
dem:=0;
for i:=1 to n do
if a[i]=k then inc(dem);
writeln('trong mang co ',dem,' gia tri bang ',k);
readln;
end.

uses crt;

var a:array[2..1000000]of longint;

n,i,k,t,dem:longint;

begin

clrscr;

repeat

write('Nhap n='); readln(n);

until (1<n) and (n<=1000000);

for i:=2 to n do

begin

write('A[',i,']='); readln(a[i]);

end;

write('Nhap k='); readln(k);

t:=0;

dem:=0;

for i:=2 to n do

if a[i] mod k=0 then

begin

t:=t+a[i];

inc(dem);

end;

writeln('Tong cac so chia het cho ',k,' la: ',t);

writeln('So phan tu chia het cho ',k,' la: ',dem);

readln;

end.