Dec
29
2010

Thảo luận về bài tập 6

Trước khi bắt đầu thảo luận về bài tập 6, MMun có một số nhắc nhở sau:

  1. Các bạn đừng đặt tên file, thư mục có dấu tiếng Việt, vì khi mình chạy PHP để test code sẽ không chạy được.
  2. Tên file bài tập source code nên đặt theo dạng bai6.1.php, bai6.2.php hay bai6-1.php, bai6-2.php hay 6.1.php, 6.2.php v.v… đừng đặt là diem_tua.php, tim_so_lon_nhat.php vì khi mình comment mình sẽ không nhớ ra đó là bài số mấy (nếu đặt bai6_1-diem-tua.php thì OK, vì nhìn vô là biết bài 6.1).

************************************************

Bài 6.1: (Phạm Đình Thanh Quang – cometome1991)

Kết quả của chương trình diem_tua.php khi ta nhập vào chữ ‘co the’ khi được hỏi:

Ta có thể giải thích điều này như sau: Khi được chương trình hỏi, ta nhập vào chữ ‘Co the’, trình thông dịch PHP.EXE sẽ bắt đầu so sánh chuỗi vừa nhập với kí tự ‘c’ hoặc ‘C’. Ở kí tự đầu tiên, trình thông dịch thấy hai chuỗi đều giống nhau và chuyển sang kí tự tiếp theo để so sánh là kí tự ‘o’. Trong khi đó, chuỗi ‘C’ đều đã kết thúc nên trình thông dịch kết luận hai chuỗi này không bằng nhau nên (bổ sung của Mmun: … nên biểu thức điều kiện sẽ mang giá trị false, vậy câu lệnh sau else được thực thi) sẽ nhảy qua câu lệnh else, và sẽ xuất ra màn hình câu ‘Ong Ac-xi-met KHONG THE nhac bong duoc Trai Dat len’.

Bài 6.2: (Nguyễn Văn Thiệu – S.E.C.R.E.T)

Ở đây em có 2 cách, nhưng mà theo yêu cầu đề bài thì chỉ thay đổi biểu thức điều kiện thôi nên chỉ còn có 1 cách (theo suy nghĩ của em). Nhưng em vẫn trình bày luôn 2 cách, anh Long xem và cho em nhận xét nhé!

Cách 1: (Có vẻ như sai yêu cầu đề bài =.=)

Giữ nguyên tất cả code file diem_tua.php, chỉ thay đổi ở dòng thứ 4, ta dùng hàm fgetc thay cho fgets để lấy 1 kí tự đầu tiên trong chuỗi thô nhập từ bàn phím.

$co1diemtua = fgetc(fopen('php://stdin','r'));

Vì hàm này chỉ nhận kí tự đầu tiên trong chuỗi nhập từ bàn phím nên bất cứ chuỗi thô nào bắt đầu bằng kí tự ‘c’ hoặc ‘C’ đều thỏa BTĐK trong câu lệnh IF (BTĐK mang giá trị TRUE).

Bình luận của MMun: Đúng là sai đề bài, vì anh yêu cầu phải giữ nguyên, ngoại trừ thay đổi ở biểu thức điều kiện. Tuy nhiên, việc sử dụng hàm fgetc là một ý hay, vì qua đó, các bạn ở lớp có thể biết thêm được một hàm mới, và công dụng của nó là để nhập 1 ký tự vào từ bàn phím thay vì nhập cả chuỗi như cách thông thường chúng ta vẫn đang sử dụng.

Cách 2: (Okay nhất)

if(($co1diemtua == "c\r\n") || ($co1diemtua == "C\r\n"))

Bình luận của MMun: Cách này OK. Và đúng với “mong muốn, suy nghĩ” của anh khi ra đề. Tuy nhiên, anh có các bài khác, thấy có bạn dùng dấu nháy đơn và viết kiểu “xuống dòng” thế này:

