M
marvelouscp2
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.
Thầy cho mình cái đề là: Nhập dãy số nguyên có giá trị từ 0 đến 10. Tính số lần xuất hiện mỗi số.
Mình có viết một chương trình như sau:
program B4;
uses crt;
var a:array[1..100000000] of integer;
var b:array[1..100000000] of integer;
var n,i,j,z,t,x:integer;
begin
writeln('Nhap so phan tu');
readln(n);
writeln('Nhap ',n,' so nguyen co gia tri tu 1 den 10');
i:=1;
while (i<=n) do
begin
readln(a);
if ((a>=0) and (a<=10)) then
i:=i+1
else
begin
repeat
writeln('Gia tri khong hop le. Moi nhap lai');
readln(a);
until ((a>=0) and (a<=10));
i:=i+1;
end;
end;
t:=1;
b[1]:=a[1];
for i:=2 to n do
if (a=a[1]) then
t:=t+1;
writeln('Gia tri ',a[1],' duoc lap lai ',t,' lan');
z:=1;
for i:=2 to n do
begin
t:=1;
for j:=1 to z do
if (a=b[j]) then break
else
begin
z:=z+1;
b[z]:=a;
for x:=i+1 to n do
begin
if (a=a[x]) then
t:=t+1;
end;
writeln('Gia tri ',a,' duoc lap lai ',t,' lan');
end;
end;
readln;
end.
Mình không hiểu sao cái câu "Gia trị được lặp lại t lần" cuối cùng tự dưng bị lặp lại dù rõ ràng là mình chỉ cho đi từ 2 đến n và cũng chẳng có câu lệnh nào để lặp cả. Mình muốn biết là mình đã sai chỗ nào trong chương trình trên (mình đã thử nhẩm trong đầu rồi đáng lẽ chương trình phải chạy đúng nhưng rốt cuộc lại ra tùm lum)
Mình có viết một chương trình như sau:
program B4;
uses crt;
var a:array[1..100000000] of integer;
var b:array[1..100000000] of integer;
var n,i,j,z,t,x:integer;
begin
writeln('Nhap so phan tu');
readln(n);
writeln('Nhap ',n,' so nguyen co gia tri tu 1 den 10');
i:=1;
while (i<=n) do
begin
readln(a);
if ((a>=0) and (a<=10)) then
i:=i+1
else
begin
repeat
writeln('Gia tri khong hop le. Moi nhap lai');
readln(a);
until ((a>=0) and (a<=10));
i:=i+1;
end;
end;
t:=1;
b[1]:=a[1];
for i:=2 to n do
if (a=a[1]) then
t:=t+1;
writeln('Gia tri ',a[1],' duoc lap lai ',t,' lan');
z:=1;
for i:=2 to n do
begin
t:=1;
for j:=1 to z do
if (a=b[j]) then break
else
begin
z:=z+1;
b[z]:=a;
for x:=i+1 to n do
begin
if (a=a[x]) then
t:=t+1;
end;
writeln('Gia tri ',a,' duoc lap lai ',t,' lan');
end;
end;
readln;
end.
Mình không hiểu sao cái câu "Gia trị được lặp lại t lần" cuối cùng tự dưng bị lặp lại dù rõ ràng là mình chỉ cho đi từ 2 đến n và cũng chẳng có câu lệnh nào để lặp cả. Mình muốn biết là mình đã sai chỗ nào trong chương trình trên (mình đã thử nhẩm trong đầu rồi đáng lẽ chương trình phải chạy đúng nhưng rốt cuộc lại ra tùm lum)