Đang tải... (xem toàn văn)
BÀI 2: ĐỐIVỚIMỘTTỆPCÓCẤUTRÚCSAU:...10- DÒNGĐẦUTIÊN GHI SỐPHẦN TỬCỦAMẢNG...10- CÁCDÒNGCÒNLẠI CHỨA PHẦNTỬ NGUYÊN...10VIẾTCHƯƠNGTRÌNHĐỌCFILE TÌM, CÁCSỐ NGUYÊN TỐ TÍNH TỔNG CÁC SỐ NGUYÊN TỐ
Trang 1TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP NMHĐHHK2, 2022-2023
Lab 4
Trang 2BÀI 2: ĐỐIVỚIMỘTTỆPCÓCẤUTRÚCSAU: 10
- DÒNGĐẦUTIÊN GHI SỐPHẦN TỬCỦAMẢNG 10
- CÁCDÒNGCÒNLẠI CHỨA PHẦNTỬ NGUYÊN 10
VIẾTCHƯƠNGTRÌNHĐỌCFILE TÌM, CÁCSỐ NGUYÊN TỐ TÍNH TỔNG CÁC SỐ NGUYÊN TỐ NÀY VÀ XUẤT RA FILE KẾT QUẢ CÓ CẤU ,
TRÚC NHƯ SAU: 10
- DÒNGĐẦUTIÊN CHỨA SỐNGUYÊNTỐ CÓ TRONG MẢNG .10
- DÒNGTIẾPTHEO XUẤTRASUM TỔNG = CÁCSỐ NGUYÊN TỐ 10
- DÒNGTẠORACÁCSỐ NGUYÊN TỐ TÌM ĐƯỢC .10
- DÒNGSỐ NGUYÊN TỐTIẾPTHEO SẮP TĂNG 10
XUẤTRATỆPKẾTQUẢVỚI CẤU TRÚC SAU: 13
- DÒNGĐẦUTIÊN GHI SỐPHẦN TỬ 13
- DÒNGTIẾPTHEO CHỨA SỐNHỎNHẤT 13
- DÒNGTIẾPTHEO GHI SỐLỚN NHẤT 13
- DÒNGĐỂ XUẤTCÁCPHẦN TỬCỦAMẢNG 13
A: CODE HƯƠNG RÌNH C T 13
B: Kết Quả Demo: 15
C KẾT LUẬN 16
Trang 4A PH N TH C HÀNHẦỰ
Ví D 1: ụ Chờ ti n trình conếA: Code Chươ ng Trình
// vd1.c
#include <stdio.h>#include <unistd.h>
int main(int argc, char *argv[]){
int pnum, count, retval, child_no; pnum = atoi(argv[1]);
if (pnum <= 0) {
printf("tien trinh = 0"); return -1;
} else {
retval = 1; /*tao tien trinh*/
for (count = 0; count < pnum; count++) {
if (retval != 0) {
retval = fork(); }
else { break; } }
/*Thuc thi cua tien trinh con*/ if (retval == 0)
{
Trang 5child_no = count;
printf("Tien trinh so: %d, PID: %d\n", child_no, getpid()); }
else {
/*waiting for children termination*/ for (count = 0; count < pnum; count++) {
wait(NULL); }
printf("ID tien trinh cha: %d\n", getpid()); }
} return 0;}
B: K t Qu Demoế ả
Ví D 2: ụ ứCh c năng th c hi n m t chự ệ ộ ươ ng trìnhA: Code Chươ ng Trình
Trang 6printf("Call system to execute ls -a\n"); re = system("ls -a");
if(re != -1) {
printf("Call ls -a OK!\n"); }
printf("Call system to execute ps -a\n"); re = system("ps -a");
if(re != -1) {
printf("Call ps -a OK!\n"); }
return 0;}
B: K t Qu Demoế ả
Ví D 3: ụ Thao tác t p tinậA: Code Chươ ng Trình//vd3.c
#include <unistd.h>#include <stdio.h>#include <stdlib.h>
int main(int argc, char *argv[]){
int c;
FILE *in, *out; in = fopen(argv[1], "r");
Trang 7out = fopen(argv[2], "w"); while((c = fgetc(in)) != EOF) {
fputc(c, out); }
return 0;}
int main(int argc, char *argv[]){
int c, num, count = 0, i = 0; int ar[100];
FILE *in, *out; in = fopen(argv[1], "r"); fscanf(in, "%d", &num); while (i < num) {
fscanf(in, "%d", &c); ar[i] = c;
i = i + 1; } fclose(in);
Trang 8return 0;}
#include <stdio.h>#include <stdlib.h>
int main(int argc, char *argv[]) { if (argc != 3) {
printf("Sử dụng: %s tệp_nguon tệp_dich\n", argv[0]);
Trang 9return 1; }
char *tep_nguon = argv[1]; char *tep_dich = argv[2];
FILE *tep_nguon_fp = fopen(tep_nguon, "rb"); if (tep_nguon_fp == NULL) {
perror("Lỗi khi mở tệp nguồn"); return 1;
}
FILE *tep_dich_fp = fopen(tep_dich, "wb"); if (tep_dich_fp == NULL) {
perror("Lỗi khi mở tệp đích"); fclose(tep_nguon_fp); return 1;
}
char buffer[1024]; size_t so_byte_doc;
while ((so_byte_doc = fread(buffer, 1, sizeof(buffer), tep_nguon_fp)) > 0) { fwrite(buffer, 1, so_byte_doc, tep_dich_fp);
}
fclose(tep_nguon_fp); fclose(tep_dich_fp);
printf("Sao chép tệp thành công từ %s đến %s\n", tep_nguon, tep_dich); return 0;
}
Trang 10Vi t ch ng trình đ c file, tìm các s nguyên t , tính t ng các s
nguyên t này và xu t ra file k t qu có c u trúc nh sau:ố ấ ế ả ấ ư- Dòng đ u tiên ch a s nguyên t có trong m ngầ ứ ố ố ả- Dòng ti p theo xu t ra sum = t ng các s nguyên tế ấ ổ ố ố- Dòng t o ra các s nguyên t tìm đạ ố ố ượ c.
- Dòng s nguyên t ti p theo s p tăngố ố ế ắA: Code Chươ ng Trình:
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>
Trang 11// Hàm kiểm tra xem một số có phải là số nguyên tố hay khôngbool isPrime(int n) {
if (n <= 1) { return false; }
for (int i = 2; i * i <= n; i++) { if (n % i == 0) {
return false; }
} return true;}
fscanf(inputFile, "%d", &n); int primeSum = 0;
primeSum += num; primes[primeCount] = num; primeCount++;
Trang 12} }
// Lưu kết quả vào tệp f2
fprintf(outputFile, "%d\n", primeCount); fprintf(outputFile, "Sum = %d\n", primeSum); for (int i = 0; i < primeCount; i++) {
fprintf(outputFile, "%d ", primes[i]); }
fprintf(outputFile, "\n");
// Tìm và lưu danh sách các số nguyên tố còn lại for (int num = 2; primeCount > 0; num++) { if (isPrime(num)) {
fprintf(outputFile, "%d ", num); primeCount ;
} }
fclose(inputFile); fclose(outputFile); return 0;}
B: K t Qu Demo:ế ả
Trang 13BÀI : Vi t ch3ế ươ ng trình th c hi n các nhi m v sau:ự ệ ệ ụ- Nh p s ph n t m ng nậ ố ầ ử ả
- Nh p m ng n ph n t là các s nguyên t ng u nhiên nh
h n 1000 (dùng hàm rand)ơ
- Tìm s nh nh tố ỏ ấ
Xu t ra t p k t qu v i c u trúc sau:ấ ệ ế ả ớ ấ
- Dòng đ u tiên ghi s ph n tầ ố ầ ử- Dòng ti p theo ch a s nh nh tế ứ ố ỏ ấ- Dòng ti p theo ghi s l n nh tế ốớ ấ- Dòng đ xu t các ph n t c a m ng.ể ấ ầ ử ủ ảA: Code Chươ ng Trình
// bai3.c
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <time.h>
// Hàm kiểm tra xem một số có phải là số nguyên tố hay khôngbool isPrime(int n) {
if (n <= 1) { return false; }
for (int i = 2; i * i <= n; i++) { if (n % i == 0) {
return false; }
} return true;}
Trang 14primeArray[primeCount] = num; primeCount++;
} }
// Tìm số nhỏ nhất trong mảng int smallest = primeArray[0]; for (int i = 1; i < n; i++) { if (primeArray[i] < smallest) { smallest = primeArray[i]; }
}
// Ghi kết quả vào tệp văn bản FILE *outputFile = fopen("f2", "w"); if (outputFile == NULL) {
perror("Lỗi khi mở tệp"); return 1;
}
Trang 15fprintf(outputFile, "%d\n", n);
fprintf(outputFile, "Số nhỏ nhất: %d\n", smallest); fprintf(outputFile, "Dãy số nguyên tố:\n"); for (int i = 0; i < n; i++) {
fprintf(outputFile, "%d ", primeArray[i]); }