lOMoARcPSD| 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 dliệu
Kết quả :
Thiết kế giải thuật , Sơ đồ khối :
lOMoARcPSD| 60729183
Cài đặt giải thuật bằng ngôn ngữ C
lOMoARcPSD| 60729183
#include <stdio.h> #include <math.h>
typedef struct { double a;
double b;
double c; }
QuadracEquaon;
void solveQuadracEquaon(QuadracEquaon equaon) { double delta = equaon.b *
equaon.b - 4 * equaon.a * equaon.c;
if (delta > 0) {
double x1 = (-equaon.b + sqrt(delta)) / (2 * equaon.a); double x2 = (-equaon.b - sqrt(delta))
/ (2 * equaon.a);
prin("Phuong trinh co 2 nghiem phan biet:\n");
prin("x1 = %f\n", x1);
prin("x2 = %f\n", x2);
} else if (delta == 0) {
double x = -equaon.b / (2 * equaon.a);
prin("Phuong trinh co nghiem kep:\n");
prin("x = %f\n", x);
} else {
prin("Phuong trinh vo nghiem.\n");
} }
int main() { QuadracEquaon equaon;
prin("Nhap he so a: ");
scanf("%lf", &equaon.a);
prin("Nhap he so b: ");
scanf("%lf", &equaon.b);
prin("Nhap he so c: ");
scanf("%lf", &equaon.c);
solveQuadracEquaon(equaon);
return 0;
}
Tính độ phức tạp của thuật toán (o)
lOMoARcPSD| 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
lOMoARcPSD| 60729183
2 . Tìm Tt Cả Các Số Nguyên TNhỏ Hơn N
Thiết kế cấu trúc dliệu
#include <stdio.h> #include
<math.h> typedef struct {
double a;
double b;
double c; } QuadracEquaon; void solveQuadracEquaon(QuadracEquaon
equaon) { double delta = equaon.b * equaon.b - 4 * equaon.a * equaon.c; if
(delta > 0) {
double x1 = (-equaon.b + sqrt(delta)) / (2 * equaon.a); double x2 = (-equaon.b - sqrt(delta))
/ (2 * equaon.a);
prin("Phuong trinh co 2 nghiem phan biet:\n");
prin("x1 = %f\n", x1);
prin("x2 = %f\n", x2);
} else if (delta == 0) {
double x = -equaon.b / (2 * equaon.a);
prin("Phuong trinh co nghiem kep:\n");
prin("x = %f\n", x);
} else {
prin("Phuong trinh vo nghiem.\n");
} } int main() { QuadracEquaon
equaon;
// Thay đổi giá trị của hệ số a, b và c
equaon.a = 2.0;
equaon.b = 5.0;
equaon.c = -5.0;
solveQuadracEquaon(equaon);
return 0;
}
Cài đặt giải thuật bằng ngôn ngữ C
lOMoARcPSD| 60729183
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h> #include <math.h>
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) { prin("Danh sach cac so nguyen to: ");
for (int i = 0; i < size; i++) {
prin("%d ", integerList[i]);
}
prin("\n"); }
int main() { int N;
prin("Nhap N: ");
scanf("%d", &N);
int size;
int* integerList = createIntegerList(N, &size);
printIntegerList(integerList, size);
lOMoARcPSD| 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 phải 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 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ã :
Để m tất cả các số nguyên tnhỏ hơn một số nguyên N:
B1: bắt đầu từ số 2 , -> số nguyên tố đầu ê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
lOMoARcPSD| 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 tnhỏ hơn n :2,3,5

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}