tin học[pascal]

ontinhoc

Học sinh chăm học
Thành viên
27 Tháng hai 2017
26
12
71
21
Sóc Trăng
Nhập:
n=8
43 29 89 38 96 27 37 47
Kết quả:
38 37
ghi chú:
(29+47)/2=38 (38 là trung bình cộng của 2 số 29 và 47)
(27+47)/2=37 ((37 là trung bình cộng của 2 số 27 và 47)

program QUATANG;

uses crt;

var n,i,j,k,dem:word;

tb,t:real;

a:array[1..500] of longint;

f:text;

str:string;

begin

clrscr;

writeln;

assign(f,'D:\QUATANG.INP');

reset(f);

readln(f,n);

for i:=1 to n do read(f,a);

close(f);

writeln('du lieu nhap vao tep QUATANG.INP la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);

assign(f,'D:\QUATANG.OUT');

rewrite(f);

dem:=0; t:=0;

i:=1;

while i<=n do

begin

tb:=a;

j:=1;

if i=j then inc(j);

while a[j]<>a do

begin

k:=j+1;

while a[k]<>a[j] do

begin

if (tb=((a[j]+a[k])/2)) and (a<>t) then

begin

t:=tb;

dem:=dem+1;

end;

inc(k);

if k>n then break;

end;

inc(j);

if j=n then break;

end;

inc(i);

end;

write(f,dem);

close(f);

writeln;

writeln('du lieu ghi ra tep QUATANG.OUT la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);


readln;

end.

chúc bạn học tốt;););)
 

Nguyễn Thánh Tiền

Mr Favoirite 2012
Thành viên
2 Tháng mười 2010
1,931
782
324
Hà Nội
cO VUA
program QUATANG;

uses crt;

var n,i,j,k,dem:word;

tb,t:real;

a:array[1..500] of longint;

f:text;

str:string;

begin

clrscr;

writeln;

assign(f,'D:\QUATANG.INP');

reset(f);

readln(f,n);

for i:=1 to n do read(f,a);

close(f);

writeln('du lieu nhap vao tep QUATANG.INP la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);

assign(f,'D:\QUATANG.OUT');

rewrite(f);

dem:=0; t:=0;

i:=1;

while i<=n do

begin

tb:=a;

j:=1;

if i=j then inc(j);

while a[j]<>a do

begin

k:=j+1;

while a[k]<>a[j] do

begin

if (tb=((a[j]+a[k])/2)) and (a<>t) then

begin

t:=tb;

dem:=dem+1;

end;

inc(k);

if k>n then break;

end;

inc(j);

if j=n then break;

end;

inc(i);

end;

write(f,dem);

close(f);

writeln;

writeln('du lieu ghi ra tep QUATANG.OUT la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);


readln;

end.

chúc bạn học tốt;););)
Anh không hiểu bài này

Em có thể đưa ra thuật toán chứ không nên code
 

yauotsua

Học sinh
Thành viên
13 Tháng mười hai 2015
46
7
44
program QUATANG;

uses crt;

var n,i,j,k,dem:word;

tb,t:real;

a:array[1..500] of longint;

f:text;

str:string;

begin

clrscr;

writeln;

assign(f,'D:\QUATANG.INP');

reset(f);

readln(f,n);

for i:=1 to n do read(f,a);

close(f);

writeln('du lieu nhap vao tep QUATANG.INP la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);

assign(f,'D:\QUATANG.OUT');

rewrite(f);

dem:=0; t:=0;

i:=1;

while i<=n do

begin

tb:=a;

j:=1;

if i=j then inc(j);

while a[j]<>a do

begin

k:=j+1;

while a[k]<>a[j] do

begin

if (tb=((a[j]+a[k])/2)) and (a<>t) then

begin

t:=tb;

dem:=dem+1;

end;

inc(k);

if k>n then break;

end;

inc(j);

if j=n then break;

end;

inc(i);

end;

write(f,dem);

close(f);

writeln;

writeln('du lieu ghi ra tep QUATANG.OUT la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);


readln;

end.

chúc bạn học tốt;););)
chương trình không ổn bạn ơi
 