if($co1diemtua == ‘a
’ || … )

cũng hoàn toàn đúng, không sao cả.

Bài 6.3: (Phạm Đình Thang Quang – cometome1991)

<?php
echo 'Ban co the cho ong Ac-xi-met mot diem tua khong? (C/K): ';
$co1diemtua =  trim(fgets(fopen('php://stdin','r')));
if (($co1diemtua == 'k') || ($co1diemtua == 'K'))
{
	echo 'Ong Ac-xi-met KHONG THE nhac bong duoc Trai Dat len';
}
else
{
	echo 'Ong Ac-xi-met se nhac bong duoc Trai Dat len';
}
?>

Bình luận của MMun: Một số bạn dùng cách “phủ định” như dưới đây cũng không sai. Nhưng các bạn cần chú ý đến toán tử logic nhé. Ở trường hợp 1, so sánh khẳng định với k và K thì dùng toán tử hoặc || ; trong khi trường hợp 2, so sánh phủ định thì phải dùng toán tử và &&)

<?php

echo 'Ban co the cho ong Ac-xi-met 1 diem tua khong? (C/K): ';
$co1diemtua = trim(fgets(fopen('php://stdin','r')));

if(($co1diemtua != 'k') && ($co1diemtua != 'K'))
{
	echo 'Ong Ac-xi-met se nhac bong duoc trai dat len!';
}
else
{
	echo 'Ong Ac-xi-met KHONG THE nhac bong duoc trai dat len.';
}

?>

Bài 6.4: (Nguyễn Văn Thiệu – S.E.C.R.E.T)

<?php

echo 'Nhap gia tri cho bien $a: ';
$a = trim(fgets(fopen('php://stdin','r')));
echo 'Nhap gia tri cho bien $b: ';
$b = trim(fgets(fopen('php://stdin','r')));

if( ((int)$a <= 0) || ((int)$b <= 0)  ||  ($a != (string)(int)$a) || ($b != (string)(int)$b)  )
{
    echo 'Ban phai nhap 2 SO NGUYEN DUONG!';
}
else
{
    echo 'Chuong trinh co 2 so: ',$a, ' va ', $b, "\n";
    if($a > $b)
        echo $a,' la so lon hon.';
    {
    }
    else
    {
        if($b > $a)
        {
            echo $b, ' la so lon hon.';
        }
        else
        {
            echo '2 so co gia tri bang nhau.';
        }
    }

}
?>

Để ràng buộc điều kiện là dữ liệu nhập vào phải là 2 số nguyên dương nên trong BTĐK em đã ép kiểu 2 lần, lần 1 ép sang kiểu int và lần 2 ép sang kiểu string để có thể so sánh 2 vế được với nhau. Mục đích của việc làm này là để xét xem dữ liệu nhập vào từ bàn phím có bao gồm chữ cái, ký tự đặc biệt hay không, nếu chỉ nhập toàn số thì chương trình sẽ thực thi như mong muốn, ngược lại đưa ra một thông báo nhập dữ liệu sai và kết thúc chương trình.

Bình luận của MMun:

Nhiều bạn quên mất việc đề bài yêu cầu dữ liệu nhập vào PHẢI là số NGUYÊN dương. Tức là, phải thoả điều kiện số nguyên trước đã. Vậy nên ai bỏ qua bước kiểm tra số nguyên mà chỉ kiểm tra > 0 là chưa đúng hoàn toàn. Với lại, nếu dễ thế thì bài này đã không gắn dấu * rồi, he he :D. Để kiểm tra dữ liệu nhập vào, cách làm của Thiệu là giải pháp tốt. Bạn Việt DHT cùng một số bạn khác cũng làm theo cách này nhưng các bạn chú ý là có thể viết gọn lại khi ép kiểu 2 lần luôn, không cần phải đặt thêm biến mới.

