Tin học Thuật toán

Phan Văn Thế Quân

Trùm vi phạm
Thành viên
14 Tháng mười một 2018
121
49
21
21
Nghệ An
Trung học phổ thông tân kỳ 3
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

bài 1: nhập vào dãy A gồm n phần tử từ a1....an. hãy viết thuật toán thực hiện các công việc sau
a, tìm max của dãy và đưa ra chỉ số của max
b, tìm min và đưa ra chỉ số của min
c, in ra màn hình các số chẵn trong dãy và chỉ số của nó
d, in ra màn hình các số lẻ trong dãy và chỉ số của nó

bài 2: kiểm tra số hoàn hảo

(giúp mình với nhé)
 

ĐứcNhật!

Học sinh tiêu biểu
Thành viên
17 Tháng mười một 2017
1,525
3,788
529
Quảng Nam
Trung Học Phổ Thông Chuyên Nguyễn Bỉnh Khiêm
Bài 2:
Mã:
Program So_hoan_hao;
Uses crt;
Var i,m,S,n: longINT;
Begin
clrscr;
Writeln('Nhap n: '); readln(n);
S:=1;
m:= n div 2;
For i:= 2 to m do
If (n mod i = 0) then S:=S+i;
If S=n then Write('So ban vua nhap la so hoan hao')
Else write('So ban vua nhap khong phai la so hoan hao');
Readln
End.
 

Tiểu Linh Hàn

Học sinh chăm học
Thành viên
15 Tháng hai 2016
614
327
126
Bắc Giang
THCS Trần Hưng Đạo
Em nói qua về ý tưởng nhé, còn anh tự viết code nha :)
Bài 1 thoi :)
a, Tạo biến max có giá trị (khởi tạo) là phần tử đầu tiên và csmax có giá trị là 1 (để lưu chỉ số của phần từ max). Cho chạy qua dãy số lần lượt từ phần tử thứ 2 đến phần tử cuối cùng, nếu phát hiện ra phần tử có giá trị lớn hơn giá trị max hiện tại thì gán giá trị phần tử đó vào cho biến max và cập nhật biến csmax thành chỉ số của phần tử đó. Kết thúc việc chạy này, max là phần tử cần tìm và csmax là chỉ số của phần tử có giá trị max đó
b, Tạo biến min có giá trị (khởi tạo) là phần tử đầu tiên và csmin có giá trị là 1 (để lưu chỉ số của phần tử min). Cho chạy qua dãy số lần lượt từ phần tử thứ 2 đến phần tử cuối cùng, nếu phát hiện ra phần tử có giá trị nhỏ hơn giá trị min hiện tại thì gán giá trị phần tử đó vào cho biến min và cập nhật biến csmin thành chỉ số của phần tử đó. Kết thúc việc chạy này, min là phần tử cần tìm và csmin là chỉ số của phần tử có giá trị min đó
(2 thao tác này đều đòi hỏi chạy vòng lặp có biến đếm :))
c, d, Làm tương tự 2 phần trên thôi anh, tuy nhiên không cần biến lưu chỉ số nữa, thay vào đó mình sẽ dùng điều kiện "số chẵn chia hết cho 2 (hay chia 2 dư 0) còn số lẻ chia 2 dư 1", và cứ tìm ra 1 số thỏa mãn đk thì ghi luôn số đó ra cùng với chỉ số của nó :)
 

Phan Văn Thế Quân

Trùm vi phạm
Thành viên
14 Tháng mười một 2018
121
49
21
21
Nghệ An
Trung học phổ thông tân kỳ 3
Bài 2:
Mã:
Program So_hoan_hao;
Uses crt;
Var i,m,S,n: longINT;
Begin
clrscr;
Writeln('Nhap n: '); readln(n);
S:=1;
m:= n div 2;
For i:= 2 to m do
If (n mod i = 0) then S:=S+i;
If S=n then Write('So ban vua nhap la so hoan hao')
Else write('So ban vua nhap khong phai la so hoan hao');
Readln
End.
thanks bạn nhiều nha
 

Phan Văn Thế Quân

Trùm vi phạm
Thành viên
14 Tháng mười một 2018
121
49
21
21
Nghệ An
Trung học phổ thông tân kỳ 3
Em nói qua về ý tưởng nhé, còn anh tự viết code nha :)
Bài 1 thoi :)
a, Tạo biến max có giá trị (khởi tạo) là phần tử đầu tiên và csmax có giá trị là 1 (để lưu chỉ số của phần từ max). Cho chạy qua dãy số lần lượt từ phần tử thứ 2 đến phần tử cuối cùng, nếu phát hiện ra phần tử có giá trị lớn hơn giá trị max hiện tại thì gán giá trị phần tử đó vào cho biến max và cập nhật biến csmax thành chỉ số của phần tử đó. Kết thúc việc chạy này, max là phần tử cần tìm và csmax là chỉ số của phần tử có giá trị max đó
b, Tạo biến min có giá trị (khởi tạo) là phần tử đầu tiên và csmin có giá trị là 1 (để lưu chỉ số của phần tử min). Cho chạy qua dãy số lần lượt từ phần tử thứ 2 đến phần tử cuối cùng, nếu phát hiện ra phần tử có giá trị nhỏ hơn giá trị min hiện tại thì gán giá trị phần tử đó vào cho biến min và cập nhật biến csmin thành chỉ số của phần tử đó. Kết thúc việc chạy này, min là phần tử cần tìm và csmin là chỉ số của phần tử có giá trị min đó
(2 thao tác này đều đòi hỏi chạy vòng lặp có biến đếm :))
c, d, Làm tương tự 2 phần trên thôi anh, tuy nhiên không cần biến lưu chỉ số nữa, thay vào đó mình sẽ dùng điều kiện "số chẵn chia hết cho 2 (hay chia 2 dư 0) còn số lẻ chia 2 dư 1", và cứ tìm ra 1 số thỏa mãn đk thì ghi luôn số đó ra cùng với chỉ số của nó :)
cấp 2 có học phần này luôn à bạn
 

