program MIDI;
uses crt;
var i,n :integer; A:array[1..100] of integer; KT: boolean;
begin
clrscr;
write(‘Nhap so n: ‘);readln(n);
For i:=1 to n do
begin
write(‘A[‘,i,’]= ‘);
readln(A[i]);
end;
For i:=2 to n-1 do
if (A[i+1]>A[i]) and (A[i+2]=A[i+1]) then
begin
KT:=false;
break;
end;
if KT=true then write(‘YES’);
if KT=false then write(‘NO’);
readln;
end.
Các bác chạy đoạn chương trình này rồi nhập 1,2,3,4,5,6 vào rồi nó lại sai các bác thấy em sai ở đâu chỉ em với
Đây là bài về dãy số đơn điệu nghĩa là thế này:2>1<3>2
program MIDI; uses crt; var i,n :integer; A:array[1..100] of integer; KT: boolean; begin clrscr; write(‘Nhap so n: ‘);readln(n);
By Charlie
Bạn không nên nhập số bằng mảng nhé. Nên nhập bằng xâu.
uses crt;
var s:string;
i:longint;
function sdd(s:string):boolean;
var i,d:longint;
begin
d:=0;
for i:=2 to length(s)-1 do
if ((s[i-1]<s[i]) and (s[i]>s[i+1])) or ((s[i-1]>s[i]) and (s[i]<s[i+1]))
then d:=d+1;
if d=length(s)-2 then sdd:=true else sdd:=false;
end;
begin
clrscr;
write(‘Nhap so can kiem tra: ‘);readln(s);
if sdd(s)=true then write(‘-> Day la so don dieu’)
else write(‘-> Day khong phai la so don dieu’);
readln;
end.
program MIDI;
uses crt;
var i,n,k :integer; A:array[1..100] of integer; KT: boolean;
begin
clrscr;
write(‘Nhap so n: ‘);readln(n);
For i:=1 to n do
begin
write(‘A[‘,i,’]= ‘);
readln(A[i]);
end;
if a[1]>a[2] then k:=1 else k:=0; kt:=true;
For i:=1 to n-1 do
if ((i mod 2=k)and(a[i]<=a[i+1]))or((i mod 2<>k)and(a[i]>=a[i+1])) then KT:=false;
if KT=true then write(‘YES’);
if KT=false then write(‘NO’);
readln;
end.
Bài này sai ở chỗ:
Dãy đơn điệu là: Vd 1 2 1 2 hoặc 2 1 2 1
Mà bài cũ cũa cậu là chỉ xét TH:2 1 3 2 thôi
Ta thấy là a[1]>a[2] thì là ><><>… ngược lại là <><><>…
Vậy nên mình tính k
k là 1 khi a[1]>a[2], 0 khi ngược lại
k là để xét Vd 1212 thì chạy từ 1 tới n nó thấy 1 mà >2 thì false (1 là ở những VT mod 2=k)