Thứ Tư, 13 tháng 11, 2013

Shell: Viết script tính can chi của năm dương lịch.

clear
echo "nam bang"
read nam
case `expr $nam % 10` in
    0)can="canh" ;;
    1)can="tan" ;;
    2)can="nham" ;;
    3)can="quy" ;;
    4)can="giap" ;;
    5)can="at" ;;
    6)can="binh" ;;
    7)can="dinh" ;;
    8)can="mau" ;;
    9)can="ky" ;;
esac
case `expr $nam % 12` in
    0)chi="than." ;;
    1)chi="dau." ;;
    2)chi="tuat." ;;
    3)chi="hoi." ;;
    4)chi="ty." ;;
    5)chi="suu." ;;
    6)chi="dan." ;;
    7)chi="mao." ;;
    8)chi="thin." ;;
    9)chi="ti." ;;
    10)chi="ngo." ;;
    11)chi="mui." ;;
esac
echo "$can - $chi"
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng

Shell: Viết Script tính tổng các số lẻ từ 1-n (n nguyên, nhập từ bàn phím)

clear
echo "n="
read n
i=1
tong=0
while [ $i -lt $n ]
do
  if [ `expr $i % 2` -ne 0 ]; then
      tong=`expr $tong + $i`
  fi
  i=`expr $i + 1`
done
echo "tong la: $tong"
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng lẻ

Shell: Viết chương trình Shell giải phương trình bậc nhất : Ax + B = 0 (a, b nguyên, nhập từ bàn phím)


clear
echo "Chuong trinh giai phuong trinh bac nhat"
echo "Nhap gia tri a = "
read a
echo "Nhap gia tri b = "
read b

if [ $a -eq 0 ];then
            if [ $b -eq 0 ];then
                        echo "Phuong trinh vo so nghiem"
            else
                        echo "Phuong trinh vo nghiem"
            fi
else
            x=$(echo "scale=3; (-$b)/$a" | bc)
            echo "Phuong trinh co 1 nghiem x = $x"
fi
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng, giải phương trình bậc nhất

Thứ Bảy, 9 tháng 11, 2013

Shell: Viết Script giải hệ phương trình bậc nhất 2 ẩn.

Ax + By = C
A1x + B1y = C1


hpt(){
          D=$(echo "scale=3; $1 * $5 - $2 * $4" | bc)
          Dx=$(echo "scale=3; $3 * $5 - $2 * $6" | bc)
          Dy=$(echo "scale=3; $1 * $6 - $3 * $4" | bc)
          if [ $D -ne 0 ];then
                   x1=$(echo "scale=3; $Dx/$D" | bc)
                   x2=$(echo "scale=3; $Dy/$D" | bc)
                   echo "Phuong trinh co nghiem duy nhat: x = ($x1,$x2)."
          elif [ $D -eq 0 ] && [ $Dx -eq 0 ] && [ $Dy -eq 0 ];then
                   echo "Phuong trinh vo so nghiem"
          else
                   echo "Phuong trinh vo nghiem"
          fi
}

hpt $1 $2 $3 $4 $5 $6

#Lưu ý: khi chạy admin@ubuntu~#/demo/bai1.sh  4 3 8 5 1 6

Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng, giải hệ phương trình bậc nhất 2 ẩn

Thứ Sáu, 8 tháng 11, 2013

Shell: Viết script in ra chuỗi đảo ngược từ chuỗi ban đầu.

