Thứ Tư, 26 tháng 3, 2014

Bài tập mẫu về Perl

1) Nhập n và đếm số chẵn từ 1 tới n , hiển thị
PHP Code:
sub soChan{
    
$number scalar(@_[0]);
    if(
int($number%2)==0)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}

print 
"Nhap n: "$n int(<>);
for 
my $i (1..$n)
{
    if(
soChan($i) == 1)
    {
        print 
$i ";
        if(
$i<$n)
        {
            print 
",";
        }
    }
}  

2)Nhập n và đếm số nguyên tố từ 2 tới n , hiển thị 
sub checkNgTo{
    
$number int(@_[0]);
    
$count=0;

    if(
$number 2)
    {
        for 
my $i(1..$number)
        {
            if(
int($number $i)==0)
            {
                
$count++;


            }
        }
    }
    else
    {
        return 
0;
    }

    if(
$count == 2)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}

print 
"Nhap n: ";$n int(<>);
for 
my $i (2..$n)
{
    if(
checkNgTo($i) == 1)
    {
        print 
$i ";

    }
}

print 
"\n";  

3)Nhập n và tính tổng bình phương các số lẻ từ 1->n

sub soChan{
    
$number scalar(@_[0]);
    if(
int($number%2)==0)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}

print 
"Nhap n: "$n int(<>); $tong=0;
for 
my $i (1..$n)
{
    if(
soChan($i) == 0)
    {
        
$tong+=$i*$i;


    }
}
    print 
"Tong binh phuong cua cac so le tu 1 toi $n la : $tong ";
print 
"\n"

4)Nhập n và tính giai thừa

print "Nhap n: "$n int(<>); $gt=1;
for 
my $i (2..$n)
{

        
$gt*=$i;


}
    print 
"Giai thua cua $n la : $gt ";
print 
"\n";  
5)Nhập n và tính uscln , bscnn
PHP Code:
sub USCLN{
    
my $a=int(@_[0]);
    
my $b=int(@_[1]);
    if(
$a<0)
    {
        
$a=int(0-$a);
    }
    if(
$b<0)
    {
        
$b=int(0-$b);
    }

    if(
$a==0)
    {
        return 
$b;
    }
    if(
$b==0)
    {
        return 
$a;
    }
    while(
$a!=$b)
    {
        if(
$a>b)
        {
            
$a-=$b;
        }
        else
        {
            
$b-=$a;
        }
    }
    return 
$b;
}

print 
"\nNhap a: ";
$a=int(<>);
print 
"\nNhap b: ";
$b=int(<>);
$result=USCLN($a,$b);
print 
"USCLN cua $a va $b la : $result";
$result=($a*$b)/USCLN($a,$b);
print 
"\nBSCNN cua $a va $b la : $result";
print
"\n";


6)Nhập mảng gồm n phần tử , đếm số phần tử chẵn trong mảng

PHP Code:

@M1$dem=0;# Hàm tìm số chẵnsub soChan{
    
$value = @_[0];
    if(
int($value)%== 0)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}
print (
"Nhap n phan tu: "); $n int(<>);
for 
$i (0..$n-1)
    {
        print 
"\n Nhap phan tu thu [$i]: ";
        
$temp=<>;
        
push(@M1,$temp);
    }

for 
$i (0..$n-1)
    {
        if(
soChan(@M1[$i]) == 1){
            
$dem++;}
    }

print 
"\nCo $dem so phan tu chan trong mang\n"


7)Nhập mảng gồm n phần tử , in tổng số chẵn trong mảng
PHP Code:
@M1;$dem=0;$tong=0;# Hàm tìm số chẵnsub soChan{
    
$value = @_[0];
    if(
int($value)%== 0)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}
print (
"Nhap n phan tu: ");$n int(<>);
for 
$i (0..$n-1)
    {
        print 
"\n Nhap phan tu thu [$i]: ";
        
$temp=<>;
        
push(@M1,$temp);
    }