ontinhoc

Học sinh chăm học
Thành viên
27 Tháng hai 2017
26
12
71
21
Sóc Trăng
Anh không hiểu bài này

Em có thể đưa ra thuật toán chứ không nên code

đây là phần giải thích của em

dem:=0 ;{dùng để đếm số lượng các số thỏa mãn}

t:=0; {biến này dùng để gán vào biến a thỏa mãn để kiểm tra}

i:=1;

while i<=n do {dùng while..do để tăng dần biến i cho đến khi i=n để kiểm tra từng phần tử trong mảng}

begin

tb:=a[ i ]; {vì a[ i ] là số nguyên nên em gán biến tb=a[ i ] đồng thời khai báo tb:real để tiện cho việc tính toán}

j:=1; {gán biến j bắt đầu từ 1 để bắt đầu dò trong mảng}

if i=j then inc(j); {nếu i=j thì trùng phần tử nên sẽ tăng j lên 1 đơn vị nữa}

while a[j]<>a[ i ] do {vì các số nguyên khác nhau từng đôi một nên sẽ dung while a[j]<>a[ i ] do để dò}

begin

k:=j+1;{ bắt đầu dò từ j+1 trở lên }

while a[k]<>a[j] do {cái này giống ở trên}

begin

if (tb=((a[j]+a[k])/2)) and (tb<>t) then {vì tb=a [ i]nên nếu tb là trung bình của 2 số khác thì a[i ] cũng vậy và ở đây dùng tb<>t để tránh trường hợp số a là trung bình của nhiều cặp số khác trong mảng thì không tính a[i ] lần nữa}

begin

t:=tb; {gán t bằng biến a thỏa mãn}

dem:=dem+1; {tăng dem lên}

end;

inc(k); {tăng k lên}

if k>n then break; {vì k=j+1 nên khi k>n thì j=n nên kết thúc vòng lặp này}

end;

inc(j); {tăng j lên}

if j=n then break;{khi j=n-1 thì k=n lúc đó ta đã dò được 2 phần tử này rồi nên khi j =n thì không cần nữa và kết thúc vòng lặp này}

end;

inc(i);

end;


phần nhập vào tệp và xuất ra chắc không cần giải thích, do phải làm rồi copy từ file qua nên có một số chỗ bị lỗi, để em sửa lại cho đúng, anh còn chỗ nào không hiểu không ạ?
 

ontinhoc

Học sinh chăm học
Thành viên
27 Tháng hai 2017
26
12
71
21
Sóc Trăng
Tìm các số là trung bình cộng của hai số khác trong mảng.
ví dụ:
nhập:
8 43 29 89 38 96 27 37 47
kết quả:
38 37
ghi chú: (29+47)/2=38
(27+47)/2=37

do phải làm rồi mở bằng word copy sang nên có chút lỗi, mong bạn thông cảm

code đúng đây bạn::):)

uses crt;

var n,i,j,k,dem:word;

tb,t:real;

a:array[1..500] of longint;

f:text;

str:string;

begin

clrscr;

writeln;

assign(f,'D:\QUATANG.INP');

reset(f);

readln(f,n);

for i:=1 to n do read(f,a[ i]);

close(f);

writeln('du lieu nhap vao tep QUATANG.INP la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);

assign(f,'D:\QUATANG.OUT');

rewrite(f);

dem:=0; t:=0;

i:=1;

while i<=n do

begin

tb:=a[ i];

j:=1;

if i=j then inc(j);

while a[j]<>a[i ] do

begin

k:=j+1;

while a[k]<>a[j] do

begin

if (tb=((a[j]+a[k])/2)) and (tb<>t) then

begin

t:=tb;

dem:=dem+1;

end;

inc(k);

if k>n then break;

end;

inc(j);

if j=n then break;

end;

inc(i);

end;

write(f,dem);

close(f);

writeln;

writeln('du lieu ghi ra tep QUATANG.OUT la:');

reset(f);

while not eof(f) do

begin

readln(f,str);

writeln(str);

end;

close(f);


readln;

end.
 
Top Bottom