$\color{red}{\fbox{Group 1}\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 1, mọi vấn đề về code lỗi, không chạy được, thắc mắc về thuật toán các bài tập,... các bạn sẽ post tại đây.

Lưu ý: Các bạn chú ý xem kỹ bài làm, khi không còn phương án nào giải quyết thì post lên nhé!


Để làm được các bài tập trước tiên các bạn cần năm chắc lý thuyết đã
Lý thuyết Pascal --->

http://diendan.hocmai.vn/showthread.php?t=260109

Đề bài
21/9

21/9 (2)
23/9 (Nộp bài qua hòm thư )
Danh sách nhóm 1
 
Last edited by a moderator:
A

alexandertuan

Cho mình hỏi cái lỗi division by zero là sao vậy. Khi mình đánh chương trình khác đột nhiên nó hiện ra.
 
H

hgminh95

Lỗi này là chia cho 0, tuy nhiên nếu bạn dùng TP thì có thể là
- Cái tp của bạn bị lỗi do thư viện crt gây ra, bạn có thể ko sử dụng thư viện này ở đầu chương trình nữa (bỏ uses crt; ) or tìm bản TP khác, nhưng mà tốt nhất là cài FP :))
- Khả năng thứ 2 là trong chương trình của bạn có 1 biểu thức div or chia mà số chia là 0
 
M

mikelhpdatke

Viết chương trình nhập vào các số nguyên: a, b, x, y, ... sau đó in ra màn hình


kết quả của các biểu thức sau:
a/ $\dfrac{x+y}{2+\dfrac{x}{y}} $

b/ $\dfrac{(a+4)(b-2c+3)}{9(a-1)} $

c)$x^n+y^m$
Viết chương trình tính diện tích tam giác theo công thức sau:



$S=\sqrt{P(P-a)(P-b)(P-c)} $với p là nửa chu vi
 
C

cuong276

Nhóm 1 khởi động với một số bài đơn giản chứ nhỉ.

Đề bài: Viết chương trình in ra màn hình dòng chữ:
Toi yeu Viet Nam
Toi yeu Pascal

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

mikelhpdatke

Tại sao mình làm nó không hiện ra 2 dòng, mà 2 cụm từ đó cứ liền vào 1 dòng nhỉ?
Nếu chỉ viết write('Toi yeu Viet Nam') không thôi thì tức là: Bạn sẽ in dòng Toi yeu Viet Nam ra nhưng con trỏ sau khi in vẫn ở cuối chữ Nam.
Còn viết writeln('Toi yeu Viet Nam') thì sau khi viết con trỏ sẽ tự động xuống đầu dòng tiếp theo. Khi đó bạn viết tiếp theo sẽ không bị chèn.
PS: Lần sau bạn cho vào thẻ code nhé
Mã:
Program skynet115;
Begin
        Writeln('Toi yeu viet nam');
        Write('toi yeu pascal');
        Readln;
End.
 
C

cuimuoimuoi_1969

cậu dùng writeln ý
chứ write cũng vậy nhưng dùng nó thì con trỏ k tự động xuống dòng, còn dùng write thì con trỏ tự động xuống dòng
nên khi cậu viết write nó sẽ dính lại trên 1 hàng, còn write thì được như ý hì hì :D
 
C

cuong276


Mã:
program yeu;
uses crt;
var x,y,z:integer;
begin
clrscr;
write('y,z:');
x:=y+z;
writeln('x=');
readln(x);
end.
sao nó hiện lỗi error begin :confused:
=========================

Sai là phải rồi. Sửa bằng cách sau:
không phải
Mã:
write('y,z:')
mà là
Mã:
write('y:'); readln(y);
write('z:'); readln(z);
Làm như vậy thì giá trị của y,z mới bằng số mà bạn vừa nhập vào.
Còn nếu không có readln(Biến) thì giá trị y,z của bạn chẳng là cái gì cả.
Vì thế x cũng chẳng có gì luôn.
Còn nữa:
Không phải
Mã:
readln(x);
Mà là
Mã:
readln;
readln; thường đặt ở trước END.
Nó có tác dụng giữ nguyên màn hình kết quả làm việc
Còn nếu không có lệnh readln; thì bạn phải ấn Alt+F5 để xem kết quả chạy của code
 
C

cuong276

Các bạn nhóm 1 làm bài này thử nha.
Viết chương trình nhập vào 3 số nguyên a,b,c. Tìm số lớn nhất và số nhỏ nhất trong 3 số đó


Yêu cầu gửi bài làm vào 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 làm
 
S

sky_net115

Mã:
program skynet115;
uses crt;
var a,b,c:integer;
Begin
        Write(' nha gia tri cua a=');Readln(a);
        write('nhap gia tri cua b=');Readln(b);
        Write('Nhap gia tri cua c=');Readln(c);
        if a>b then
                if a>c then
                        if b>c then
                        Write('Gia tri nho nhat',c)
                        else
                        Write('Gia tri nho nhat',b);
                Write('Gia tri lon nhat',a)
                else
                if c>b then
                writeln('gia tri nho nhat',a)
                Writeln('Gia tri lon nhat',c)
                else
                        if a>c then
                        Writeln('gia tri nho nhat',c)
                        else
                        Writeln('gia tri nho nhat',a)
                Writeln('Gia tri lon nhat',b)
                Readln;