Bài 6.4 này, Mmun đọc rất kỹ lời giải của TẤT CẢ MỌI NGƯỜI, và rút ra một số điểm cần trao đổi như sau:
  1. Các bạn sẽ không dùng gettype được vì tất cả mọi thứ bạn nhập vào từ bàn phím (chưa qua tính toán, ép kiểu) đều được coi là kiểu chuỗi, nên gettype luôn trả về kiểu chuỗi.
  2. Các bạn cũng sẽ không kiểm tra số nguyên bằng cách ép kiểu rồi gettype được vì ép qua kiểu nào, gettype sẽ trả về kiểu đó.
  3. Hàm is_numeric(…) không dùng để kiểm tra kiểu nguyên được vì nhập vào một số như là số thực (45.67 chẳng hạn) thì is_numeric vẫn trả về true. is_numeric chỉ kiểm tra dữ liệu nhập vào có phải là “số” hay không chứ không kiểm tra số nguyên hay số thực.
  4. Hàm var_dump(…) cũng không dùng trong bài này được. Tương tự với gettype, var_dump dữ liệu sau khi nhập từ bàn phím sẽ hoàn toàn là string.
  5. Cách làm của Thiệu sẽ kiểm tra được dữ liệu nhập vào có giá trị thực hay giá trị nguyên. Tuy nhiên, khi Mmun nhập thử một giá trị đặc biệt là 45.0 thì chương trình của Thiệu vẫn hiểu đây là số nguyên, trong khi nếu xét một cách “khắt khe” thì đây phải là số thực. Đó là việc trao đổi thêm thôi, chứ mình cũng không yêu cầu các bạn phải chi tiết đến thế.

Bài 6.5: (Nguyễn Hoàng Phong – hoangphong187)

<?php

echo 'Nhap vao mot so bat ky :', $n = fgets(fopen('php://stdin','r'));
$i = (int)sqrt($n);
if ($i * $i == $n)

{
	echo 'la so chinh phuong';
}
else
{
	echo 'khong phai la so chinh phuong';
}
?>

Bài này nhiều bạn làm đúng. Ý tưởng ở đây là tìm khai căn của số nhập vào, lấy phần nguyên của nó và bình phương lên lại coi có bằng số ban đầu hay không, nếu bằng nhau thì số ban đầu là số chính phương.

Tuy nhiên, bạn Nguyễn Thị Hồng Hạnh lại có cách làm nhanh hơn khi đưa ra ý tưởng là khai căn số ban đầu, và xét xem số khai căn này có phải là số nguyên hay không? (Code của bạn tốt, chỉ mắc một lỗi nhỏ là biến $b không biết từ đâu lại mọc ra :D)

Ưu điểm của cách làm này là chương trình đỡ phải… tính thêm 1 phép tính nhân.

Bài 6.6: (Ngô Thái – can_do)

<?php
    echo '------ CHUONG TRINH TIM SO LON NHAT TRONG 3 SO ------',"\n";
	// Nhap du lieu
	echo 'Nhap gia tri so a: ';
	$a = trim(fgets(fopen('php://stdin','r')));
	if(($a!='0')&&((float)$a==0))
	{
	    echo 'Gia tri, a=',$a,' vua nhap khong hop le! Vui long nhap gia tri so.';
		exit();
	}
	echo 'Nhap gia tri so b: ';
	$b = trim(fgets(fopen('php://stdin','r')));
	if(($b!='0')&&((float)$b==0))
	{
	    echo 'Gia tri, b=',$b,' vua nhap khong hop le! Vui long nhap gia tri so.';
		exit();
	}
	echo 'Nhap gia tri so c: ';
	$c = trim(fgets(fopen('php://stdin','r')));
	if(($c!='0')&&((float)$c==0))
	{
	    echo 'Gia tri, c=',$c,' vua nhap khong hop le! Vui long nhap gia tri so.';
		exit();
	}
	// So sanh 3 so a, b, c
	if(($a==$b)&&($b==$c))
	{
	    echo '3 so co gia tri bang nhau!';
	}
	else
	{
	    if(($a>$b))
	    {
	        if($a>$c)
	            echo $a,' la so lon nhat!';
		    else
		        echo $c, ' la so lon nhat!';
	    }
	    else
	    {
	        if($b>$c)
		        echo $b,' la so lon nhat!';
		    else
                echo $c, ' la so lon nhat!';
	    }
	}
