Tin học Bài tập pascal

tydfdg

Học sinh
Thành viên
5 Tháng bảy 2017
109
15
26
23
Đắk Lắk
  • Like
Reactions: bé sunny

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,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
Nhập vào 1 dãy số nguyên N. Viết ct tìm số lớn thứ 2 trong dãy, nếu có nhiều số giống nhau thì in ra vị trí các số đó
Vấn đề chính là tìm được số lớn thứ 2. Tìm được rồi thì sẽ dễ thôi.
Mã:
for i := 2 to N do
          if a[i] > Max1 then
          begin
                    Max2 := Max1;
                    Max1 := a[i];
          end;
 
  • Like
Reactions: tydfdg

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

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,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
gans max2= max1 chi vay ban
Max1 là số lớn nhất còn max2 là số lớn thứ 2.
Theo mình hiểu là thế này nhé: Khi đã có một số lớn nhất (là Max1) mà vẫn còn một số lớn hơn nữa thì số lớn nhất hiện tại là số lớn thứ 2. Cứ thế sẽ tìm được số lớn thứ 2.
 
  • Like
Reactions: bé sunny

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
Bài e làm thử này, a xem có đúng không: @trà nguyễn hữu nghĩa
Mã:
uses crt;
var a:array[1..100] of integer;
n,i,j,m,k,t:integer;
begin
clrscr;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('a[',i,']:');
readln(a[i]);
if i=1 then begin m:=a[1];t:=1;end else if a[i]>m then begin m:=a[i];t:=i;end;
end;
if t=1 then
begin
    j     := a[2];
    for i := 2 to n do if a[i]>j then j:=a[i];
end else
begin
    j := a[1];
    for i:=1 to n do
    if (a[i]>j) and (a[i]<m)  then j:=a[i];
end;
for i := 1 to n do if a[i]=j then inc(k);
writeln('So lon thu nhi la:',j);
if k>1 then
begin
write('Cac vi tri cua so do la:');
for i := 1 to n do if a[i]=j then write(i,#32);
end;
readln
end.
Nếu không thì ta sort cả mảng theo thứ tự từ lớn đến bé, tìm max rồi lấy số sau max là được
 

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
Bài e làm thử này, a xem có đúng không: @trà nguyễn hữu nghĩa
Mã:
uses crt;
var a:array[1..100] of integer;
n,i,j,m,k,t:integer;
begin
clrscr;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('a[',i,']:');
readln(a[i]);
if i=1 then begin m:=a[1];t:=1;end else if a[i]>m then begin m:=a[i];t:=i;end;
end;
if t=1 then
begin
    j     := a[2];
    for i := 2 to n do if a[i]>j then j:=a[i];
end else
begin
    j := a[1];
    for i:=1 to n do
    if (a[i]>j) and (a[i]<m)  then j:=a[i];
end;
for i := 1 to n do if a[i]=j then inc(k);
writeln('So lon thu nhi la:',j);
if k>1 then
begin
write('Cac vi tri cua so do la:');
for i := 1 to n do if a[i]=j then write(i,#32);
end;
readln
end.
Nếu không thì ta sort cả mảng theo thứ tự từ lớn đến bé, tìm max rồi lấy số sau max là được
Mà bài của e vẫn sai :(((. thôi tìm hiệu cho nhanh :)
 

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,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
Bài e làm thử này, a xem có đúng không: @trà nguyễn hữu nghĩa
Mã:
uses crt;
var a:array[1..100] of integer;
n,i,j,m,k,t:integer;
begin
clrscr;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('a[',i,']:');
readln(a[i]);
if i=1 then begin m:=a[1];t:=1;end else if a[i]>m then begin m:=a[i];t:=i;end;
end;
if t=1 then
begin
    j     := a[2];
    for i := 2 to n do if a[i]>j then j:=a[i];
end else
begin
    j := a[1];
    for i:=1 to n do
    if (a[i]>j) and (a[i]<m)  then j:=a[i];
end;
for i := 1 to n do if a[i]=j then inc(k);
writeln('So lon thu nhi la:',j);
if k>1 then
begin
write('Cac vi tri cua so do la:');
for i := 1 to n do if a[i]=j then write(i,#32);
end;
readln
end.
Nếu không thì ta sort cả mảng theo thứ tự từ lớn đến bé, tìm max rồi lấy số sau max là được
Lúc đầu là a nghĩ cái này. Nhưng lại phải sắp xếp lại thì nó sai vị trí ban đầu mất rồi.
Muốn vậy phải tạo thêm một mảng nữa. Nhưng cách này không hay.
 

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
Lúc đầu là a nghĩ cái này. Nhưng lại phải sắp xếp lại thì nó sai vị trí ban đầu mất rồi.
Muốn vậy phải tạo thêm một mảng nữa. Nhưng cách này không hay.
Hiệu có vẻ là dễ nhất. Không thì a áp dụng tổng cx được. Nhưng mà vấn đề là làm thế nào để nhỡ có 2 số max thì có thể loại được 1 số trong phần xét
 

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
Bài của e đây, a check thử xem. E sửa r =)))
Mã:
uses crt;
var a:array[1..100] of integer;
n,i,j,m,k,t:integer;
begin
clrscr;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('a[',i,']:');
readln(a[i]);
if i=1 then begin m:=a[1];t:=1;end else if a[i]>m then begin m:=a[i];t:=i;end;
end;
if t=1 then
begin
    j     := a[2];
    for i := 2 to n do if (a[i]>j) and (a[i]<m) then j:=a[i];
end else
begin
    j := a[1];
    for i:=1 to n do
    if (a[i]>j) and (a[i]<m)  then j:=a[i];
end;
for i := 1 to n do if a[i]=j then inc(k);
writeln('So lon thu nhi la:',j);
if k>1 then
begin
write('Cac vi tri cua so do la:');
for i := 1 to n do if a[i]=j then write(i,#32);
end;
readln
end.
 

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,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
Bài của e đây, a check thử xem. E sửa r =)))
Mã:
uses crt;
var a:array[1..100] of integer;
n,i,j,m,k,t:integer;
begin
clrscr;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('a[',i,']:');
readln(a[i]);
if i=1 then begin m:=a[1];t:=1;end else if a[i]>m then begin m:=a[i];t:=i;end;
end;
if t=1 then
begin
    j     := a[2];
    for i := 2 to n do if (a[i]>j) and (a[i]<m) then j:=a[i];
end else
begin
    j := a[1];
    for i:=1 to n do
    if (a[i]>j) and (a[i]<m)  then j:=a[i];
end;
for i := 1 to n do if a[i]=j then inc(k);
writeln('So lon thu nhi la:',j);
if k>1 then
begin
write('Cac vi tri cua so do la:');
for i := 1 to n do if a[i]=j then write(i,#32);
end;
readln
end.
Xem ra có vẻ hiệu là ổn nhất. chỉ cần xét hiệu nhỏ nhất và số đang xét khác max là được roài :)
Xoay đi xoay lại vẫn là cái này
 
Top Bottom