for 
$i (0..$n-1)
    {
        if(
soChan(@M1[$i]) == 1){
            
$tong+=@M1[$i];}
    }

print 
"\nTong so chan trong mang la : $tong\n";  
8)Nhập mảng gồm n phần tử , in mảng ra và cho phép nhập phần tử cần xóa , xóa phần tử và in mảng lại sau khi xóa
PHP Code:
sub xoaPhanTu{
    
$size = @_[0];
    
$valueDel = @_[1]; my $index 0;
while (
$index <= $size ) {
  
my $value $M1[$index];

  if ( 
$value == $valueDel ) {
    
splice @M1$index1;
  } else {
    
$index++;
  }
}

}

@
M1;
print (
"Nhap n phan tu: "); $n int(<>);
for 
$i (0..$n-1)
    {
        print 
"\n Nhap phan tu thu [$i]: ";
        
$temp=<>;
        
$temp=int($temp);
        
push(@M1,$temp);
    }


    print 
"M1: ";
for 
$i (0..$n-1)
    {

        print 
"@M1[$i] ";
    }
     
$valueDel;
print 
"\nNhap gia tri can xoa khoi mang : "$valueDel=int(<>); xoaPhanTu($#M1,$valueDel); print "\nMang sau khi xoa phan tu : ";
    for 
$i (0..$n-1)
    {

        print 
"@M1[$i] ";
    }
    print 
"\n";  
9)Nhập mảng gồm n phần tử , sắp xếp mảng tăng và giảm 
PHP Code:
# Cú pháp lệnh sắp xếp số
#     sort {$a<=>$b} your_arr = Sắp xếp tăng dần
#     sort {$b<=>$a} your_arr Sắp xếp giảm dần
     
@M1;
print (
"Nhap n phan tu: "); $n int(<>);
for 
$i (0..$n-1)
    {
        print 
"\n Nhap phan tu thu [$i]: ";
        
$temp=<>;
        
$temp=int($temp);
        
push(@M1,$temp);
    }




print 
"Mang chu sap xep: @M1";
print 
"\nSap xem tang dan:\n "my @sort sort{$a<=>$b} @M1;
print 
" @sort ";
print 
"\nSap xem giam dan:\n "my @sort sort{$b<=>$a} @M1;
print 
" @sort ";
print 
"\n";  
10)Nhập mảng gồm n phần tử , kiểm tra trong mảng có bao nhiêu số nguyên tố và đưa những số nguyên tố đó vào mảng 2 - Xuất M2 ra màn hình
PHP Code:
sub soNgTo{
    
$number int(@_[0]);
    
$count=0;

    if(
$number 2)
    {
        for 
my $i(1..$number)
        {
            if(
int($number $i)==0)
            {
                
$count++;
       
       
            }
        }
    }
    else
    {
        return 
0;
    }

    if(
$count == 2)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}
sub xuatMangM2{
    
$size = @_[0];
    for 
$i (0..$size)
    {
        
my $convert int(@M2[$i]);
        print 
"$convert  ";
    }
}




@
M1,@M2$dem=0;

print 
"Nhap so phan tu : "$n=int(<>);
for 
my $i (0..$n-1)
    {
        print 
"\n Nhap phan tu thu [$i]: ";
        
$temp=<>;
        
$temp=int($temp);
        
push(@M1,$temp);
    }


for 
my $i (0..$n-1)
    {
        if(
soNgTo(@M1[$i]) == 1)
        {
            
my $temp = @M1[$i];
            
push(@M2,$temp); # Đẩy số nguyên tố vào mảng M2
            
$dem++;
   
        }
    }


