Hãy cho một số ví dụ ca kiểm thử:

3. Một số kinh nghiệm thực hành gỡ lỗi chương trình

Câu hỏi. Hãy cho một số ví dụ ca kiểm thử:

1) Chương trình giải phương trình bậc hai.

2) Chương trình tính đếm (tính tổng, tính trung bình cộng....) các số dương trong một mảng số thực.


a) Gợi ý:

Ý tưởng

  • Dùng một vòng do while để nhập a, b, c nếu a = 0, thì nhập lại.
  • Chúng ta dùng hàm sqrt() trong thư viện math.h để tính căn delta hoặc tính căn không dùng hàm sqrt()tại đây.
  • Chúng ta tạo hàm giaiPT trả về kiểu int chính là số nghiệm của phương trình (1).
  • Chúng ta sẽ đưa tham chiếu 2 biến x1 , x2 vào hàm giaiPT để gán giá trị hai nghiệm.
  • Nếu pt (1) vô nghiện thì giaiPT sẽ trả về 0 , đồng thời gán x1 = x2 =0 .
  • Nếu pt (1) có nghiệm kép thì giaiPT sẽ trả về 1 , đồng thời gán x1 = x2 = -b/2a .
  • Nếu pt (1) có 2 nghiệm thì giaiPT sẽ trả về 2 , gán x1 = (-b+√delta ) / 2a  x = (-b-√delta ) / 2a .

b) Gợi ý:

#include <iostream>
using namespace std;
void nhap(int &n, int a[]){
    for(int i=0;i<n;i++){
        cout<<"a["<<i+1<<"]= ";cin>>a[i];
    }
}
void xuat(int n, int a[]){
    for(int i=0;i<n;i++){
        cout<<a[i]<<"  ";
    }  
}
 int tinhTBCongint (int n, int a[]){
    int sum=0, dem=0;
    for(int i=0;i<n;i++){
       sum+=a[i]; dem++; 
    }
    return sum/n;
}
int tinhTBCongDuong(int n, int a[]){
    int sum=0, dem=0;
    for(int i=0;i<n;i++){
        if(a[i] > 0) {
            sum+=a[i]; dem++;
        }
    }
    if(dem==0) return 0;
    return sum/dem;
}
int tinhTBCongAm(int n, int a[]){
    int sum=0, dem=0;
    for(int i=0;i<n;i++){
        if(a[i]<0) {
            sum+=a[i]; dem++;
        }
    }
    if(dem==0) return 0;
    return sum/dem;
}
int main(){
    int n;
    int a[100];
    do{
        cout<<"Nhap n: "; cin>>n;
    }while(n <= 0 || n >=100);
    nhap(n,a);
    cout<<"\n--------XUAT MANG----\n";
    xuat(n,a);
    cout<<"Trung binh cong: "<<tinhTBCongint(n,a)<<"\n\n";
    cout<<"Trung binh so duong: "<<tinhTBCongDuong(n,a)<<"\n\n";
    cout<<"Trung binh so am: "<<tinhTBCongAm(n,a)<<"\n\n";
}

Bình luận

Giải bài tập những môn khác