Tin học [Pascal] Hàm và thủ tục

Toji Takeshi

Cựu Trưởng BP Quản lí |Cựu Mod Cộng đồng
Thành viên
TV BQT tích cực 2017
13 Tháng chín 2017
1,044
2,726
414
23
Đắk Lắk
THPT Nguyễn Trãi
[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.

Câu 1: a/ Viết chương trình sinh ngẫu nhiên n số nguyên có giá trị trong khoảng -1000 đến 1000, n được nhập từ bàn phím. Tổ chức thành thủ tục.
b/ Viết chương trình kiểm tra trong dãy số có bao nhiêu số chính phương. Tổ chức thành hàm.
c/ Thay thế tất cả những số chính phương bằng số đó bình phương. Tổ chức thành hàm.
d/ Tổ chức các thủ tục và hàm trên thành chương trình hoàn chỉnh.
Câu 2: a/ Viết chương trình sinh ngẫu nhiên n số nguyên có giá trị trong khoảng -1000 đến 1000, n được nhập từ bàn phím. Tổ chức thành thủ tục.
b/ Tính tổng các số nguyên tố trong dãy số. Tổ chức thành hàm.
c/ Thay thế tất cả những phần tử có giá trị bằng k trong dãy số ( k thuộc (-1000; 1000)) bởi h. k, h được nhập từ bàn phím. Tổ chức thành thủ tục.
Cảm ơn!
@trà nguyễn hữu nghĩa , @ka1412
 
Last edited:

Shmily Karry's

Cựu Phụ trách box Sinh & box TGQT
Thành viên
TV BQT tích cực 2017
6 Tháng tư 2017
2,965
4,314
644
Bình Dương
Câu 2: a/ Viết chương trình sinh ngẫu nhiên n số nguyên có giá trị trong khoảng -1000 đến 1000, n được nhập từ bàn phím. Tổ chức thành thủ tục.
b/ Tính tổng các số nguyên tố trong dãy số. Tổ chức thành hàm.
c/ Thay thế tất cả những phần tử có giá trị bằng k trong dãy số ( k thuộc (-1000; 1000)) bởi h. k, h được nhập từ bàn phím. Tổ chức thành thủ tục.
Cảm ơn!
@trà nguyễn hữu nghĩa , @ka1412
a,
Procedure nsongaunhien(st:string);
Var N: interger;
Begin
Write('Nhập N: '); Readln(N);
For i:=1 to n do randomize; write(random(1000)-random(1000));
End;
Function tinhtong(st:string):integer;
var p:integer;
Begin
For i:=1 to n do p:=p+a;
tinhtong:=p;
End;
Function thaythe(st:string)string;
Var k,h: integer;
Begin
Write('Nhập k'); Readln(k);
Write('Nhập h'); Readln(h);
For i:=1 to n do if a=k then k:=h;
End;
 

ka1412

Học sinh chăm học
Thành viên
24 Tháng mười một 2017
874
730
121
Hà Nội
CNN | Life
1. (câu a giống bài của @Shmily Karry's ạ)
d)
Mã:
uses crt;
var n,i,f:integer;
a:array[1..1000] of integer;
Procedure nsongaunhien(n:integer);
begin
    randomize;
 For i := 1 to n do a[i]:=(random(1000)-random(1000));
End;
function chinhphuong:word;
var x:integer;
begin
    for i:=1 to n do
    if a[i]<0 then continue else
    begin
x := 0;
x := trunc(sqrt(a[i]));
if sqr(x)=a[i] then begin inc(f); a[i]:=x;end;
end;
chinhphuong := f;
end;
begin
clrscr;
write('Nhap n:');readln(n);
nsongaunhien(n);
writeln(chinhphuong);
for i:=1 to n do write(a[i]:5);
readln
end.

A thử xem thế nào, có lỗi gì bảo e

E sửa lại bài của @Shmily Karry's :
Mã:
Procedure nsongaunhien(st:string);
Var N: interger;
Begin
Write('Nhập N: '); Readln(N);
For i:=1 to n do randomize; a[i]:=(random(1000)-random(1000));
End;
Function tinhtong:integer;
var p,j:integer;k:boolean;
Begin
for i:=1 to n do
begin
if a[i]<=1 then continue;
if a[i]>=2 then
begin
k:=true;
For j:=2 to trunc(sqrt(a[i])) do if a[i] mod j =0 then k:=false;
if k=true then p:=p+a[i];
end;
tinhtong:=p;
End;
Function thaythe(st:string)string;
Var k,h: integer;
Begin
Write('Nhập k'); Readln(k);
Write('Nhập h'); Readln(h);
For i:=1 to n do if a=k then k:=h;
End;
Có gì sai a bảo e nhé
 
Last edited by a moderator:

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,619
744
21
Phú Yên
Trường THPT Lương Văn Chánh
1. (câu a giống bài của @Shmily Karry's ạ)
d)
Mã:
uses crt;
var n,i,f:integer;
a:array[1..1000] of integer;
Procedure nsongaunhien(n:integer);
begin
    randomize;
 For i := 1 to n do a[i]:=(random(1000)-random(1000));
End;
function chinhphuong:word;
var x:integer;
begin
    for i:=1 to n do
    if a[i]<0 then continue else
    begin
x := 0;
x := trunc(sqrt(a[i]));
if sqr(x)=a[i] then begin inc(f); a[i]:=x;end;
end;
chinhphuong := f;
end;
begin
clrscr;
write('Nhap n:');readln(n);
nsongaunhien(n);
writeln(chinhphuong);
for i:=1 to n do write(a[i]:5);
readln
end.

A thử xem thế nào, có lỗi gì bảo e

E sửa lại bài của @Shmily Karry's :
Mã:
Procedure nsongaunhien(st:string);
Var N: interger;
Begin
Write('Nhập N: '); Readln(N);
For i:=1 to n do randomize; a[i]:=(random(1000)-random(1000));
End;
Function tinhtong:integer;
var p,j:integer;k:boolean;
Begin
for i:=1 to n do
begin
if a[i]<=1 then continue;
if a[i]>=2 then
begin
k:=true;
For j:=2 to trunc(sqrt(a[i])) do if a[i] mod j =0 then k:=false;
if k=true then p:=p+a[i];
end;
tinhtong:=p;
End;
Function thaythe(st:string)string;
Var k,h: integer;
Begin
Write('Nhập k'); Readln(k);
Write('Nhập h'); Readln(h);
For i:=1 to n do if a=k then k:=h;
End;
Có gì sai a bảo e nhé

Code lộn xộn quá, mình không hiểu bạn đang làm câu nào nữa :)
 

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,619
744
21
Phú Yên
Trường THPT Lương Văn Chánh
1. (câu a giống bài của @Shmily Karry's ạ)
d)
Mã:
uses crt;
var n,i,f:integer;
a:array[1..1000] of integer;
Procedure nsongaunhien(n:integer);
begin
    randomize;
 For i := 1 to n do a[i]:=(random(1000)-random(1000));