print 
"Co $dem so nguyen to trong mang M1 , nhung so do la: ";xuatMangM2($#M2);

    
print "\n";
11)Tạo một file với tên "HelloPerl.txt" và ghi vào đó nội dung "dtu.edu.vn"
PHP Code:
open (CreateNew,">HelloPerl.txt") or die "Khong the tao file";
print 
CreateNew "dtu.edu.vn" or die "Khong the ghi noi dung file"close CreateNew;
print 
"Da tao file thanh cong";
print 
"\n";  
12)Xóa hết nộp dung ghi trên file vừa tạo và ghi vào đó nội dung "Khoa CNTT DH Duy Tan"
PHP Code:
open (OpenFile,"HelloPerl.txt") or die "Khong the mo file"open (GhiDe,">HelloPerl.txt") or die "Khong the ghi de";
print 
GhiDe "Khoa CNTT DH Duy Tan" or die "Khong the ghi noi dung file"close GhiDeclose OpenFile;
print 
"Da ghi de thanh cong";
print 
"\n";  
13)Ghi đè nội dung file vừa tạo , thêm vào phía dưới câu "Nam hoc 2013-2014"
PHP Code:
open (OpenFile,"HelloPerl.txt") or die "Khong the mo file"open (GhiChen,">>HelloPerl.txt") or die "Khong the ghi chen";
print 
GhiChen "\nNam hoc 2013-2014" or die "Khong the ghi noi dung file"close GhiChenclose OpenFile;
print 
"Da ghi chen thanh cong";
print 
"\n";  
14)Nhập mảng gồm n phần tử , kiểm tra và ghi phần tử chẵn vào file "soChan.txt", ghi phần tử nguyên tố vào file "soNguyenTo.txt"
PHP Code:
sub soChan{
    
$number scalar(@_[0]);
    if(
int($number%2)==0)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}
sub checkNgTo{
    
$number int(@_[0]);
    
$count=0;

    if(
$number 2)
    {
        for 
my $i(1..$number)
        {
            if(
int($number $i)==0)
            {
                
$count++;
           
           
            }
        }
    }
    else
    {
        return 
0;
    }

    if(
$count == 2)
    {
        return 
1;
    }
    else
    {
        return 
0;
    }
}
$value;
@
arr;
do{
    print 
"Nhap so : ";
    
$value=<>;
    
$value=int($value);
    if(
$value > -1){
    
push(@arr,$value);
}
}while (
$value != -1);# Tạo file soChan.txt và file soNguyenTo.txt open (CreateSoChan,">soChan.txt"); open (CreateSoNguyenTo,">soNguyenTo.txt");# Kiểm tra số chẵn trong mảng và ghi vào file soChan.txt for $i (0..$#arr) {
    if(&
soChan(@arr[$i]) == 1# kiem tra so chan
    
{
   
        print 
CreateSoChan "@arr[$i]\n";
   
    }


close CreateSoChan;

for 
$i (0..$#arr) {
    if(&
checkNgTo(@arr[$i]) == 1# kiem tra nguyen to
    
{
   
        print 
CreateSoNguyenTo "@arr[$i]\n";
   
    }


}     
close CreateSoNguyenTo;


print 
"\n Ghi hoan tat";
print 
"\n";  
15)Đọc 2 thông tin từ file "soChan.txt" và "soNguyenTo.txt" ở trên, chép vào file "tongHop.txt"
PHP Code:
#Gop noi dung 2 file @file1,@file2;open (OpenSoChan,"soChan.txt") or die "Can't open "open (OpenSoNgTo,"soNgTo.txt") or die "Can't open "open $AddSoChan">""tongHop.txt" or die "Can't open 'tongHop.txt'\n";

for 
my $line (<OpenSoChan>)
{
    print 
$AddSoChan $line;
close OpenSoChanclose $AddSoChan;open $AddSoNgTo">>""$existingdir/ketQua.txt" or die "Can't open 'tongHop.txt'\n";

for 
$lines (<OpenSoNgTo>)
{
    print 
$AddSoNgTo $lines;
close OpenSoNgToclose $AddSoNgTo;  
16)Viết 1 đoạn perl script đọc file MetaCharacter.txt và kiểm tra trong file đó có từ DuyTan hay không ? Nếu có thì in ra còn nếu không thì báo "Không có!"
PHP Code:
open (Open,"MetaCharacters.txt") or die ("Can't open"); $check 0;
for 
$line (<Open>)
{
    if(
$line =~/DuyTan/)
    {
        print 
$line;
        
$check 1;
    }
}


if(
$check == 0)
{
    print 
"Khong co";
}
print 
"\n";  
17)Nhập vào file MetaCharacter thông tin sau
     DuyTan
     DuuuuuuyTan
     DyTan
     Yêu cầu viết script cho những tính năng sau
     - Hiển thị : DuyTan và DuuuuuuyTan
     - Hiển thị : DuyTan và DyTan
     - Hiển thị : DuyTan , DuuuuuuyTan và DyTan

PHP Code:
aopen (Open,"MetaCharacters.txt") or die ("Can't open"); $check 0;
for 
$line (<Open>)
{
    if(
$line =~/Du+y/)
    {
        print 
$line;
        
$check 1;
    }
}


if(
$check == 0)
{
    print 
"Khong co";
}
print 
"\n";

bopen (Open,"MetaCharacters.txt") or die ("Can't open"); $check 0;
for 
$line (<Open>)
{
    if(
$line =~/Du?y/)
    {
        print 
$line;
        
$check 1;
    }
}


if(
$check == 0)
{
    print 
"Khong co";
}
print 
"\n";copen (Open,"MetaCharacters.txt") or die ("Can't open"); $check 0;
for 
$line (<Open>)
{
    if(
$line =~/Du*y/)
    {
        print 
$line;
        
$check 1;
    }
}


if(
$check == 0)
{
    print 
"Khong co";
}
print 
"\n";  
18)Tạo 1 file addressWeb.txt trog đó có các địa chỉ sau
       http://www.example.com/test.php
       http://www.example.com/test.html
       www.example.com/test.html
       www.example.com/test.php
       Yêu cầu viết script chỉ hiển thị những dòng nào có đủ giao thức và link dưới dạng html