Phan Văn Thế Quân

Trùm vi phạm
Thành viên
14 Tháng mười một 2018
121
49
21
21
Nghệ An
Trung học phổ thông tân kỳ 3
Em nói qua về ý tưởng nhé, còn anh tự viết code nha :)
Bài 1 thoi :)
a, Tạo biến max có giá trị (khởi tạo) là phần tử đầu tiên và csmax có giá trị là 1 (để lưu chỉ số của phần từ max). Cho chạy qua dãy số lần lượt từ phần tử thứ 2 đến phần tử cuối cùng, nếu phát hiện ra phần tử có giá trị lớn hơn giá trị max hiện tại thì gán giá trị phần tử đó vào cho biến max và cập nhật biến csmax thành chỉ số của phần tử đó. Kết thúc việc chạy này, max là phần tử cần tìm và csmax là chỉ số của phần tử có giá trị max đó
b, Tạo biến min có giá trị (khởi tạo) là phần tử đầu tiên và csmin có giá trị là 1 (để lưu chỉ số của phần tử min). Cho chạy qua dãy số lần lượt từ phần tử thứ 2 đến phần tử cuối cùng, nếu phát hiện ra phần tử có giá trị nhỏ hơn giá trị min hiện tại thì gán giá trị phần tử đó vào cho biến min và cập nhật biến csmin thành chỉ số của phần tử đó. Kết thúc việc chạy này, min là phần tử cần tìm và csmin là chỉ số của phần tử có giá trị min đó
(2 thao tác này đều đòi hỏi chạy vòng lặp có biến đếm :))
c, d, Làm tương tự 2 phần trên thôi anh, tuy nhiên không cần biến lưu chỉ số nữa, thay vào đó mình sẽ dùng điều kiện "số chẵn chia hết cho 2 (hay chia 2 dư 0) còn số lẻ chia 2 dư 1", và cứ tìm ra 1 số thỏa mãn đk thì ghi luôn số đó ra cùng với chỉ số của nó :)
nếu được bạ cho mình code tổng quát được ko, vì chưa bao giờ gặp dạng này
 

ĐứcNhật!

Học sinh tiêu biểu
Thành viên
17 Tháng mười một 2017
1,525
3,788
529
Quảng Nam
Trung Học Phổ Thông Chuyên Nguyễn Bỉnh Khiêm
bài 1: nhập vào dãy A gồm n phần tử từ a1....an. hãy viết thuật toán thực hiện các công việc sau
a, tìm max của dãy và đưa ra chỉ số của max
b, tìm min và đưa ra chỉ số của min
c, in ra màn hình các số chẵn trong dãy và chỉ số của nó
d, in ra màn hình các số lẻ trong dãy và chỉ số của nó

bài 2: kiểm tra số hoàn hảo

(giúp mình với nhé)
a) Cái này mình không chắc
Mã:
Program Tim_max;
Uses crt;
Var i,n,max:longint;
A: array[1..5000] of integer;
Begin
clrscr;
Write('Nhap so n: '); readln(n);
Max:=0;
For i:= 1 to N do
Begin
Write('Nhap phan tu thu ',i,' :'); readln(A[i]);
End;
If A[i] > Max then max :=i;
Write('So lon nhat la: ',max);
Readln
End.
b) Tương tự câu a
 

Phan Văn Thế Quân

Trùm vi phạm
Thành viên
14 Tháng mười một 2018
121
49
21
21
Nghệ An
Trung học phổ thông tân kỳ 3
a) Cái này mình không chắc
Mã:
Program Tim_max;
Uses crt;
Var i,n,max:longint;
A: array[1..5000] of integer;
Begin
clrscr;
Write('Nhap so n: '); readln(n);
Max:=0;
For i:= 1 to N do
Begin
Write('Nhap phan tu thu ',i,' :'); readln(A[i]);
End;
If A[i] > Max then max :=i;
Write('So lon nhat la: ',max);
Readln
End.
b) Tương tự câu a
ok mình sẽ thử thanks bạn
 
  • Like
Reactions: ĐứcNhật!
Top Bottom