end.

Nhức đầu thật, không hiểu sao cái dòng else dòng thứ 15 nó lại báo là nhập dấu ;, mình nhập vào dòng thứ 14 rồi mà vẫn báo vậy @.@
 
M

mikelhpdatke

Mã:
program skynet115;
uses crt;
var a,b,c:integer;
Begin
        Write(' nha gia tri cua a=');Readln(a);
        write('nhap gia tri cua b=');Readln(b);
        Write('Nhap gia tri cua c=');Readln(c);
        if a>b then
                if a>c then
                        if b>c then
                        Write('Gia tri nho nhat',c)
                        else
                        Write('Gia tri nho nhat',b);
                Write('Gia tri lon nhat',a)
                else
                if c>b then
                writeln('gia tri nho nhat',a)
                Writeln('Gia tri lon nhat',c)
                else
                        if a>c then
                        Writeln('gia tri nho nhat',c)
                        else
                        Writeln('gia tri nho nhat',a)
                Writeln('Gia tri lon nhat',b)
                Readln;
end.
Nhức đầu thật, không hiểu sao cái dòng else dòng thứ 15 nó lại báo là nhập dấu ;, mình nhập vào dòng thứ 14 rồi mà vẫn báo vậy @.@


Sau một lệnh mà anh thực hiện nhiều lệnh khác nằm trong lệnh đó thì anh phải thêm begin
end;
vào những lệnh nằm trong nhé

VD:
Mã:
a:=10;
If a>10 then
  Begin
     writeln(a);
      writeln('a>10');
 End;
Còn nếu ko cho begin và end vào thì
Mã:
[CODE]
a:=10;
If a>10 then
     writeln(a);
      writeln('a>10');
Nếu như trên thì chương trình sẽ chỉ kiểm tra là: Nếu a>10 thì chương trình sẽ in ra a.
Còn câu lệnh writeln('a>10') hiển nhiên nó sẽ tuự động in ra mà không có gì ép buộc.
Gán a:=5 thì câu lệnh writeln('a>10') vẫn được tiến hành
[/CODE]
 
C

cuong276

Mã:
program skynet115;
uses crt;
var a,b,c:integer;
Begin
        Write(' nha gia tri cua a=');Readln(a);
        write('nhap gia tri cua b=');Readln(b);
        Write('Nhap gia tri cua c=');Readln(c);
        if a>b then
                if a>c then
                        if b>c then
                        Write('Gia tri nho nhat',c)
                        else
                        Write('Gia tri nho nhat',b);
                Write('Gia tri lon nhat',a)
                else
                if c>b then
                writeln('gia tri nho nhat',a)
                Writeln('Gia tri lon nhat',c)
                else
                        if a>c then
                        Writeln('gia tri nho nhat',c)
                        else
                        Writeln('gia tri nho nhat',a)
                Writeln('Gia tri lon nhat',b)
                Readln;
end.

Nhức đầu thật, không hiểu sao cái dòng else dòng thứ 15 nó lại báo là nhập dấu ;, mình nhập vào dòng thứ 14 rồi mà vẫn báo vậy @.@

He he he. Tuổi thơ pascal của mềnh cũng như thế này đây.
Cung cấp cho các bạn 1 cái code ngắn gọn hơn nha
Mã:
var a,b,c,max,min:integer;
BEGIN
    write('a='); readln(a);
    write('b='); readln(b);
    write('c='); readln(c);
    max:=a; min:=a;
    if b>max then max:=b;
    if c>max then max:=c;
    if b<min then min:=b;
    if c<min then min:=c;
    writeln('gtln la:  ',max);
    writeln('gtnn la:', min);
    readln;
END.
 
M

mikelhpdatke

Tối ưu hơn một chút này, vừa nhập vừa kiểm tra :))

Mã:
var a,b,c,max,min:integer;
BEGIN
    write('a='); readln(a); 
    write('b='); readln(b);
If b>a then max:=b else max:=a;
If b<a then min:=b else min:=a;
    write('c='); readln(c);
 If c> max then max:=c;
 If c<min then min:=c;
    writeln('gtln la:  ',max);
    writeln('gtnn la:', min);
    readln;
END.
 
C

cuong276

Tối ưu hơn một chút này, vừa nhập vừa kiểm tra :))

Mã:
var a,b,c,max,min:integer;
BEGIN
    write('a='); readln(a); 
    write('b='); readln(b);
If b>a then max:=b else max:=a;
If b<a then min:=b else min:=a;
    write('c='); readln(c);
 If c> max then max:=c;
 If c<min then min:=c;
    writeln('gtln la:  ',max);
    writeln('gtnn la:', min);
    readln;
END.

Có tối ưu hơn mấy đâu.
code như nhau cả.
Code của anh 4 if...then + 2 cái gán
Còn code của chú thì 2 if...then + 2 if...then...else
Thế là hoà chứ =))
 
H

htxpjnoy2000

pascal

Xin anh cho em biết là mình có thể lồng ghép phần đồ họa vào trong chương trình pascal được không nếu có thì phải khai báo thư viện như thế nào ...!!!:):):):):)
 
Top Bottom