







Preview text:
  lOMoAR cPSD| 60729183   Thiết Kế CTDL & GT 
Bài Tập Thực Hành Trên Lớp 
1, giải phương trình bậc 2 : ax2 + bx + c =0 
• Thiết kế cấu trúc dữ liệu    Kết quả :   
Thiết kế giải thuật , Sơ đồ khối :        lOMoAR cPSD| 60729183    
• Cài đặt giải thuật bằng ngôn ngữ C      lOMoAR cPSD| 60729183   #include #include  typedef struct { double a;   double b;   double c; }  QuadraticEquation; 
void solveQuadraticEquation(QuadraticEquation equation) { double delta = equation.b * 
equation.b - 4 * equation.a * equation.c;   if (delta > 0) { 
 double x1 = (-equation.b + sqrt(delta)) / (2 * equation.a); double x2 = (-equation.b - sqrt(delta))  / (2 * equation.a); 
 printf("Phuong trinh co 2 nghiem phan biet:\n");   printf("x1 = %f\n", x1);   printf("x2 = %f\n", x2);   } else if (delta == 0) { 
 double x = -equation.b / (2 * equation.a); 
 printf("Phuong trinh co nghiem kep:\n");   printf("x = %f\n", x);   } else { 
 printf("Phuong trinh vo nghiem.\n");   } } 
int main() { QuadraticEquation equation;     printf("Nhap he so a: "); 
 scanf("%lf", &equation.a);     printf("Nhap he so b: "); 
 scanf("%lf", &equation.b);     printf("Nhap he so c: "); 
 scanf("%lf", &equation.c);   
 solveQuadraticEquation(equation);     return 0;  }   
Tính độ phức tạp của thuật toán (o)      lOMoAR cPSD| 60729183 - Nhập dữ liệu a,b,c  - Tính Delta = b^2-4ac 
- Kiểm tra delta + delta > 0   +delta < 0   +delta = 0        lOMoAR cPSD| 60729183  
2 . Tìm Tất Cả Các Số Nguyên Tố Nhỏ Hơn N 
• Thiết kế cấu trúc dữ liệu  #include #include   typedef struct {  double a;   double b; 
 double c; } QuadraticEquation; void solveQuadraticEquation(QuadraticEquation 
equation) { double delta = equation.b * equation.b - 4 * equation.a * equation.c; if  (delta > 0) { 
 double x1 = (-equation.b + sqrt(delta)) / (2 * equation.a); double x2 = (-equation.b - sqrt(delta))  / (2 * equation.a); 
 printf("Phuong trinh co 2 nghiem phan biet:\n");   printf("x1 = %f\n", x1);   printf("x2 = %f\n", x2);   } else if (delta == 0) { 
 double x = -equation.b / (2 * equation.a); 
 printf("Phuong trinh co nghiem kep:\n");   printf("x = %f\n", x);   } else { 
 printf("Phuong trinh vo nghiem.\n"); 
 } } int main() { QuadraticEquation  equation; 
 // Thay đổi giá trị của hệ số a, b và c   equation.a = 2.0;   equation.b = 5.0;   equation.c = -5.0;   
 solveQuadraticEquation(equation);   return 0;  } 
Cài đặt giải thuật bằng ngôn ngữ C      lOMoAR cPSD| 60729183 #include  #include  #include #include 
int* createIntegerList(int N, int* size) { int* integerList = (int*)malloc(N *  sizeof(int));   *size = 0; 
 for (int i = 2; i < N; i++) {   bool isPrime = true; 
 for (int j = 2; j <= sqrt(i); j++) {   if (i % j == 0) {   isPrime = false;   break;   }   } 
 if (isPrime) { integerList[*size] = i;   (*size)++;   }   }   return integerList; } 
void destroyIntegerList(int* integerList) { free(integerList); } 
void printIntegerList(int* integerList, int size) { printf("Danh sach cac so nguyen to: "); 
 for (int i = 0; i < size; i++) { 
 printf("%d ", integerList[i]);   }   printf("\n"); }  int main() { int N;   printf("Nhap N: ");   scanf("%d", &N);   int size; 
 int* integerList = createIntegerList(N, &size); 
 printIntegerList(integerList, size);      lOMoAR cPSD| 60729183  
 destroyIntegerList(integerList);   return 0;  } 
• Tính độ phức tạp của thuật toán (o) 
a) Khai báo biến N, biến size, và mảng integerList. 
b) Nhập giá trị của N từ người dùng. 
c) Cấp phát bộ nhớ cho mảng integerList với kích thước N. 
d) Khởi tạo size bằng 0. 
e) Duyệt qua các số từ 2 đến N-1: 
o Kiểm tra xem số hiện tại có phải là số nguyên tố hay  không: 
i. Đặt biến isPrime bằng true. ii. Duyệt qua các số 
từ 2 đến căn bậc hai của số hiện tại: 
 Nếu số hiện tại chia hết cho một số 
trong khoảng này, đặt isPrime bằng 
false và thoát khỏi vòng lặp. 
 Nếu isPrime vẫn là true, thêm số 
hiện tại vào mảng integerList và tăng  size lên 1. 
f) In ra danh sách các số nguyên tố từ mảng integerList. 
g) Giải phóng bộ nhớ đã được cấp phát cho mảng integerList. 
h) Kết thúc chương trình. 
Thiết kế giải thuật , bằng giả mã : 
Để tìm tất cả các số nguyên tố nhỏ hơn một số nguyên N: 
 B1: bắt đầu từ số 2 , -> số nguyên tố đầu tiên 
 B2 : kiểm tra số 2 : từ 2 -> : không có số nào kiểm tra 
số 3 : từ 2-> : không có số nào kiểm tra số 4 : từ 4 ⋮ 2 
: 4 không phải là số nguyên tố 
 kiểm tra số 5 : 2 -> : không có số nào      lOMoAR cPSD| 60729183
 B3 : lặp lại b2 cho tất cả các số từ 6 -> n-1 
 B4 : kết quả là tập hợp các số nguyên tố nhỏ hơn n :{2,3,5}