$\color{red}{\fbox{Group 2}\bigstar\text{Topic thực hành}\bigstar} $

M

mikelhpdatke

[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.

Đây là topic thực hành dành cho nhóm 2, mọi thắc mắc, vấn đề về code,... các bạn post vào topic này..


Ngày 21/9

Ngày 23/9 (Nộp bài qua hòm thư )


27/9 ------->>
(1) | (2)


 
Last edited by a moderator:
M

mikelhpdatke

Topic lý thuyết (Updating..)
Chúng ta sẽ đi giải các bài tập cơ bản từ dễ đến khó.


Các bài tập sẽ được update lên #1 và # cuối cùng thường xuyên nhé

Bài mở đầu nào :-\"

[FONT=&quot]Bài 1: (20 điểm):[/FONT]
[FONT=&quot]Viết chương trình tính tổng S= 1+1.2+1.2.3+…+1.2.3…N (N<=30)[/FONT]
[FONT=&quot]Dữ liệu vào[/FONT][FONT=&quot]: Lấy từ tệp DATABAI1.INP gồm 1 dòng ghi số nguyên dương N[/FONT]
[FONT=&quot]Kết quả ra[/FONT][FONT=&quot]: ghi tổng S vào tệp KQBAI1.OUT[/FONT]
[FONT=&quot]Ví dụ[/FONT][FONT=&quot]:[/FONT]
[FONT=&quot]DATABAI1.INP[/FONT]​
[FONT=&quot]4
[/FONT][FONT=&quot]KQBAI1.OUT[/FONT]
[FONT=&quot]33[/FONT]​

[FONT=&quot]



[/FONT]
 
Last edited by a moderator:
N

nguyengiahoa10

Sorry spam tí :D
Lí thuyết dạy chưa hết
Mà bắt phải làm bài tập khó thế này
Bótay :-\"
 
I

imcoming

Lí thuyết phải dạy dài dài tí nữa thì các mem mí làm đc chủ topic ợ, bài này ko quá khó, nhưng cần nhìu kinh nghiệm hơ hợ để đưa ra cách giải tối ưu, đề nghị chủ topic dạy thêm cho các mem đi đặc biệt là vòng lặp mí làm đc... sr cũng spam hì
 
Last edited by a moderator:
M

mikelhpdatke

Lí thuyết phải dạy dài dài tí nữa thì các mem mí làm đc chủ topic ợ, bài này ko quá khó, nhưng cần nhìu kinh nghiệm hơ hợ để đưa ra cách giải tối ưu, đề nghị chủ topic dạy thêm cho các mem đi đặc biệt là vòng lặp mí làm đc... sr cũng spam hì
Cảm ơn bạn, lý thuyết đáng ra bây giờ phải có rồi (Do Mod cuong276 làm, nhưng mod này cáo bận học nên chưa làm được, bây giờ mình tự làm, chắc đêm nay mới xong, giờ chưa làm được) :D
 
I

imcoming

Giải bài tập 1

Mình học lớp 11 nhưng thực sự là mình chưa học tệp nên chỉ giải bình thường thui nhé, mong mọi người thông cảm.
Ý tưởng giải nè:
Đầu tiên ta phải tìm cách tính được các số hạng( mỗi số hạng là 1 giai thừa) vì thế ta sử dụng biến t để tính giai thừa của từng giá trị i khi chạy.
Sau đó là biến tổng: tổng các biến t là ta có kết quả.
Code:
Mã:
Var: i,t,s,n: integer;
Begin
   Write(‘ Nhap n= ’); readln(n);
	S:=0;
	t:=1;
for i:=1 to n do
	begin	
		t:=t*i;
s:=s+t;
	end;
write(‘ Tong la ‘,s);
Readln;
End.
 
Last edited by a moderator:
N

noinhobinhyen

Mình học lớp 11 nhưng thực sự là mình chưa học tệp nên chỉ giải bình thường thui nhé, mong mọi người thông cảm.
Ý tưởng giải nè:
Đầu tiên ta phải tìm cách tính được các số hạng( mỗi số hạng là 1 giai thừa) vì thế ta sử dụng biến t để tính giai thừa của từng giá trị i khi chạy.
Sau đó là biến tổng: tổng các biến t là ta có kết quả.
Code:
Var: i,t,s,n: integer;
Begin
Write(‘ Nhap n= ’); readln(n);
S:=0;
t:=1;
for i:=1 to n do
begin
t:=t*i;
s:=s+t;
end;
write(‘ Tong la ‘,s);
Readln;
End.

thiếu tí phần đầu .

program tinh_tong;
uses crt;
Var: i,t,s,n: integer;
clrscr;
begin
....
 
C

cuong276

Topic lý thuyết (Updating..)
Chúng ta sẽ đi giải các bài tập cơ bản từ dễ đến khó.


Các bài tập sẽ được update lên #1 và # cuối cùng thường xuyên nhé

Bài mở đầu nào :-\"

[FONT=&quot]Bài 1: (20 điểm):[/FONT]
[FONT=&quot]Viết chương trình tính tổng S= 1+1.2+1.2.3+…+1.2.3…N (N<=30)[/FONT]
[FONT=&quot]Dữ liệu vào[/FONT][FONT=&quot]: Lấy từ tệp DATABAI1.INP gồm 1 dòng ghi số nguyên dương N[/FONT]
[FONT=&quot]Kết quả ra[/FONT][FONT=&quot]: ghi tổng S vào tệp KQBAI1.OUT[/FONT]
[FONT=&quot]Ví dụ[/FONT][FONT=&quot]:[/FONT]
[FONT=&quot]DATABAI1.INP[/FONT]​
[FONT=&quot]4
[/FONT][FONT=&quot]KQBAI1.OUT[/FONT]
[FONT=&quot]33[/FONT]​

[FONT=&quot]



[/FONT]

Mình học lớp 11 nhưng thực sự là mình chưa học tệp nên chỉ giải bình thường thui nhé, mong mọi người thông cảm.
Ý tưởng giải nè:
Đầu tiên ta phải tìm cách tính được các số hạng( mỗi số hạng là 1 giai thừa) vì thế ta sử dụng biến t để tính giai thừa của từng giá trị i khi chạy.
Sau đó là biến tổng: tổng các biến t là ta có kết quả.
Code:
Mã:
Var: i,t,s,n: integer;
Begin
   Write(‘ Nhap n= ’); readln(n);
	S:=0;
	t:=1;
for i:=1 to n do
	begin	
		t:=t*i;
s:=s+t;
	end;
write(‘ Tong la ‘,s);
Readln;
End.

Xử lí tệp thì không có gì khó. Mình nói qua code luôn.


Mã:
Var: i,t,s,n: integer;
       f,g:text;
Begin
   assign(f,'DATABAI1.INP'); reset(f);
   readln(f,n);
   close(f);
   S:=0;
   t:=1;
   for i:=1 to n do
	begin	
		t:=t*i;
                s:=s+t;
	end;
   assign(g,'KQUABAI1.OUT'); rewrite(g);
   write(g,s);
   close(g);
Readln;
End.
Lưu ý: Trong quá trình học tập sẽ có 1 số bài yêu cầu các bạn gửi code qua hộp thư cá nhân của mình hoặc T-mod Mikelhpdatke. Chúng mình sẽ cố gắng nhận xét về từng bài của các bạn.
 
Last edited by a moderator:
E

englandhuynh

Bài tập nào có thuật tối ưu hơn đc để thoả luận ýk, bài này chỉ vòng for là ra rùi :((
 
I

imcoming

Xử lí tệp thì không có gì khó. Mình nói qua code luôn.


Mã:
Var: i,t,s,n: integer;
       f,g:text;
Begin
   assign(f,'DATABAI1.INP'); reset(f);
   readln(f,n);
   close(f);
   S:=0;
   t:=1;
   for i:=1 to n do
	begin	
		t:=t*i;
                s:=s+t;
	end;
   assign(g,'KQUABAI1.OUT'); rewrite(g);
   write(g,s);
   close(g);
Readln;
End.
Lưu ý: Trong quá trình học tập sẽ có 1 số bài yêu cầu các bạn gửi code qua hộp thư cá nhân của mình hoặc T-mod Mikelhpdatke. Chúng mình sẽ cố gắng nhận xét về từng bài của các bạn.
Hô hô chúng ta vân con thiếu đoạn kiểm tra n.
thêm phần này nhé vào sau begin:
Mã:
Repeat
write(' Nhap n= ');readln;
if n>30 then write(' Nhap lai n= ');
Readln(n);
until n<= 30;
Khai báo var s:longint
thì mí tốt.

From mikelhpdatke: Bạn chú ý thêm tag code vào nhé
 
Last edited by a moderator:
M

mikelhpdatke

Thỏa mãn nhu cầu của các chú.
Thử bài này xem

Mã bài: V8SCORE


Có N vị giám khảo trong kỳ thi chọn đội tuyển tin học. Kỳ thi bao gồm K bài. Vị giám khảo thứ i đề nghị số điểm của bài j là Aij.
Hội đồng giám khảo muốn xác định số điểm cho mỗi bài sao cho:

  • Tổng số điểm bằng S.
  • Điểm của mỗi bài không bé hơn điểm của bài trước đó.
  • Số điểm của mỗi bài bằng điểm đề nghị cho bài này của một vị giám khảo nào đó.
Dữ liệu


  • Dòng đầu tiên chứa ba số nguyên S (1 ≤ S ≤ 200), (1 ≤ K ≤ 20), (1 ≤ N ≤ 20).
  • Dòng thứ i trong số N dòng tiếp theo chứa K số nguyên, số thứ j cho biết giá trị Aij là số điểm vị giám khảo thứ i đề nghị cho bài thứ j.
Kết qủa


  • Nếu tồn tại một cách cho điểm thỏa mãn yêu cầu:
    • Dòng thứ nhất: in ra 'YES'.
    • Dòng thứ hai: in ra K số nguyên là điểm của mỗi bài tìm được.
  • Nếu không tồn tại cách cho điểm, in ra 'NO'.
Ví dụ


Dữ liệu
100 3 2
30 20 40
50 30 50
Kết quả
YES
30 30 40
--------------------------------------------------
Dữ liệu
100 2 3
1 1
2 2
3 3
Kết quả
NO


Chấm điểm tại đây nhé ;))
http://vn.spoj.pl/problems/V8SCORE/
 
C

cuong276

Có bài vừa tầm đây.
Viết chương trình nhập vào 1 mảng số nguyên a gồm n phần tử. Thực hành các công việc sau:
- In mảng vừa nhập ra màn hình
- Hiển thị các số là số fibonacy có trong dãy
- Sắp xếp dãy giảm dần
- Tìm phần tử dương nhỏ nhất và chỉ ra vị trí của nó
- Tìm phần tử âm lớn nhất và chỉ ra vị trí của nó
- Tính TBC của dãy

Các kiến thức cần dùng:
Dãy fibonacy là dãy: 0 ; 1 ; 1 ; 2 ; 3 ; 5 ; 8.....
Trong đó f(n) + f(n+1) = f(n+2) với n \geq 1


Yêu cầu bài này gửi đến hộp thư của mình hoặc bạn mikelhpdatke.
Chúng mình sẽ nhận xét từng bài.
 
I

imcoming

Có bài vừa tầm đây.
Viết chương trình nhập vào 1 mảng số nguyên a gồm n phần tử. Thực hành các công việc sau:
- In mảng vừa nhập ra màn hình
- Hiển thị các số là số fibonacy có trong dãy
- Sắp xếp dãy giảm dần
- Tìm phần tử dương nhỏ nhất và chỉ ra vị trí của nó
- Tìm phần tử âm lớn nhất và chỉ ra vị trí của nó
- Tính TBC của dãy

Các kiến thức cần dùng:
Dãy fibonacy là dãy: 0 ; 1 ; 1 ; 2 ; 3 ; 5 ; 8.....
Trong đó f(n) + f(n+1) = f(n+2) với n \geq 1


Yêu cầu bài này gửi đến hộp thư của mình hoặc bạn mikelhpdatke.
Chúng mình sẽ nhận xét từng bài.

Bài dài quá gửi qua tin nhắn k được, thông cảm post lên đây nhé các chú!!!!!!!!!!!!!!!!!
Mã:
Var: a,b:array[1..100] of integer;
	N,i,j,k,tg1,tg2,max,min,max1,s,kt1,kt2,kt: integer;
	Tbc:real;
Begin
Write(‘ Nhap so phan tu n = ’);readln(n);
For i:=1 to n do
Begin
	Write(‘Nhap phan tu thu a[‘,i,’]= ’);readln(a[i]);
End;
Max:=a[1];
For i:=1 to n do
	If a[i]>max then max:=a[i];
B[1]:=1;
B[2]:=1;
J:=2;
Repeat
J:=j+1;
B[j]:=b[j-1]+b[j-2];
Until b[j]>=max;
For i:=1 to n do
For k:=1 to j do
If a[i]=b[k] then
begin 
write(a[i]:3);
kt2:=1;
end;
if kt2=1 then write(‘k co so fibonaci’);
For i:=1 to n do if a[i]>0 then 
begin	
min:=a[i];
kt1:=1;
end;
For i:=1 to n do
 if a[i]>0 and a[i]< min then
 begin
			tg1:=i;
			min:a[i];
end;
For i:=1 to n do 
if a[i]<0 then 
	begin	
		max1:=a[i];
		kt:=1;
	end;
for i:=1 to n do 
	if a[i]<0 and a[i]>max 1 then
		begin	
			tg2:=i;
			max1:=a[i];
		end;
for i:=1 to n do
for k:=i+1 to n do
	if a[i]< a[k] then 
		begin
			tg:=a[i];
			a[i]:=a[j];
			a[j]:=tg;
		end;
for i:=1 to n do
s:=s+a[i];
tbc:=s/n;
if kt1=1 then write(‘ so duong nho nhat la’,min, ‘so thu tu’,tg1) else write(‘ko co so duong’);writeln;
if kt=1 then write(‘so am lon nhat la’,max,’so thu tu’,tg2) else write(‘ ko co so am’);writeln;
write(‘day da sap xep la’);writeln;
for i:=1 to n do write(a[i]:5);
write(‘tbc=’,tbc:3:4);
readln;
end.
Bài bên trên để a nghiên cứu típ. hì hì

From mikel: Lần sau nếu thế thì anh upload cái file .pas lên host rồi post link vào hòm thư nhé
 
Last edited by a moderator:
H

hgminh95

Nhóm 2 có vẻ vắng vẻ nhỉ :(
Mình xin đóng góp sol của V8SCORE :D
n, k có giới hạn khá nhỏ nên có thể dùng quay lui để xét hết các khả năng, tuy nhiên như vậy chưa đủ để acc nên phải đặt thêm cái cận thế này:
- Nếu trong quá trình quay lui, giả sử đã chọn đến bài thứ i (bài thứ i được chọn có giá trị là c), tổng điểm các bài đã chọn là P mà P + c * (k - i) <= S thì mới tiếp tục đi theo hướng đó.
 
M

mikelhpdatke

Bài tập tiếp nào :D

Viết chương trình tìm $(a,b); (a,b,c)$ và $[a,b,c]$ với $a, b, c$ nhập từ bàn phím. $a,b,c$ nguyên dương (Giới hạn $a,b,c <10^5$)


$(a,b ) $là UCLN của $a,b$ nhé
Còn $[a,b]$ là BCNN
Ký hiệu này học ở THCS thì phải :D
 
Last edited by a moderator:
T

tesla_commander

toán lớp mấy vậy****************************************************************************************************************************************************************************************************************************************************************************************?/ chả hiểu!
 
I

imcoming

Anh chẳng hiểu bài em vừa nêu j cả. Tìm ước hở em, hay tím cái j é??? lâu ko dùng ký hiệu nên quên hết rồi
 
Top Bottom