







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}