Ví dụ: Chuỗi ban đầu: 123. Chuỗi đảo ngược: 321.
clear
echo -e -n "Nhap chuoi:\t"
read sau
h=${#sau}
until [ $h -le 0 ]
do     
          echo -n `expr substr $sau $h 1`
          h=$(($h - 1))
done
echo -e "\n"
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng, in chuỗi, chuỗi đảo ngược

Shell: Viết script tính tổng các chữ số của 1 số nguyên được nhập vào từ bàn phím.

clear
t=1
while [ $t -eq 1 ]
do
          clear
          echo -e -n "Nhap so:\t"
          read so

          if [ ${#so} -eq 3 ]; then
                   a=$(($so % 10))
                   b=$((($so / 10) % 10))
                   c=$((($so / 100) % 10))
                   echo -en "Tong cac ky so la: `expr $a + $b + $c`"
          else
                   echo -en "\nNhap so trong pham vi tu 100 -> 999."
          fi
         
          while [ $t -ne 0 ]
          do
                   echo -en "\nBan co muon tiep tuc? (Nhap 0 hoac 1)\t"
                   read t
                   if [ $t -eq 1 ];then
                             break
                   fi
          done
done
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng

Shell: Viết script tìm số lớn nhất, nhỏ nhất trong 3 số được nhập từ dòng lệnh

clear
declare -a a
a=( [0]=$1 [1]=$2 [2]=$3 )
max=${a[0]}
min=${a[0]}
l=${#a[*]}
for ((i=0;i<$l;i++))
do
          if [ $max -le ${a[i]} ];then
                   max=${a[i]}
          else
                   min=${a[i]}
          fi
done
echo "Phan tu lon nhat la: $max"
echo "Phan tu nho nhat la: $min"

#Chạy lệnh:” admin@ubuntu~#/demo/test.sh 5 2 9 

JavaScript: Kiểm tra số n (nguyên, nhập từ bàn phím) có phải số nguyên tố không ?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<script>
var i,n,nt=1;
function nguyento(x){
if(x==1 || x==2) nt=1;
if(x>2){
for(i=2;i<=Math.sqrt(x);i++){
if(x%i==0){nt=0; break;}
}
}
return nt;
}
n=prompt("Nhap gia tri n:");
if(nguyento(n)==1) document.write(n + " LA so nguyen to")
else document.write(n + " KHONG la so nguyen to")
</script>
</body>
</html>

Thứ Hai, 4 tháng 11, 2013

JavaScript: Tìm UCLN, BCNN của 2 số a, b (nguyên, nhập từ bàn phím)

<html>
<head>
<title>UCLN</title>
</head>
<body>
<script language="JavaScript">
var a,b;
function UCLN(x,y){
while(x!=y)   {
            if(x>y) x=x-y;
            else y=y-x;
}
return x;
}
a=prompt("Nhap gia tri a:");
b=prompt("Nhap gia tri b:");
document.write("Uoc chung lon nhat: " + UCLN(a,b))
document.write("Boi chung nho nhat: " + a*b/UCLN(a,b))
</script>
</body>
</html>
Tags: Lập trình, JavaScript, BCNN, UCLN

Thứ Hai, 21 tháng 10, 2013

Shell: Viết chương trình Shell vẽ hình tam giác cân


# Lập trình Shell: Viết chương trình Shell vẽ hình tam giác cân
#!/bin/sh
echo "Chuong trinh ve hinh tam gia can dat"
height=$1
ktrang=$1
for ((i=1;i<=height;i++))
do
          for ((kt=ktrang; kt>=1; kt--))
          do
                   echo -n " "
          done

          for ((j=1; j<=i; j++))
          do
                   echo -n "* "
          done
          ktrang=$(($ktrang-1))
          echo ""       
done
echo "The end"

exit 0
Tags: Lập trình, shell script, shells, bash shell

Shell: Viết chương trình Shell giải phương trình bậc hai : ax2 + bx + c = 0 (a, b, c nhập từ bàn phím)


#Viết chương trình Shell giải phương trình bậc hai : ax2 + bx +c =0 với các tham số a, b, c nhập từ bàn #phím. và kết quả chính xác đến 2 chữ số.
Tải mã nguồn chương trình

#!/bin/bash
echo -n "Nhap a= "
read a
echo -n "Nhap b= "
read b
echo -n "Nhap c= "
read c

delta=$(echo "$b^2 - 4*$a*$c" | bc)
if [ $delta -lt 0 ] then
     echo "pt vo nghiem"
elif [ "$delta" -eq 0 ] then
     echo -n "pt co nghiem kep x= "
     x=$(echo "scale=2; -$b/(2*$a)" | bc)
     echo "$x"
else
     echo "phuong trinh co 2 nghiem"
     x1=$(echo "scale=2; -($b + sqrt($delta))/(2*$a)" | bc)
     echo "x1= $x1"
     x2=$(echo "scale=2; -($b - sqrt($delta))/(2*$a)" | bc)
     echo "x2= $x2"
fi
exit 0

Tải mã nguồn chương trình

Thứ Hai, 14 tháng 10, 2013

JavaScript: Giải phương trình bậc hai Ax2 + Bx + C = 0


<html>
<head>
<title>Giai phuong trinh bac 2</title>
<script language="JavaScript">
function giai(form){
var x1,x2;
var x,y,z,delta;
x= parseInt(form.a.value);
y= parseInt(form.b.value);
z= parseInt(form.c.value);
delta=(y*y-4*x*z)
if(delta ==0){
alert("phuong trinh co nghiem kep");
x1=-y/(2*x) ;
x2=-y/(2*x);
form.x.value=eval(x1);
form.y.value=eval(x2);
}
else if(delta<0){
alert("phuong trinh vo nghiem");

else{
alert("phuong trinh co hai nghiem");
x1=(-y-Math.sqrt(delta))/(2*x);
x2=(-y+Math.sqrt(delta))/(2*x);
form.x.value=eval(x1);
form.y.value=eval(x2);
}
}
</script>
</head>
<body>
<form method="post">
<center>
<br>Nhap gia tri a:
<input type="text" name="a" value="">
<br> Nhap gia tri b:
<input type="text" name="b" value="">
<br>Nhap gia tri c:
<input type="text" name="c" value="">
<br>Đáp số:
<input type="text" name="x" value="">
<input type="text" name="y" value="">
<input type="button" value="giai" onClick="giai(this.form)">
</center>
</form>
</body>
</html>
[Download Mã nguồn: Chờ 5s, sau đó nhấn SKIP AD (để bỏ qua Quảng cáo)]

JavaScript: Giải phương trình bậc nhất Ax + B = 0


<html>
<head>
<title>giai phuong trinh bac 1</title>
<script language="JavaScript">
function giai(form){
var x;
var a,b;
a= parseInt(form.a.value);
b= parseInt(form.b.value);

if(a==0){
if(b==0) alert("phuong trinh vo so nghiem");
else alert("phuong trinh vo nghiem");
}
else{ 
alert("phuong trinh co 1 nghiem");
x=-b/a;
form.x.value=eval(x);
}
}
</script>
</head>
<body>
<form method="post">
<center>
<br>Nhap gia tri a:
<input type="text" name="a" value="">
<br> Nhap gia tri b:
<input type="text" name="b" value="">

<br>Đáp số:
<input type="text" name="x" value="">
<input type="button" value="giai" onClick="giai(this.form)">
</center>
</form>
</body>
</html>
[CLICK Download Mã nguồn: Chờ 5s, sau đó nhấn SKIP AD (để bỏ qua Quảng cáo)]

JavaScript: Code tạo chương trình máy tính điện tử


<html>
<head><script LANGUAGE="JavaScript">
function a_plus_b(form) {
            a=eval(form.a.value)
            b=eval(form.b.value)
            c=a+b
            form.ans.value = c
}
function a_minus_b(form) {
            a=eval(form.a.value)
            b=eval(form.b.value)
            c=a-b
            form.ans.value=c
}
function a_times_b(form) {
            a=eval(form.a.value)
            b=eval(form.b.value)
            c=a*b
            form.ans.value=c
}
function a_div_b(form) {
            a=eval(form.a.value)
            b=eval(form.b.value)
            c=a/b
            form.ans.value = c
}
function a_pow_b(form) {
            a=eval(form.a.value)
            b=eval(form.b.value)
            c=Math.pow(a, b)
            form.ans.value = c
}
</script>
<title>May tinh don gian</title>
</head>
<body>
<form name="formx">
<p><input type="text" size="4" value="12" name="a">
<input type="button" value="  + " onClick="a_plus_b(this.form)">
<input type="button" value="  -  " onClick="a_minus_b(this.form)">
<input type="button" value="  x  " onClick="a_times_b(this.form)">
<input type="button" value="/  " onClick="a_div_b(this.form)">
<input type="button" value="  ^  " onClick="a_pow_b(this.form)">
<input type="number" size="4" value="3" name="b"> =
<input type "number" value="0" name="ans" size="9"> </p>
</form>
</body>
</html>
Tags: Lập trình, JavaScript, máy tính điện tử

Thứ Sáu, 11 tháng 10, 2013

Open Source: Những câu lệnh và thao tác hữu ích trong Ubuntu


Những thao tác và thủ thuật dưới đây có thể sẽ hữu ích cho bạn khi sử dụng Ubuntu cả 2 phiên bản Desktop và Server.
1. sudo: khi sudo được đi kèm trước một dòng lệnh nó sẽ gọi quyền root để thực thi câu lệnh đó, và khi thực thi xong nó sẽ trả lại quyền của user bạn đang dùng.
a. sudo apt-get install package_name: apt-get install sẽ tiến hành cài đặt gói phần mềm và bạn muốn cài đặt phần mềm gì thì thay package_name bằng tên của gói phần mềm cần cài đặt. Và bạn gọi sudo ở trước câu lệnh để yêu cầu quyền cài đặt của người dùng cao nhất ở đây là root hoặc xác nhận từ chính bạn nếu tên người dùng của bạn thuộc nhóm người dùng root.
VD: sudo apt-get install rar
b. sudo apt-get remove package_name: ngược lại của apt-get install, apt-get remove sẽ gỡ bỏ một gói phần mềm nào đó trong Ubuntu. Thay package_name bằng gói phần mềm bạn muốn gỡ bỏ.
VD: sudo apt-get remove rar
2. touch: tạo một file mới.
VD: touch hello.txt
&&: 2 ký từ && đi liên tiếp sẽ giúp bạn thực thi 2 câu lệnh với 1 dòng lệnh, tất nhiên nó sẽ thực thi 1 lệnh trước sau đó sẽ đến lệnh thứ 2. Câu lệnh dưới sẽ dùng touch để tạo một file mang tên helloworld.txt và sau đó sẽ dùng vi để mở và thêm nội dung vào file helloworld.txt
VD: touch helloworld.txt && vi helloworld.txt
3. wget download file dòng lệnh trên một host internet .
VD: wge http://getdeb.agetta.de/ubuntu/hardy…etdeb1_all.deb
4. dpkg: quản lý các gói phần mềm trong Ubuntu, muốn cài đặt 1 gói phần mềm bạn chỉ cần thêm vào tham số -i. Muốn gỡ bỏ thêm vào tham số -r. Bạn cần thêm lệnh sudo để có quyền tiến hành câu lệnh.
VD: dpkg -i ubuntu-tweak_0.3.5-1~getdeb1_all.deb #Sẽ cài đặt gói Ubuntu-Tweak
dpkg -r rar #Sẽ gỡ bỏ rar
5. ifconfig: các thông kết nối mạng và cấu hình mạng của máy.
6. ping: kiểm tra sự tồn tại của một máy tính nào đó trong mạng.
VD: ping 192.168.1.1
7. whereis: nếu bạn muốn biết một câu lệnh nằm ở đâu trong Ubuntu bạn chỉ gần gõ whereis câu lệnh
VD: whereis ls
8. find: tìm kiếm một tập tin. Câu lệnh dưới sẽ tìm trong đường dẫn thư mục /home/vunguyen tham số -name để tìm theo tên file và nếu như bạn muốn tìm file có đuôi là .txt thì chỉ gần thêm dấu * trước phần tên file mở rộng.
VD: find /home/vunguyen/ -name “*.txt”
9. uname -a: chỉ cần gõ là bạn sẽ biết được version của Linux kernel mà bạn đang sử dụng.
cat /etc/issue: phiên bản hiện tại của Ubuntu bạn đang dùng.
10. shutdown:
sudo shutdown -h now
sudo init 0
sudo halt

Thứ Ba, 1 tháng 10, 2013

Code C-C++: Các bài toán xử lý chuỗi (string) - (Phần 2)


1. Viết chương trình đổi những kí tự đầu tiên của mỗi từ thành chữ in hoa.
void chuhoadau(char *s){
    s[0]=toupper(s[0]);
while(strstr(s," ")!=NULL){
    s=strstr(s," ")+1;
    s[0]=toupper(s[0]);
} 
}

2. Viết chương trình đổi chữ xen kẻ 1 chữ hoa và 1 chữ thường.
Ví dụ: nhập ABCDEfgh đổi thành AbCdEfGh
void chuxenke(char *a){
  int n=strlen(a);
for(int i=0;i<n;i++){
  if(i%2==0)
  if((int)a[i]>=97 && (int)a[i]<=122)
     a[i]=char((int)a[i]-32);
     if(i%2==1)
     if((int)a[i]>=65 && (int)a[i]<=90)
     a[i]=char((int)a[i]+32);
} 
  puts(a);
}

3. Viết chương trình  đảo ngược các kí tự trong chuỗi.
Ví dụ: nhập ABCDE, xuất ra màn hình là:EDCBA
void daochuoi(char *s)
{   
puts(strrev(s)); 
}

4. Viết chương trình tìm kiếm 1 kí tự xem có trong chuỗi không, nếu có xuất ra vị trí của từ chứ kí tự  đó. (Vd: xâu a là “ho chi minh”: nhập ‘m’=>kết quả là 3)

int vitri(char *a,char *b){
int kq,d=0;
if(strstr(a,b)!=NULL){
kq=strlen(a)-strlen(strstr(a,b));
for(int i=kq;i>=0;i--)
if(a[i]==' ')
d++;
return d+1;
}
else return -1;
}

5. Viết 1 chương trình đếm một kư tự  xuất hiện bao nhiêu lần trong chuỗi.(vd: xâu a nhập là “ho chi minh”, nhập ‘i’ => kq: 2)
int diemtu(char *a,char *b){
int d=0;
while(strstr(a,b)!=NULL){
d++;
a=strstr(a,b)+1; 
} 
return d;
}
Tags: Lập trình, C, C++, C#, String, string, xử lý chuỗi

Thứ Hai, 30 tháng 9, 2013

Code C-C++: Các bài toán xử lý chuỗi (string) - (Phần 1)


1. Đếm có bao nhiêu khoảng trắng trong chuỗi (string)
int demkhoangtrang(char *s){
int d=0;
while(strstr(s," ")!=NULL){
   d++;
   s=strstr(s," ")+1;
}
return d;

}
2. Nhập vào một chuỗi, hãy loại bỏ những khoảng trắng thừa trong chuỗi (string).
void xoakhoangtrang(char *s){   
char *c=strstr(s,"  "); 
while(c!=NULL){
int t=strlen(s)-strlen(c);
for(int i=t;i<strlen(s);i++)
   s[i]=s[i+1];
   c=strstr(s,"  ");
}
if(s[0]==' ')
   s=s+1; //xoa khang trang dau chuoi
   int n=strlen(s);
   if(s[n-1]==' ')
   s[n-1]='\0';//xoa khoang trang cuoi chuoi
       cout<<s;  //for(int i=0;i<n;i++)

//cout<<s[i];
3. Nhập vào hai chuỗi s1 và s2, nối chuỗi s2 vào s1. Xuất chuỗi (string) s1 ra màn hình
void noichuoi(char *a,char *b){
   strcat(a,b);
   puts(a); 
}
4. Đổi tất cả các kí tự (string) có trong chuỗi thành chữ thường (không dùng hàm strlwr).
void chuthuong(char *a)
{
    for(int i=0;i<strlen(a);i++)
        if(a[i]>=65 && a[i]<=90)
            a[i]=a[i]+32;
        puts(a);                        
}
5. Đổi tất cả các kí tự (char) trong chuỗi sang chữ in hoa (không dùng hàm struppr).
void chuhoa(char *a)
{
for(int i=0;i<strlen(a);i++)
a[i]=toupper(a[i]); 
puts(a);                       
}

Bài đăng phổ biến