?>

Bình luận của MMun:

Bài của bạn làm tốt và đúng. Tuy đề bài không yêu cầu kiểm tra dữ liệu đầu vào nhưng các bạn cần nhớ rằng các toán tử so sánh như lớn hơn, nhỏ hơn… sẽ có tác dụng ngay cả với dữ liệu kiểu chuỗi. Nên nếu các bạn thử nhập các giá trị là chuỗi thì chương trình vẫn chạy và sẽ đưa ra những so sánh hơi phi “thực tế” một xíu mặc dù nó vẫn đúng khi xét về logic.

Hoặc để đơn giản hơn, chúng ta có thể nhập dữ liệu và ép kiểu hết về số thực cho nhanh 😀

Có bạn đề xuất dùng hàm max(…) để tìm số lớn nhất. Tuy nhiên, bản chất hàm max(…) cũng thực hiện các phép so sánh nên nếu người dùng nhập vào dữ liệu vừa chữ vừa số thì chương trình cũng đưa ra kết quả “phi thực tế” như đã phân tích ở trên.

Ngoài cách tìm ra số lớn nhất của bạn Ngô Thái ở trên, một số bạn còn có một cách khác MMun thấy cực kỳ hay và ngắn gọn:

if ( ($a == $b) && ($b == $c) )
      {
          echo 'Ca 3 so deu bang nhau nen khong co so nao lon nhat trong 3 so!';
      }
      else
      {

          $max = $a;
          if($max < $b)
          {
              $max = $b;
          }
          if($max < $c)
          {
              $max = $c;
          }
          echo $max,' la so lon nhat.';

Bài 6.7: (Trịnh Mạnh Hùng – hung.trinh)

<?php
	echo "Chuong trinh the hien diem tong ket trung binh\nNhap vao mot so tu 0 --> 10: ";
	$a = trim(fgets(fopen('php://stdin','r')));
	//var_dump($a);
	if($a < 0 || $a > 10)
	{
		echo 'Nhap sai du lieu';
	}
	else
	{
		if($a <3.5)
		echo 'Xep loai Kem';
		if($a >= 3.5 && $a <= 5)
		echo 'Xep loai Trung Binh';
		if( $a > 5 && $a < 8 )
		echo 'Xep loai Kha';
		if($a >=8 && $a <= 9)
		echo 'Xep loai Gioi';
		if($a > 9)
		echo 'Xep la Siu nhun';
	}
?>

Bình luận của MMun: Bài của bạn làm tốt, mặc dù không đúng với đề bài Mmun yêu cầu. Ví dụ như MMun yêu cầu xếp loại từ 8 đến dưới 9 – không lấy giá trị 9 – là giỏi nhưng bạn lại để từ 8 đến 9 – LẤY CẢ GIÁ TRỊ 9 – là giỏi. Tuy nhiên, Mmun cho rằng bản chất của vấn đề thì bạn đã nắm được rồi nên không sao.

Bài 6.8: (Trịnh Trung Kiên – TrinhKien)

<?php
	echo 'Ban hay nhap vao 1 so bat ky:';
	$a=fgets(fopen('php://stdin','r'));
	if($a%2==0)
		{
			echo 'Day la so chan';
		}
	else
		{
			echo 'Day la so le';
		}
?>

Bình luận của MMun: Nếu kiểm tra xem dữ liệu nhập vào có phải là SỐ hay không, hoặc ép kiểu nó về kiểu số trước khi kiểm tra thì sẽ OK hơn. Bài này chạy sẽ cho kết quả đúng với dữ liệu kiểu số nguyên. Cũng nhắc lại nếu bạn nào quên kiến thức bài cũ: dấu % tương đương với toán tử DIV ở một số ngôn ngữ lập trình, dùng để lấy phần dư của phép toán chia.

Bài 6.9: (Lê Đình Nam – superquay)

<?php

do
{
	echo 'Nhap 1 so bat ki tu 2 den 8: ';
	$d=fgets(fopen('php://stdin','r'));
}while($d<2||$d>8);
echo 'Ngay tuong ung: ';
if($d==2) echo 'Monday';
if($d==3) echo 'Tuesday';
if($d==4) echo 'Wednesday';
if($d==5) echo 'Thursday';
if($d==6) echo 'Friday';
if($d==7) echo 'Saturday';
if($d==8) echo 'Sunday';

?>

Bình luận của MMun:

Bạn Nam dùng vòng lặp Do While để bắt buộc người dùng nhập vào một số trong khoảng từ 2 đến 8, rồi sau đó dùng if để ghi giá trị. Bài của bạn làm đúng, nhưng dùng các kiến thức chưa được học ở lớp. Tuy vậy, nếu ai chưa học thì đọc vào chắc cũng dễ hình dung (Mmun nghĩ thế) nên vẫn đưa ra ở đây làm ví dụ được.

<?php

echo 'Nhap vao mot so bat ki tu 2 -> 8';
$day = trim(fgets(fopen('php://stdin','r')));
if($day == 2)
{
    echo 'Monday';
}
if($day == 3)
{
    echo 'Tuesday';
}
if($day == 4)
{
    echo 'Wednesday';
}
if($day == 5)
{
    echo 'Thursday';
}
if($day == 6)
{
    echo 'Friday';
}
if($day == 7)
{
    echo 'Saturday';
}
if( $day == 8 )
{
    echo 'Sunday';
}
else
{
    echo 'Ban nhap khong thuoc tu khoang 2 -> 8';
}
?>

Bài của Bùi Thanh Tú dùng hoàn toàn các kiến thức đã học, tuy nhiên chương trình của bạn lại chạy không như ý muốn khi nhập các giá trị từ 1 đến 7 (Chương trình của bạn vừa xuất ra tên gọi tiếng Anh tương ứng với ngày đó và xuất ra luôn cả dòng chữ ‘Ban nhap khong thuoc tu khoang 2 -> 8‘).  Nguyên nhân là do dòng lệnh else bạn xử lý chưa đúng cách, đặt lệnh else như trong code của bạn thì trình thông dịch php.exe sẽ hiểu là else này gắn với if ngay phía trên, tức là nếu giá trị nhập vào không bằng 8 thì sẽ thực thi câu lệnh else bên dưới.

Code dưới đây sẽ giải quyết được vấn đề trên (chỉnh sửa lại từ code ban đầu của bạn Tú):

<?php
echo 'Nhap vao mot so bat ki tu 2 -> 8 :';
$day=trim(fgets(fopen('php://stdin','r')));
if($day>=2 && $day<=8)
{
	if($day==2)
	{
		echo 'Monday';
	}
	if($day==3)
	{
		echo 'Tuesday';
	}
	if($day==4)
	{
		echo 'Wednesday';
	}
	if($day==5)
	{
		echo 'Thursday';
	}
	if($day==6)
	{
		echo 'Friday';
	}
	if($day==7)
	{
		echo 'Sartuday';
	}
	if($day==8)
	{
		echo 'Sunday';
	}
}
else
{
	echo 'Ban nhap khong thuoc khoang 2->8';
}
?>

Bên cạnh đó, bài làm của bạn Lưu Minh Phương (Phượng!?) dưới đây thì cũng OK mặc dù hơi dài và nhìn vô hơi rối.

<?php
	echo 'Vui long nhap vao 1 so: '; $a=trim(fgets(fopen('php://stdin','r')));
	$b = (int)$a;
	if($b <= 0)
	{
		echo ' Vui long nhap so';
	}
	else
	{
		if ( $b < 2 || $b > 8 )
		{
			echo 'So nhap vao khong nam trong gioi hang tu 2 den 8';
		}
		else
		{
			if ($b == 2)
			{
				echo 'Ten tieng anh cua so vua duoc nhap vao la Monday';
			}
			else
			{
				if ($b == 3)
				{
					echo 'Ten tieng anh cua so vua duoc nhap vao la Tuesday';
				}
				else
				{
					if ($b == 4)
					{
						echo 'Ten tieng anh cua so vua duoc nhap vao la Wednesday';
					}
					else
					{
						if ($b == 5)
						{
							echo 'Ten tieng anh cua so vua duoc nhap vao la Thursday';
						}
						else
						{
							if ($b == 6)
							{
								echo 'Ten tieng anh cua so vua duoc nhap vao la Friday';
							}
							else
							{
								if ($b == 7)
								{
									echo 'Ten tieng anh cua so vua duoc nhap vao la Satuday';
								}
								else
								{
									echo 'Ten tieng anh cua so vua duoc nhap vao la Sunday';
								}
							}
						}
					}
				}
			}
		}
	}

?>

Bài 6.10: (Nguyễn Hồng Phúc – phucktb45)

Ý tưởng thì đã đúng, nhưng thiếu cẩn thận một chút cho nên lại trở thành sai… một cách không đáng có. Tiếc quá bạn Phúc ơi!

Bài của các bạn Thiệu, Việt DHT, Nguyễn Thị Hồng Hạnh và một số bạn khác làm hoàn toàn đúng và có số câu lệnh tốt nhất.

Trích Source Code của bạn Thiệu:

<?php
  echo 'Nhap vao 1 so bat ki tu 1 den 30: ';
  $input = trim(fgets(fopen('php://stdin','r')));

  $a1 = "One";
  $a2 = "Two";
  $a3 = "Three";
  $a4 = "Four";
  $a5 = "Five";
  $a6 = "Six";
  $a7 = "Seven";
  $a8 = "Eight";
  $a9 = "Nine";
  $a10 = "Ten";
  $a11 = "Eleven";
  $a12 = "Twelve";
  $a13 = "Thirteen";
  $a15 = "Fifteen";
  $a20 = "Twenty";

  if( ($input != (string)(int)$input) || ($input < 0) || ($input > 30) )
  {
      echo 'Du lieu nhap vao khong dung hoac khong nam trong khoang tu 1 den 30!';
  }
  else
  {    if( (($input < 16) && ($input != 14)) || ($input == 20) )
        {
            $number = 'a'.$input;
            echo $$number;
        }
        else
        {
            if($input < 20)
            {
                $number = 'a'.($input-10);
                echo $$number.'teen';
            }
            else
            {
                if($input < 30)
                {
                    $number = 'a'.($input-20);
                    echo 'Twenty-'.$$number;
                }
                else
                {
                    echo 'Thirty';
                }
            }
        }
  }
?>

Ý tưởng ở đây là: Từ 1 đến 30, có thể gom nhóm một số chữ số có cách đọc gần giống nhau lại thành từng nhóm như sau:

  • Nhóm từ 1 đến 13 và 15, 20, 30: viết ra cách đọc trực tiếp
  • Nhóm 14 và từ 16 đến 19: viết ra cách đọc bằng cách dùng các chữ số ở hàng đơn vị (4, 6, 7, 8, 9) và ghép với hậu tố “teen”
  • Nhóm từ 21 đến 29: viết ra chữ “Twenty-” rồi ghép với hậu tố là cách đọc các chữ số ở hàng đơn vị.

Bài của bạn Thiệu đã thể hiện và viết code thực hiện được đúng cách phân tích này rồi, nhưng cách chia nhóm hơi rối, MMun xin phép viết lại theo đúng tinh thần đã phân tích ở trên:

<?php

echo 'Nhap vao 1 so bat ki tu 1 den 30: ';
$input = trim(fgets(fopen('php://stdin','r')));

$a1    = 'One';      $a2    = 'Two';     $a3    = 'Three';     $a4 = 'Four';
$a5    = 'Five';      $a6    = 'Six';     $a7   = 'Seven';    $a8 = 'Eight';
$a9    = 'Nine';      $a10    = 'Ten';     $a11    = 'Eleven';  $a12 = 'Twelve';
$a13    = 'Thirteen'; $a15    = 'Fifteen'; $a20    = 'Twenty';  $a30 = 'Thirty';

if( ($input != (string)(int)$input) || ($input < 1) || ($input > 30) )
{
  echo 'Du lieu nhap vao khong dung hoac khong nam trong khoang tu 1 den 30!';
}
else
{
   // Trong khoang tu 1 den 13; hoac bang 15; hoac bang 20; hoac bang 30
   if( (($input <= 13)) || ($input == 15) || ($input == 20) || ($input == 30) )
   {
      $output = 'a'.$input; echo $$output;
   }

   // Hoac bang 14; hoac trong khoang tu 16 den 19
   else if( ($input <=14 ) || (($input >= 16) && ($input <= 19)) )
   {
      $output = 'a'.($input - 10); echo $$output, 'teen';
   }

   // Trong khoang tu 21 den 29
   else if( ($input >= 21) && ($input <= 29) )
   {
      $output = 'a'.($input - 20); echo 'Twenty-',$$output;
   }
}

?>

Code trên tuy đã rất đẹp nhưng vẫn chưa tối ưu, vì biểu thức điều kiện trong 2 vòng else if bị thừa. Code sau đây đã được tối ưu:

<?php

echo 'Nhap vao 1 so bat ki tu 1 den 30: ';
$input = trim(fgets(fopen('php://stdin','r')));

$a1    = 'One';      $a2    = 'Two';     $a3    = 'Three';     $a4 = 'Four';
$a5    = 'Five';      $a6    = 'Six';     $a7   = 'Seven';    $a8 = 'Eight';
$a9    = 'Nine';      $a10    = 'Ten';     $a11    = 'Eleven';  $a12 = 'Twelve';
$a13    = 'Thirteen'; $a15    = 'Fifteen'; $a20    = 'Twenty';  $a30 = 'Thirty';

if( ($input != (string)(int)$input) || ($input < 1) || ($input > 30) )
{
  echo 'Du lieu nhap vao khong dung hoac khong nam trong khoang tu 1 den 30!';
}
else
{
   // Trong khoang tu 1 den 13; hoac bang 15; hoac bang 20; hoac bang 30
   if( (($input <= 13)) || ($input == 15) || ($input == 20) || ($input == 30) )
   {
      $output = 'a'.$input; echo $$output;
   }

   // Hoac bang 14; hoac trong khoang tu 16 den 19
   else if( ($input <= 19) )
   {
      $output = 'a'.($input - 10); echo $$output, 'teen';
   }

   // Trong khoang tu 21 den 29
   else if( ($input <= 29) )
   {
      $output = 'a'.($input - 20); echo 'Twenty-',$$output;
   }
}

?>

Bên cạnh đó, bạn Thiệu cũng là người nộp bài làm sớm + hoàn thành 10 bài tốt nhất. Do vậy, phần quà kỳ này xin được trao cho bạn Thiệu. Chúc mừng Thiệu nhé!

Chi tiết các bài comment, các bạn vào đường link này để xem nhé (Bài comment sẽ nằm ngay trong topic mà các bạn đã nộp bài): http://nguyenngoclong.com/forum/index.php/topic,4.0.html

Leave a comment