Friday, September 26, 2014

Tổng hợp bài lập trình shell có lời giải

Sau đây là những bài tập lập trình shell mình muốn chia sẽ với bạn , những bài tập cơ bản trong lập trình shell
Tổng hợp bài lập trình shell

1. Giải Phương trình bậc 1  (ax +b=0)
 Cách làm như sau:
    + Bước 1 : nhập hệ số a
    + Bước 2 : Nhập hệ số b
    + Bước 3 : Kiểm tra if (a mà bằng 0 thì ta in ra cậu lệnh phương trình có vô số nghiệm)
    + Bước 4 : ngước lại a không bằng 0 thì in ra cậu lệnh phương trình có một nghiệm x1=-b/a;
Sau đây là đoạn chương trình

 #!/bin/bash
echo " Giai phuong trinh bac 1 (ax +b=c)"
echo "nhap a"
read a
echo "nhap b"
read b
if [ $a -eq 0 ]; then
echo " phuong trinh co vo so nghiem";
else
echo " phuong trinh co mot nghiem";
x=$(echo "scale=2; -$b/($a)"|bc);
echo $x;
fi

* Lưu ý : Các bạn nên nhớ cho mình một chổ nè. x=$(echo "scale =2; -$b/$a)" | bc)
scale : có nghĩa là bạn lấy kiểu dữ liệu float vd : 2.34 là bạn lấy 2 sô sau dấu phẩy.
2. Giả Phương Trình bậc 2 (ax2 +bx+c=0)
Cách làm như sau :

  •       Bước 1: nhập hệ số a,b,c
  •       Bước 2 : tính delta
  •       Bước 3 : kiểm tra hệ số a và b
  •       Bước 4 : kiểm tra delta
  •       Bước 5 : xuất ra nghiệm của phương trình
Code của chương trình :
#!/bin/bash
#include<math/h>
echo " giai phuong trinh bac 2"
echo -n " nhap he so a:"
read a
echo -n " nhap he so b :"
read b
echo -n " nhap he so c :"
read c
delta=$((($b*$b) -4*($a*$c)))
if [ $delta -lt 0 ]; then
echo " Phuong trinh vo nghiem"
elif [ $delta -eq 0 ]; then
echo " phuong trinh co mot nghiem ";
x1=$(((-$b) / $(2*$a)))
echo $x1
else
echo " phuong trinh co 2 nghiem Phan biet "
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
3 . Hệ Phương Trình bậc nhất 2 ẩn
Cách giải như sau :
Giải hệ phương trình bằng phương pháp thế :

        Bước 1 : chọn một phương trình biểu diễn nghiệm đơn gian nhất.

        Bước 2 : thế vào phương trình còn lại.
Giải hệ phương trình bằng phương pháp đại số :
       Bước 1 : cộng hay trừ từng vế hai phương trình của hệ phương trình cho ra phương trình mới.
       Bước 2 : dùng phương trình mới ấy thay thế cho một trong hai phương trình của hệ (và giữ nguyên phương trình kia).
Chương trình hệ phương trình bặc nhất trong linux
     + Bươc 1: nhập 6 hệ số a1,b1,c1 và a2,b2,c2;
     + Bước 2: Tính d,d1,d2
Ta làm như sau: 
+d=(a1*b2 -a2*b1)
+d1=(a1*c2-a2*c1)
+d2=(b1*c2 -b2*c1)
 + Bước 3: kiểm tra d==0 và d2==0  thì phương trình có vô số nghiêm hoặc phương trinh vô nghiêm
 + Bước 4: Tính các nghiệm
Code chương trinh hệ phương trình bậc nhất 2 ẩn nhu sau:
#!/bin/bash
#include<math/h>
echo "Nhap cac he so cua he phuong trinh "
echo "a1"
read a1
echo "b1"
read b1
echo "c1"
read c1
echo "a2"
read a2
echo "b2"
read b2
echo "c2"
read c2
echo " Tinh d, d1,d2"
d=$((($a1*$b2) -($b1*$a2)))
echo "$d"
d1=$((($a1*$c2)-($a2*$c1)))
echo "$d1"
d2=$((($c1*$b2)-($c2*$b1)))
echo $d2
if [ $d -eq 0 ]; then
 if [ $d1 -eq 0 - $d2 -eq 0]; then
  echo " Phuong trinh co vo so nghiem"
   else
  echo " phuong trinh vo nghiem"
 fi
else
 echo " Phuong trinh co 2 nghiem"
x1=$(echo "scale=2;$d1/$d"|bc)
echo "x1=$x1"
x2=$(echo "scale=2;$d2/$d"|bc)
echo "x2=$x2"
fi