PHP Code:

# Chương trình đọc file địa chỉ web và hiển thị những địa chỉ có tồn tại trang html

# Tạo mới file và đẩy nội dung vào
open (CreateNew,">addressWeb.txt"); # Thêm nội dung cho trang web print CreateNew "http://google.com\n";
print 
CreateNew "http://google.com/test.html\n";
print 
CreateNew "http://google.com/test.html\n";
print 
CreateNew "http://google.com/test.html\n";
print 
CreateNew "1\n"close CreateNew;# Đọc file và in ra những dùng có tồn tại link htmlopen (OpenFile,"addressWeb.txt");
for 
$line (<OpenFile>)
$string $line;
if((
$string =~ /^http:/) and ($string =~ /html$/))
{
    print 
$string;
}

close OpenFile;  
19)Tạo 1 file soDienThoai.txt trong đó có nội dung như sau
      0511-345123
      0511-3613759
      05113-245125
      0511-2225198
      Yêu cầu viết script hiển thị những số điện thoại đúng chuẩn : xxxx-xxxxxx

PHP Code:
# CharacterClasses

# Chương trình đọc file và in ra danh sách số điện thoại theo mã vùng 0511


# Tạo mới 
open(CreateNewSDT,">phoneNumber.txt");
print 
CreateNewSDT "0511-113\n";
print 
CreateNewSDT "0608-22541\n";
print 
CreateNewSDT "0511-3613759\n";
print 
CreateNewSDT "0511-2225198\n"close CreateNewSDT;
# Đọc open (Read,"phoneNumber.txt");
for 
$line (<Read>)
{
    
$phone $line;
    if(
$phone =~ /\d{4}-\d{7}/)
    {
        
        print 
$phone;
        
    }
}  

Không có nhận xét nào:

Đăng nhận xét