End;
function chinhphuong:word;
var x:integer;
begin
    for i:=1 to n do
    if a[i]<0 then continue else
    begin
x := 0;
x := trunc(sqrt(a[i]));
if sqr(x)=a[i] then begin inc(f); a[i]:=x;end;
end;
chinhphuong := f;
end;
begin
clrscr;
write('Nhap n:');readln(n);
nsongaunhien(n);
writeln(chinhphuong);
for i:=1 to n do write(a[i]:5);
readln
end.

A thử xem thế nào, có lỗi gì bảo e

E sửa lại bài của @Shmily Karry's :
Mã:
Procedure nsongaunhien(st:string);
Var N: interger;
Begin
Write('Nhập N: '); Readln(N);
For i:=1 to n do randomize; a[i]:=(random(1000)-random(1000));
End;
Function tinhtong:integer;
var p,j:integer;k:boolean;
Begin
for i:=1 to n do
begin
if a[i]<=1 then continue;
if a[i]>=2 then
begin
k:=true;
For j:=2 to trunc(sqrt(a[i])) do if a[i] mod j =0 then k:=false;
if k=true then p:=p+a[i];
end;
tinhtong:=p;
End;
Function thaythe(st:string)string;
Var k,h: integer;
Begin
Write('Nhập k'); Readln(k);
Write('Nhập h'); Readln(h);
For i:=1 to n do if a=k then k:=h;
End;
Có gì sai a bảo e nhé
Code tốt quá rồi, góp ý chỗ này
Mã:
Function tinhtong:integer;
var p,j:integer;k:boolean;
Begin
for i:=1 to n do
begin
if a[i]<=1 then continue;
if a[i]>=2 then
begin
k:=true;
For j:=2 to trunc(sqrt(a[i])) do if a[i] mod j =0 then  begin k:=false; break ;end; {chỗ này thêm cái break vào chạy cho nhanh}
if k=true then p:=p+a[i];
end;
tinhtong:=p;
End;
 
  • Like
Reactions: ka1412

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,619
744
21
Phú Yên
Trường THPT Lương Văn Chánh
Câu 1
Mã:
function chinhphuong:word;
var x:integer;
begin
    for i:=1 to n do
    if a[i]<0 then continue else
    begin
x := 0;
x := trunc(sqrt(a[i]));
if sqr(x)=a[i] then begin inc(f); a[i]:=x;end;
end;
chinhphuong := f;
end;
Không cần phải dùng đến cái biến x đâu nhỉ :)
Mã:
function chinhphuong:word;
begin
    f := 0;
    for i:=1 to n do
    if a[i] >= 0 then
if a[i] = trunc(sqrt(a[i])) then begin inc(f); a[i] := trunc(sqrt(a[i]));end;
chinhphuong := f;
end;
Cũng chẳng hiểu ý nghĩa của cái continue :) giải thích giúp mình cái đó dùng để làm gì vậy
 

ka1412

Học sinh chăm học
Thành viên
24 Tháng mười một 2017
874
730
121
Hà Nội
CNN | Life
Câu 1
Mã:
function chinhphuong:word;
var x:integer;
begin
    for i:=1 to n do
    if a[i]<0 then continue else
    begin
x := 0;
x := trunc(sqrt(a[i]));
if sqr(x)=a[i] then begin inc(f); a[i]:=x;end;
end;
chinhphuong := f;
end;
Không cần phải dùng đến cái biến x đâu nhỉ :)
Mã:
function chinhphuong:word;
begin
    f := 0;
    for i:=1 to n do
    if a[i] >= 0 then
if a[i] = trunc(sqrt(a[i])) then begin inc(f); a[i] := trunc(sqrt(a[i]));end;
chinhphuong := f;
end;
Cũng chẳng hiểu ý nghĩa của cái continue :) giải thích giúp mình cái đó dùng để làm gì vậy
Lúc đầu cho x vào test xong lúc sau quên xóa đi :v còn continue để next vòng lặp ấy mà
 
Top Bottom