PDA

View Full Version : 1 số bài vui



quangtq
26-08-2009, 17:04
Lâu ko vào, spam mấy bài, mọi người làm nhiệt tình, Trừ bác nguuuquaa (tại bài này ở bên VP có rồi).
Không sử dụng câu lệnh rẽ nhánh (if...,case...) hay vòng lặp (for...,while...,repeat...), viết chương trình kiểm tra:
a) Số dương
b) Số âm
c) Số 0
d) Số chẵn
e) Số lẻ.
Nghịch tí nhở mọi người.

hang_vt
26-08-2009, 18:57
case ... of đc k :d
--------------------

s.code
26-08-2009, 19:06
Không dùng câu lệnh if else nhé. Tại pác ko nói là ko được dùng biểu thức if else



<?
$input = $_GET['num'];

$outPut = $input > 0?"Số dương":"";

$outPut = $input == 0?"Bằng 0":"";

$outPut = $input < 0?"Số âm":"";

echo $outPut;
?>

hang_vt
26-08-2009, 19:32
pascal mà :(
-------------

quangtq
27-08-2009, 17:30
Ko được case, of, em nói rồi.
Hehe. Nghĩ đi chị
:D

zZz4everzZz
27-08-2009, 17:41
Em mới nghĩ ra cách thực hiện số dương số âm số chẵn số lẻ nhưng học lâu nên quên PASCAL òi ko nhớ lắm để mai mượn đc sách em xem lại đã nhưng sơ bộ thì cách nó như thế này :

- dùng lệnh Goto để đưa con trỏ đến dòng 3 cột 1
- in ra màn hình dòng "Khong la so duong"
- gọi số đó là a tính : b=a/ABS(a)+1 khi đó thì b nhận giá trị là 0 nếu a là số âm và nhận giá trị 2 nếu a là số dương ( ABS là lấy giá trị tuyệt đối đùng ko nhỉ ^^ )
- dùng lệnh Goto để đưa con trỏ đến dòng 1+b cột 6
- thực hiện xoá kí tự 6 lần bằng /b ( hoặc cái gì đó tương tự - đang ko có sách PASCAL để xem lại ^^ )

Vẫn có cảm giác cách này của mình có vấn đề nhưng tạm thời mới nghĩ đc có thế ^^ 3 phần còn lại thì tương tự chẵn thì chia nó cho 2 thì nhận đc kết quả chỉ là 0 hoặc 1 thì tương tự nhưng em đang mắc 1 chút ở điểm này !

Đề bài hay lắm ^^

chick chick
28-08-2009, 08:46
Lâu ko vào, spam mấy bài, mọi người làm nhiệt tình, Trừ bác nguuuquaa (tại bài này ở bên VP có rồi).
Không sử dụng câu lệnh rẽ nhánh (if...,case...) hay vòng lặp (for...,while...,repeat...), viết chương trình kiểm tra:
a) Số dương
b) Số âm
c) Số 0
d) Số chẵn
e) Số lẻ.
Nghịch tí nhở mọi người.

kiểm tra số N là số dương hay không nhá?


var n: longint; so_duong: boolean;
begin
readln(n);
so_duong:= n>0;
writeln('N la so duong:',so_duong);
readln;
end.
chạy thử đi lol

quangtq
28-08-2009, 16:46
Sai. Ko được thế. Phải in ra là: N là số dương hay N là số âm, ko đc in ra là True hay False.
:D
Mọi người suy nghĩ tiếp đi
Ko đc thì mai post lời giải.

zZz4everzZz
28-08-2009, 19:23
Sai. Ko được thế. Phải in ra là: N là số dương hay N là số âm, ko đc in ra là True hay False.
:D
Mọi người suy nghĩ tiếp đi
Ko đc thì mai post lời giải.

Thế em đổi sang thế này đc chứ ? Vì nó hiện ra đúng là N là số dương hoặc N là số âm mà :D



- dùng lệnh Goto để đưa con trỏ đến dòng 3 cột 1
- in ra màn hình dòng "So N la so duong am"
- gọi số đó là a tính : b=a/ABS(a)*3+19 khi đó thì b nhận giá trị là 16 (ngay trước chữ g của chữ dương) nếu a là số âm và nhận giá trị 22 nếu a là số dương ( ABS là lấy giá trị tuyệt đối đùng ko nhỉ ^^ )
- dùng lệnh Goto để đưa con trỏ đến dòng 3 cột b
- thực hiện xoá kí tự 5 lần bằng /b ( hoặc cái gì đó tương tự - đang ko có sách PASCAL để xem lại ^^ )

Với lại theo như đề bài thì các phần là riêng biệt mà ! Bác yêu cầu thế ko rõ ràng mà :D

quangtq
28-08-2009, 20:48
Thôi sáng mai đi dự hội nghị về post lời giải
:D

chick chick
28-08-2009, 21:48
Sai. Ko được thế. Phải in ra là: N là số dương hay N là số âm, ko đc in ra là True hay False.
:D
Mọi người suy nghĩ tiếp đi
Ko đc thì mai post lời giải.
nè, đâu có sai, đề bài chỉ biểu kiểm tra thôi mà lol

quangtq
29-08-2009, 16:02
Nản quá.
Thôi, post lời giải. Đơn giản hơn mọi người nghĩ nhiều. :D


Uses Crt;
Var
Int : Array[False..True,False..True] of String[6];
OddEven : Array[False..True] of String[5];
Bigger, Smaller : Boolean;
N:Integer;
Begin
ClrScr;
Int[False,False]:='0'; Int[False,True]:='Am'; Int[True,False]:='Duong';
OddEven[False]:='Chan'; OddEven[True]:='Le';
Write(' N = '); Readln(N);
Bigger:=N>0;
Smaller:=N<0;
Writeln(' N la so ',Int[Bigger,Smaller],' va la so ',OddEven[Odd(N)]);
Readln;
End.

What do you think? :D

zZz4everzZz
29-08-2009, 23:20
Cách hay thật ^^N nhưng bác phủ nhận hoàn toàn 2 cách còn lại là ko hợp lý ^^ 1 bài toán có nhiều cách giải mà ^^ tại bác đưa ra đề bài ko rõ ràng mà ^^

Nhưng mà cho em hỏi chỗ ODD(N) là từ đâu ạh ^^ nhớ mang máng là nó kiểu như là SQRT nhưng lâu òi quên mất tiện đây bác nhắc lại giúp em nhá ^^

quangtq
30-08-2009, 15:36
Sorry. Mình ko phủ nhận, dùng từ ngữ sai :D (Văn kém mà).
Mình đưa cụ thể rồi.
ODD(N) là hàm kt xem N có phải số lẻ ko
:D

chick chick
31-08-2009, 21:26
hay thật, biến tấu đi tẹo mà chả nghĩ ra
mình đầu đất quá