Kết quả của chương trình sau là gì include void main int ij for i 1 i 4 i j i printf 3d j

View Full Version : Bài tập giải thuật | Bài tập thuật toán cơ bản


hailoc12

05-08-2006, 01:35 PM

1. Ý TƯỞNG THUẬT TOÁN • Xét 3 hệ số của phương trình trước hết xét a=0 hoặc a khác 0 a. TH1 : a=0 - Ta xét thêm b =0 hay khác 0 . Nếu a=0 mà b=0 thì phương trình không xác định . Nếu b khác 0 thì giải bài toán giống như giải phương trình bậc nhất . b. TH2 : a khác 0 - Ta tính Delta và xét Delta đưa ra nghiệm của pt - Nếu Delta < 0 : Phương trình vô nghiệm - Nếu Delta = 0 : Phương trình có nghiệm kép - Nếu Delta > 0 : Phương trình có hai nghiệm phân biệt . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : • a , b ,c là ba hệ số của phương trình . • Delta là biến dùng để lưu giá trị Delta sau khi tính . • x1,x2 : là nghiệm của phương trình nếu pt có 2 nghiệm phân biệt • x : là nghiệm nếu phương trình chỉ có một nghiệm mà thôi 3. BÀI GIẢI : #include #include #include void main () { clrscr(); float a,b,c,delta; printf("ban hay nhap a,b,c vao "); scanf("%f%f%f",&a,&b,&c);// cac he so cua pt bac 2 if (a!=0) { delta=b*b-4*a*c; if (delta>0) { printf("phuong trinh co 2 nghiem\n"); printf("x1=%f",(-b-sqrt(delta))/(2*a)); printf("\n"); printf("x2=%f",(-b+sqrt(delta))/(2*a)); } else //TH a<>0 va delta <=0 { if (delta==0) { printf("phuong trinh co nghiem kep\n"); printf("x=%f",-b/(2*a)); } else printf("phuong trinh vo nghiem "); } } else // (If a==0) { if (b!=0) // a luc nay =0 { printf("phuong trinh co 1 nghiem\n"); printf("x=%f",-c/b); } else // a=0 va b=0 { if (c!=0) printf("phuong trinh khong xac dinh"); else printf("phuong trinh vo so nghiem"); } } getch(); }

HẾT

hailoc12

05-08-2006, 01:38 PM

BÀI 02 1. Ý TƯỞNG THUẬT TOÁN : a. Ta làm một trường hợp nếu nhập vào không hợp lệ thì bắt nhập lại . b. Ngược lại Trước hết ta quy đổi về số ngày hết . Ta xét từ năm số 1 cho đến năm nhập vào nếu thỏa điều kiện năm nhuận thì cộng thêm 1 Ta xét từ tháng 1 cho đến tháng nhập vào và lần lượt cộng với số ngày tương ứng mà tháng đó có ( ví dụ : tháng 3 có 31 ngày ). Sau khi được một tổng số có được bằng cách thực hiện 2 bước trên thì ta cộng số đó vào số ngày nhập vào . Ta được tổng số ngày từ ngày tháng năm thứ nhất cho đến ngày tháng năm hiện tại Theo quy luật của ngày tháng thì cứ 7 ngày thì lặp lại một thứ . Vì thế ta lấy tổng số ngày tính được tất cả chia lấy phân dư cho 7 ( Ví dụ : nếu được 0 thì đó là chủ nhật ) 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Ba biến : ngay , thang ,nam là các biến được nhập vào Biến s : lúc đầu là cộng thêm 1 nếu gặp năm nhuần khi dòng for i chạy sau đó được gán bằng 0 và tính tổng các ngày của các tháng . Biến t : là biến tính tổng số ngày Biến x : là biến khi t chia lấy phần dư cho 7 gán cho x rồi suy ra thứ. Dòng For thứ nhất chạy xét xem nếu năm nhuần thì cộng số ngày lên 1 Dòng For thứ hai chạy xét và cộng vào số ngày tương ứng của tháng đó . 3. BÀI GIẢI #include #include void main() { clrscr(); int ngay , thang , nam,s=0,x; long t; do { printf("Nhap vao Ngay :"); scanf("%d",&ngay); printf("Nhap vao Thang :"); scanf("%d",&thang); printf("Nhap vao Nam :"); scanf("%d",&nam); } while(((ngay<0)||(ngay>31)||(thang<0)||(thang>12))||((thang==2)&&(ngay>29))); for(int i=1;i<=nam;i++) { if((i%400==0)||((i%4==0)&&(i%100!=0))) s+=1; } t=(nam*365)+s; s=0; for(int j=1;j HẾT

hailoc12

05-08-2006, 01:45 PM

BÀI 03 1. Ý TƯỞNG THUẬT TOÁN : Ta lấy số ngày xét nếu bằng 365 thì ngày 31 tháng 12 nam 0 , ngược lại thì ta lấy số ngày trừ cho 365 nếu là năm nhuận thì trừ cho 366 Xét diều kiện đủ thấy ta lấy số ngày cịn l?i trừ cho số ngày của từng tháng ( ví dụ : lấy số ngày trừ cho 31 nếu lớn hơn 0 thì tháng +1 và có thể tiếp tục chạy theo vòng for cho đến khi nào không thỏa điều kiện trong vòng switch – case nữa thì thoát ra Thu được kết quả của ngày tháng năm . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài chỉ có ba biến quan trọng là : ngay , thang , nam Biến ngay : là biến được input . Biến thang : là biến tăng khi ngày trừ đi theo câu lệnh Biến nam : tuong tự như biến tháng nhưng là kết quả của biến ngày trừ đi theo câu lệnh . 3. BÀI GIẢI : #include #include void main() { clrscr();// nam so 0 khong duoc xet la nam nhuan unsigned long ngay,nam=1; int thang=1; //bat dau tu nam so 0 do { printf("Nhap vao so ngay : "); scanf("%lu",&ngay); }while(ngay<1); while(ngay>=366)//dieu kien de xet so nam { if(((nam%4==0)&&(nam%100!=0))||(nam%400==0)) ngay-=366; else ngay-=365; nam++; if(ngay==0) { thang=12; ngay=31; nam-=1; break; } } while(ngay>=28) { if(thang==12) break; switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: if((ngay-31)>0) { ngay-=31; thang+=1; } break; case 2: if(((nam%4==0)&&(nam%100!=0))||(nam%400==0)) { if((ngay-29)>0) { thang+=1; ngay-=29; } else break; } else { if((ngay-28)>0) { ngay-=28; thang+=1; } else break; } break; default : if((ngay-30)>0) { thang+=1; ngay-=30; } break; } } printf("\n Doi ra ngay thang la "); printf("%lu - %d - %d",ngay,thang,nam); getch(); }

HẾT

hailoc12

05-08-2006, 07:09 PM

BÀI 04 : 1. Ý TƯỞNG THUẬT TOÁN : Bài này cũng tương tự như hai bài trên nhưng ta lại xét tháng trước nó sẽ nhanh hơn. Nếu tháng hợp lệ thì ta xét năm và ngày 2. Ý NGHĨA CỦA MỘT SỐ BIẾN TRONG BÀI : • Trong bài này cũng chỉ có 3 biến: ngay , thang ,nam Cả 3 biến này đều là biến input 3. BÀI GIẢI : #include #include void main() { clrscr(); unsigned long nam; int ngay, thang; printf("Nhap vao ngay "); scanf("%d",&ngay); printf("Nhap vao Thang "); scanf("%d",&thang); printf("Nhap vao Nam "); scanf("%lu",&nam); switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if((ngay>0)&&(ngay<32)&&(nam>0)) printf(" Ngay nay la ngay hop le"); else printf(" Ngay nay la ngay khong hop le"); break; case 2: if(((nam%4==0)&&(nam%100!=0))||(nam%400==0)) { if((ngay>0)&&(ngay<30)) printf(" Ngay nay la ngay hop le") else printf(" Ngay nay la ngay khong hop le"); } else { if((ngay>0)&&(ngay<29)) printf(" Ngay nay la ngay hop le"); else printf(" Ngay nay la ngay khong hop le"); } break; case 4: case 6: case 9: case 11: if((ngay>0)&&(ngay<31)&&(nam>0)) printf(" Ngay nay la ngay hop le"); else printf(" Ngay nay la ngay khong hop le"); break; default : printf("Ngay nay la ngay khong hop le "); } getch(); }

HẾT

hailoc12

05-08-2006, 07:13 PM

BÀI 05 : 1. Ý TƯỞNG THUẬT TOÁN : Bài này khai báo một biến kí tự để so sánh với mã phím input Nếu nhập 1 thì nhập chiều dài & rộng của hình chữ nhật Cách in ra hình chữ nhật như sau : In ra một dòng * có chiều dài là độ dài của hình Sau đó xuống dòng in ra kí tự * và in một dòng khoảng trắng nhỏ hơn độ dài là 2 rồi in kí tự * và xuống hàng Cứ như thế lặp lại số lần = chiều rộng trừ 2 In một dòng * cuối cùng bằng độ dài của hình Nếu nhập vào 2 thì nhập cạnh của hình vuông Cách in hình vuông tương tự như hình chữ nhật 2. Ý NGHĨA CỦA MỘT SỐ BIẾN TRONG BÀI : Trong bài này cĩ bi?n menu là bi?n nh?n mã phím và di?u khi?n vẽ hình Các biến a,b : là độ dài của hình cần vẽ 3. BÀI GIẢI : #include #include void main() { clrscr(); char menu; int a,b; do { printf(" Bam phim 1 de ve hinh chu nhat \n"); printf(" Bam phim 2 de ve hinh Vuong \n"); printf(" Bam phim 3 de thoat chuong trinh \n"); printf(" Nhap vao mot so de thuc hien \n"); fflush(stdin); scanf("%c",&menu); /*-----------Ve Hinh Chu Nhat --------------------*/ if(menu=='1') { printf("Nhap vao chieu dai cua hinh "); scanf("%d",&a); printf("Nhap vao chieu rong cua hinh "); scanf("%d",&b); for(int i=0;i1)//In ra dong cuoi,truong hop a=1 neu In se du mot dong { for(int i=0;i1)//In ra dong cuoi,truong hop a=1 neu In se du mot dong { for(int i=0;i HẾT

hailoc12

05-08-2006, 07:15 PM

BÀI 06 1. Ý TƯỞNG THUẬT TOÁN : Đặt một biến bằng số nguyên nhỏ nhất sau đó tăng lên 1 Giảm số cần phân tích bằng cách chia cho biến đó Thực hiện cho đến khi nào phép chia ở bước b =1 2. Ý NGHĨA CỦA MỘT SỐ BIẾN TRONG BÀI : Trong bài ta đặt biến i là biến số nguyên tố nhỏ nhất i =2, n là biến input cần phân tích 3. BÀI GIẢI : #include #include void main() { clrscr(); unsigned long n,i=2; printf("Nhap vao so can phan tich "); scanf("%lu",&n); while(i<=n) { if(n%i==0) { if(n/i==1) printf("%2lu",i); else printf("%2lu x",i); n/=i; } else i++; } getch(); }

HẾT

hailoc12

05-08-2006, 07:19 PM

BÀI 07 1. Ý TƯỞNG THUẬT TOÁN : Định nghĩa: số chính phương là số có căn bậc 2 là một số nguyên Đối với bài này ta có hai cách viết Cách 1 : Ta lấy căn bậc hai của số đó trừ cho phần nguyên căn bậc 2 của số đó nếu bằng 0 thì nó là số chính phương, ngược lại không phải. Cách 2 : Cho vòng for i chạy từ 1 đến số cần kiểm tra nếu i*i==n thì xuất ra nó là số chính phương và thoát chương trình 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : o n : là biến input o flag :là biến cờ để biết đúng hay sai nếu bằng 1 là số chính phương 3. BÀI GIẢI : #include #include #include void main() { clrscr(); float n; int flag=0; printf("Nhap vao mot so "); scanf("%f",&n); /*-------------------Cach 1 ------------------------------*/ for(float i=1;i<=n;i++) { if(n==i*i) { printf("La so chinh phuong"); flag=1; break; } } if(flag==0) printf("Khong phai la so chinh phuong"); /*------------------Cach 2 -------------------------------*/ /* if(sqrt(n)==(int)sqrt(n)) printf("La so chinh phuong "); else printf("Khong phai"); */ getch(); }

HẾT

hailoc12

05-08-2006, 07:26 PM

BÀI 08 1. Ý TƯỞNG THUẬT TOÁN : Định nghĩa: Số nguyên tố là số chỉ chia hết cho 1 và chính nó, điều kiện là lớn hơn 1 Đối với bài này có rất nhiều cách làm nhưng tôi nghĩ cách sau là các bạn dễ hiểu nhất Cho một vòng lặp for i chạy từ 2 cho đến số cần kiểm tra nếu số đó chia hết cho i thì đếm số lần Kết luận nếu số lần chia hết là 1 thì là số nguyên tố ngược lại thì không phải 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : n : là biến input i : lưu động từ 2 đến n dem : đếm số lần n chia hết cho i 3. BÀI GIẢI : #include #include void main() { clrscr(); unsigned long n; int dem=0; printf(" Ban hay nhap vao so "); scanf("%lu",&n); for(unsigned long i=2;i<=n;i++) { if(n%i==0) dem++; } if(dem==1) printf(" La so nguyen to"); else printf(" khong la so nguyen to"); getch(); } HẾT Thuật toán của bài này cũng được !! Nhưng mà có cách khác cũng được đó :Bạn cho thêm 1 biến phụ chẳng hạn biến NT=1. VD chương trình sau: #include "stdio.h" #include "conio.h" void main() { int N,i,NT=1; printf("\nNhap gia tri cua N:"); scanf("%d",&N); for(i=2;i tồn tại một số p(p#1, p#n) để n chia hết cho p. Đặt q= n/p => q#1, q#n. đặt r= min(p, q) => r<=p && r<=q => r^2 <= p*q = n => r <= sqrt(n) mà r là ước của n (do r =p hoặc r =q) => n tồn tại một ước số nhỏ hơn hoặc bằng căn bậc 2 của n và khác 1 => đpcm P/S: kí hiệu "#" nghĩa là khác ^_^ Cám ơn anh nhiều, ra là vậy, em tìm mấy sách chỉ thấy nó bảo cải tiến như vậy thôi chứ chẳng sách nào nói vì sao cả. Cám ơn anh nhiều, ra là vậy, em tìm mấy sách chỉ thấy nó bảo cải tiến như vậy thôi chứ chẳng sách nào nói vì sao cả. Lão Vinhie là bạn Em đó các Bác.:D -------------------------------------------------------------------------- Cho Em hỏi cái! Trong C/C++ có Function nào có thể check 1 chuỗi xem nó có là số hay không? Ví dụ: 1-String s = "Hello World";or 2-String s = "1.2354" If NO(TH 1) return FALSE. If YES(TH2) return TRUE. Thanks a lot. 1. sao chú ecard biết mà vào đây nhỉ? 2. Không có nguyên một hàm như thế nhưng cũng có cách đấy, ngắn thôi! 2. Không có nguyên một hàm như thế nhưng cũng có cách đấy, ngắn thôi! Khó quá hả ??? Đang nghĩ chứ giề ???:D Could U help me at All???Y!:) PS/ Nghe nói đây là chuyên nghanh` của Lão Vinhie47. hehe, chú em chỉ hỏi Yes/No chứ không hỏi How thì anh trả lời như vậy là thoả đáng rồi, trong trường hợp này thì làm như sau: if (atof(str) == 0) printf("không phải là số"); else printf("là số"); đại loại là vậy. P/S: chú bảo cái gì là chuyên ngành anh cơ? :-/ Bác đã reply qua YIM rồi,Ai ngờ qua đấy vẫn thấy bài.Bác chu đáo quá ha. He sao bây giờ có hàm atof hay ha. Tuy Tui còn một số thắc mắc về vấn đề này nhưng đã được ngộ ra một ít (http://www.codeguru.com/forum/showthread.php?t=351055)(not All vì Em hơi đần) Cuối cùng cũng để giải quyết bài toán trên nhưng được thực hiện bởi một ngôn ngữ khác.Một thứ ngôn ngữ không nằm trong chính giáo. str$='abcd' **str$='1.2345' **str$='7654' var1=VAL(str$) If (var1=0) Then Message("variable is string.","") Return() Else var2=INT(var1) If (var1<>var2) Then Message("Variable is Floating Point number.","") Else Message("Variable is Integer number.","") End End Đố Vinhie46.9999 biết đó là thứ ngôn ngữ gì:D .If Bác biết Em cho Bác 10K.:D Thanks for your help Regards. Ku câu bài quá! Cái đoạn trên chẳng biết là cái gì nhưng chắc chỉ có họ hàng nhà BASIC mới có mấy cái từ khóa linh tinh như trên. Lại còn thêm cái dollar vào cuối tên biến kiểu string nữa chứ, có khi là QBASIC hay color Basic,... gì gì đó. Thử search thì lại không thấy cái gì vừa có $ ở cuối, vừa có Message("stupid something") cả. Để lúc nào rảnh rỗi anh tìm được rồi PM cho chú vậy :( P/S: mà chú bỏ cái kiểu nửa Việt nửa Anh đấy đi, đọc bực mình quá! Đúng rồi, cái này là họ hàng nhà Basic, nếu không thì cũng là con cùng cha khác mẹ hoặc cùng mẹ khác cha thôi. Dùng google đi. Có cái gì mang lên đây cho anh em xem với chứ, nói xuông làm tính tò mò của Dreaminess nổi lên rồi nè. he he Hê hê, vừa rồi mới nghĩ ra là thằng bạn của mình vốn sẵn tính lười, nên chắc nó lấy được đoạn code này ở đâu đó rồi cut-n-paste nên tìm thử luôn cái code trên, không ngờ ra luôn kết quả thật :)) Cái ngôn ngữ trên không phải là Programming language mà là một dạng Scripting language (cái này không phải là anh vừa t.A+V như chú đâu mà là dịch ra thì khó hiểu hơn). Tên nó là MMB (Multimedia Builder) Chi tiết tại đây: _http://mmb.mediachance.com/ Thằng Em của Tại Hạ đang học C nó hỏi một câu như thế mà trình độ C của Tôi thì lại còi cọc quá. Nên câu hỏi tuy đơn giản nhưng Tôi không trả lời được.Nên lên mạng hỏi , Ai ngờ vào đây thấy chú Vinh làm Mod, giật cả Mình nên mới tham gia chút cho vui thôi, chứ không dám múa máy linh tinh đâu. Không ngờ thằng Google lại nguy hiểm như vậy.Tại hạ cũng không ngờ mình sơ hở đến thế, để cho Lão Vinhie(Vinh Intenet Explorer) nó search, nếu biến tướng đi một chút thì có lẽ không có chuyện này xảy ra.Thật khâm phục , khâm phục tài search của Chú Vinh. Ku câu bài quá! Mod kinh quá , Xóa luôn hết các Bài của Anh đi .Anh không đánh giá cao chuyện này :)% Hê hê, vừa rồi mới nghĩ ra là thằng bạn của mình vốn sẵn tính lười, nên chắc nó lấy được đoạn code này ở đâu đó rồi cut-n-paste nên tìm thử luôn cái code trên, không ngờ ra luôn kết quả thật ) Thực ra đây là câu hỏi của Tui được lão Odklizec trả lời chứ không phải Tui lấy code linh tinh rồi copy paste vào đây. Câu hỏi của Tôi đến đây là kết thúc.

Good luck.

Kevin Hoang

05-08-2006, 07:28 PM

BÀI 09 1. Ý TƯỞNG THUẬT TOÁN : Ta chỉ xét khi a# 0 và b#0 TH1 :Nếu Xét a> =b thì ta lấy a – cho b cho đến khi nào a nhỏ hơn b . Lưu ý : (Nếu a=0 thì thoát ) . Nếu 0 < a =a Cuối cùng - Nếu a=0 thì ước chung lớn nhất là b và bội chung nhỏ nhất là (x * y ) /b . - Nếu ngược lại thì ước chung lớn nhất là a và bội chung nhỏ nhất là ( x * y)/a 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : - Trong bài chỉ có hai biến quan trọng đó là x,y là 2 biến input và a , b là hai biến gán tạm thời bằng giá trị x ,y để khi thực hiện sẽ không làm ảnh hưởng đến giá trị của hai số input ban đầu . 3. BÀI GIẢI : //Bài giải 1 #include #include void main() { clrscr(); /* -------------tim Uoc so chung lon nhat ----------*/ unsigned long a,b,x,y; printf("Nhap vao so thu nhat "); scanf("%lu",&a); printf("Nhap vao so thu hai "); scanf("%lu",&b); x=a ; y=b; while((a!=0)&&(b!=0)) { if(a>=b) a-=b; else b-=a; } /* boi so chung nho nhat la tich cua hai so chia cho USCLN */ if(a==0) { printf(" Uoc so chung lon nhat la %lu \n" ,b); printf(" Boi so chung nho nhat la %lu ",(x*y)/b); } else { printf("Uoc so chung lon nhat la %lu \n",a); printf(" Boi so chung nho nhat la %lu ",(x*y)/a); } getch(); } //Bài giải 2: Sử dụng thuật toán ƠCLIT #include #include void main() { clrscr(); /* -------------tim Uoc so chung lon nhat ----------*/ unsigned long a,b,t,r,x,y,ucln; printf("Nhap vao so thu nhat "); scanf("%lu",&a); printf("Nhap vao so thu hai "); scanf("%lu",&b); if (a0) { r=a % b; if (r==0) ucln=b; else { a=b; b=r; } } /* boi so chung nho nhat la tich cua hai so chia cho USCLN */ printf("\nUoc chung lon nhat la %d",ucln); printf("\nBoi chung nho nhat la %d",(x*y / ucln)); getch(); } HẾT Bài này làm theo cách này vừa dài vừa ko hay ....!! Bà con xem có còn chỗ nào có thể rút ngắn đi được ko..!!Suy nghĩ đi...Dài quá Có gì đâu. Thay vì dùng a-b ta thay bằng a mod b. Chương trình vừa chạy nhanh và ngắn. He he. Vâng, em sẽ sửa lại Còn về thuật toán ƠClIT nếu bạn nào chưa biết mình sẽ trình bày lại Bài giải 1 tìm USCLN em thấy nó sao sao ấy ! Hình như số nào nó cũng cho ra số 0 thì phải. Em nhớ cách làm là : for (;a!=b;)// mới chỉ học vòng lặp for :) if (a>b) a-=b; else b-=a; uscln=a;//hoặc uscln=b Bài giải 1 mình đã xem lại rồi, nó vẫn chạy ngon lành cho đáp án đúng. Bạn thử xem có trục trặc gì ở trình biên dịch không . x=a ; y=b; while((a!=0)&&(b!=0)) { if(a>=b) a-=b; else b-=a; } Phần trên chính là đoạn để tìm ước chung lớn nhất, sau khi chạy số nào bằng 0 thì đó chính là UCLN. Bài giải 1 tìm USCLN em thấy nó sao sao ấy ! Hình như số nào nó cũng cho ra số 0 thì phải. Em nhớ cách làm là : for (;a!=b;)// mới chỉ học vòng lặp for :) if (a>b) a-=b; else b-=a; uscln=a;//hoặc uscln=b Nếu sử dụng Borland C++ for Win(BCW.exe) thì khải khai báo đúng thư mục hệ thống(Windows) khi cài đặt. Nếu không mọi kết quả tính toán sẽ là zero hết. Thuật toán Euclid dựa trên một tính chất số học là UCLN(a,b) = UCLN(b, a mod b) với a,b là các số nguyên Vì thế ta có thuật toán while (b > 0) { r = a % b; a = b; b = r; } return a; Thực ra thì thuật toán sử dụng phép trừ bản chất cũng giống như trên vì : a mod b = a - m*b Nhưng thực tế thuật toán này chạy nhanh hơn. Phép trừ chạy nhanh hơn ư ? Cái này lần đâu tiên em được nghe thấy. Anh có thể giải thích rõ hơn được không ? Phép trừ chạy nhanh hơn ư ? Cái này lần đâu tiên em được nghe thấy. Anh có thể giải thích rõ hơn được không ? Không phải tôi nói phép trừ chạy nhanh hơn mà là thuật toán Euclid dùng phép mod nhanh hơn thuật toán Euclid dùng phép trừ. Phép toán mod chậm hơn phép trừ rất nhiều nhưng tốc độ hội tụ đến UCLN lại nhanh hơn.Mọi người cứ viết chương trình thử nghiệm thì thấy. Ở đây có sự nhầm lẫn. Phép lấy dư (Mod) bao giờ chạy nhanh hơn phép trừ. Vì máy tính thực hiện phép lấy dư chỉ bằng một lần tính, còn phép trừ thì nhiều hơn, vì phép trừ còn phải lấy bù hai sau đó mới tính và phải tính qua phép toán cộng. Cũng chưa hẳn, làm phép trừ có một mạch riêng đâu cần phải lấy bù hai. Chưa biết chừng để tạo được phép mod máy nó phải làm cả phép chia, nếu vậy thì rõ ràng là trừ như vậy nhanh hơn. Làm gì có mạch trừ. Không biết các CPU mới thế nào chứ loại x86 mà chúng ta đang dùng không có mạch trừ chứ. Dreaminess chưa hề nghe đến mạch trừ trong CPU x86 hoặc CPU cùng thời hoặc cũ hơn.

Em nhớ là có một địa chỉ hình như là 0000:406C có thể được dùng để đo tốc độ của chương trình. Trong pascal em vẫn thường đọc nó vào lúc bắt đầu chương trình và sau khi chương trình thực hiện xong để tính thời gian chạy, việc đó đựơc thực hiện thông qua chỉ thị absolute gán địa chỉ trực tiếp cho một biến. Nhưng không biết trong C có cấu trúc tương tự như vậy không. Em sẽ viết thử chương trình đo tốc độ để xem cái nào chạy nhanh hơn

hailoc12

05-08-2006, 07:30 PM

BÀI 10 : 1. Ý TƯỞNG THUẬT TOÁN : • Trong bài này thì chủ yếu là ta biết khống chế và in ra lượng dấu * cho phù hợp với định dạng của hình mà cần in . • Thường là ta cho một vòng lặp khống chế số hàng dấu * in ra , một vòng lặp in ra số khoảng trắng và một vòng lặp in ra dấu * . Nhưng cũng nên lưu ý hai vòng lặp này phải đồng thời lẫn nhau theo từng định dạng hình cần in . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài chỉ có biến h là biến chiều cao input từ người dùng , các biến còn lại đều là biến chạy của các vòng lặp . 3. BÀI GIẢI : // chuong trinh in tam giac ra man hinh // #include #include void main() { clrscr(); int h,i,j,k,t; printf("Nhap Vao Chieu Cao Cua Hinh Tam Giac h= "); scanf("%d",&h); printf("\n"); //-------------In Tam Giac Thu 1 & Thu 2---------------------// for(t=0;t<2;t++)// in ra hai lan tam giac nhu nhau { for(i=1;i<=h;i++) // chay chieu cao cua hinh { for(j=1;j<=i;j++) // in ra so luong dau * tuong ung voi do dai printf("*"); printf("\n"); } printf("\n\n"); getch(); } //------------In Tam Giac Thu 3-------------------------------// printf("\n"); for(i=h;i>0;i--)// chay chieu cao cua hinh { for(j=0;j HẾT

hailoc12

07-08-2006, 01:41 PM

BÀI 11 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này ta in ra một dòng hàng ngang trước ( VD : 1 x 1 = 1 2 x 1 = 2 3 x 1 = 3 4 x 1 = 4 ……………………10 x 1 =10) Sau đó xuống hàng và tăng tích lên 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : • I : là số dòng của bảng cửu chương đóng vai trò là tích • J : là số cột của bảng cửu chương đóng vai trò là thừa số 3. BÀI GIẢI : #include #include void main() { clrscr(); printf("\n\n\t\t\t\tBang Cuu Chuong \n\n\n"); for(int i=1;i<=10;i++) { for(int j=2;j<10;j++) printf("%2dx%2d=%3d ",j,i,j*i); printf("\ n"); } getch(); }

HẾT

hailoc12

07-08-2006, 01:43 PM

BÀI 12 1. Ý TƯỞNG THUẬT TOÁN : Theo đề bài ta không được lấy từng con số của b nhân với a mà vấn đề là ở chỗ từng số b nhân với từng số a . Để giải quyết bài này ta xét độ dài của cắc số rồi xuất ra theo ý muốn của mình , ở đây tôi chỉ nêu ra phần ý tưởng của thuật toán mà thôi . Trước hết bạn hãy liệt kê tất cả các biến trong bài có thể phát sinh ( VD : cần các biến tạm của hai số a và b để khi thực hiện thuật toán ta vẫn không làm ảnh hưởng giá trị của hai số a và b khi cần thiết sử dụng đến chúng , tiếp đến là bién nhớ và các biến lưu động và cộng dồn ; lưu động ở đây có nghĩa là cứ một hàng đơn vị thì tăng lên 10 . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài này ta có rất nhiều biến : A. Các biến dùng để xuất ra theo ý muốn và cân đối phép nhân gồm : i,xuat,dem1=5,dem2=5 , p =0 . B. Các biến dùng trong thuật toán gồm : 1. a, b : là hai con số được input 2. x=a , y=tmpb=b , là các biến gán tạm thời cho hai số trên để khi tính toán có thay đổi cũng không ảnh hưởng đến hai số đó khi chúng ta cần thiết sử dụng tới nó . 3. biến demtmp : có kiểu dữ liệu int là biến tính độ dài số a 4. biến t : có kiểu int dùng để chứa từng con số b nhân với từng số a . 5. biến nho : để nhớ số hàng chục của số t khi t > 10 6. biến k có kiểu dữ liệu là double dùng để nhân lên 10 mỗi khi biến s cộng 7. biến s : là biến cộng dồn lại kết quả của một số b nhân với từng số a cho đến hết số a sau đó xuất ra số s là một hàng 8. tương tự như biến k còn có biến h dùng để cộng dồn vào biến kq . 9. biến kq : là biến kết quả của phép nhân được tính bằng cách cộng dồn s vào và nhân h khi cộng . 3. BÀI GIẢI : #include #include #include void main() { clrscr(); int i,nho=0,xuat,dem1=5,dem2=5,in,p=0,t; long a,b,x,y,tmpb; double s,k=1,kq=0,h=1; do { printf("Ban Hay Nhap Vao So a= "); scanf("%ld",&a); printf("Ban Hay Nhap Vao So b= "); scanf("%ld",&b); }while((a<=0)||(b<=0)) ; x=a;y=tmpb=b; //Gan cac bien tam thoi de khong anh huong hai so a & b while(x>0) { x=x/10; dem1++;// dem xem a co bao nhieu chu so + 5 } while(y>0) { y=y/10; dem2++; // dem xem b co bao nhieu chu so + 5 } int demtmp=dem1-5;//demtmp la bien do dai cua chu so a /* ---------------xuat ra theo y muon--------------------------------*/ if(a>b) { xuat=dem1; for(int i=1;i<=dem1;i++) printf(" "); printf("%ld\n",a); for(int j=1;j<=(dem1+(dem1-dem2));j++) printf(" "); printf("%ld\n",b); for(int m=1;m<=dem1;m++) printf(" "); for(int t=1;t<=dem1-5;t++) printf("-"); printf("\n"); } else { xuat=dem2; for(int i=1;i<=dem2+(dem2-dem1);i++) printf(" "); printf("%ld\n",a); for(int j=1;j<=dem2;j++) printf(" "); printf("%ld\n",b); for(int m=1;m<=dem2;m++) printf(" "); for(int t=1;t<=dem2-5;t++) printf("-"); printf("\n"); } /*----------------Thuat Toan ------------------------------------*/ while(tmpb>0) { demtmp=dem1-5; //gan lai do dai sau mot lan nhan x=a; // khong muon thay doi gia tri a k=1; // he so nhan len tung hang don vi s=0; // ket qua cua tung con so nhan voi so a while(x>0) { t=(tmpb%10)*(x%10)+nho;//tung so b nhan voi tung so a cong nho nho=t/10; in=t%10; if(((tmpb<10)||(a<10)||(tmpb%10<10))&&((tmpb*x+nho)>=10)&&(demtmp==1)) { s+=t*k;//neu nhan voi chu so dau tien cua a > 10 thi in ra luon nho=0; } else s+=in*k; // s la de luu lai gia tri cua bien in k=k*10; x=x/10; //sau khi nhan giam x demtmp--; } for(i=xuat;i>0;i--) printf(" "); printf("%.0f\n",s);//xuat ra tung dong ket qua ung voi tung con so kq+=s*h;//Ket qua cua phep nhan duoc cong don voi bien s p++; // bien p tang la de giam di so khoang trang in ra o phia duoi h=h*10;// thut vao 1 don vi nen phai nhan len 10 khi cong vao kq xuat-=1; //giam di mot khoang trang khi xuong mot hang tmpb/=10; // lay so ke trai de nhan voi tung so a } /*--------------------------Xuat Ket Qua Cuoi Cung----------------*/ if(a=10)//tru truong hop da in ra s roi con in kq , no se in hai lan { for(int m=1;m<=dem2-p;m++) printf(" "); for(int u=1;u<=dem2-3;u++) printf("-"); printf("\n"); for(int v=0;v<=dem2-p;v++) printf(" "); printf("%.0f",kq);//o tren da in ra bien s nen khong in kq neu b<10 } } else //tuong tu { if(b>=10) // xet de tranh in hai lan ket qua { for(int m=1;m<=dem1-p;m++) printf(" "); for(int u=1;u<=dem1-3;u++) printf("-"); printf("\n"); for(int v=0;v<=dem1-p;v++) printf(" "); printf("%.0f",kq); } } getch(); }

HẾT

hailoc12

07-08-2006, 01:45 PM

BÀI 13 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này ta tính tổng các số từ 1 cho tới n , ta cần có một vòng lặp chạy từ 1 cho đến n sau đó một biến cộng dồn khi vòng lặp chạy . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài chỉ có biến n là biến in put b. Biến s : là biến cộng dồn khi vòng for lặp lại 3. BÀI GIẢI : #include #include void main() { clrscr(); unsigned long s=0; int n,i; printf("Nhap vao so n= "); scanf("%lu",&n); for(i=1;i<=n;i++) s+=i; printf("Tong Tu 1 --> n la %lu",s); getch(); }

HẾT

hailoc12

07-08-2006, 01:46 PM

BÀI 14 1. Ý TƯỞNG THUẬT TOÁN : a. Tương tự như bài 13 . nhân dồn nhưng lưu ý đối với phép nhân thì có giới hạn . b. Bài này sẽ tôi sẽ trình bày theo hai cách : i. Cách 1 : tương tự như bài 13 ii. Cách 2 : Ta cũng làm tương tự như cách trên nhưng khi biến nhân dồn lớn hơn 100000 thì ta cộng số mũ vào là 5 và lấy biến s chia cho 100000 , với thuật toán trên bạn có thể tính được 1000 giai thừa . ( lưu ý : biến s : kiểu dữ liệu là double ) 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Cách 1 : tương tự b. Cách 2 : có biến q : kiểu dữ liệu là int dùng để cộng số mũ khi s > 100000 3. BÀI GIẢI : Cách 1 : #include #include void main() { clrscr(); double s=1; int n,i; printf("Nhap vao so n= "); scanf("%lu",&n); for(i=1;i<=n;i++) s*=i; printf("Tong Tu 1 --> n la %.0f",s); getch(); } HẾT Cách 2 : #include #include void main() { double s=1; int i,q=0,n; clrscr(); printf("nhap n:"); scanf("%d",&n); for(i=1;i<=n;i++) { s*=i; if(s>=100000) { s/=100000; q=q+5; } } printf("Ket Qua cua %d giai thua %lf x 10^%d",n,s,q); getch(); }

HẾT

hailoc12

07-08-2006, 01:47 PM

BÀI 16 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này ta dùng công thức phép lặp Newton X[ 0 ] = ( 1 + a ) /2 X[1] = (1/2)*(X[n] + a/X[n]) ; n= 1 , 2 ,… Sai số cho phép là trị tuyệt đối của ( X[n+1] – X[n] ) / X[n] = 10 ^ -5 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài có hàm double can_2(double x) : dùng để trả về giá trị căn bậc 2 của một số cần tính . ở đây được xem là biến x . Trong hàm còn có biến kq : được xem tương ứng như phần tử X[n+1] trong công thức trên biến temp : được xem như phần tử X[ n ] trong công thức trên . 3. BÀI GIẢI : #include #include #include double can_2(double x) { double kq,temp,z; if(x==0) return(kq=0); kq=x; if(x>0) { while(1) { temp=kq; // tam thoi luu lai X[n] kq=(kq*kq+x)/(2*kq); // quy dong va rut gon tu phep lap Newton z=fabs((kq-temp)/temp);// sai so cho phep if(z<0.00001) return(kq); } } } void main() { clrscr(); double n; printf("nhap so can tinh can bac hai:\n x= "); scanf("%lf",&n); printf("\n%lf co can bac hai: %lf",n,can_2(n)); printf("\n\nnhan phim bat ki de ket thuc..."); getch(); }

HẾT

hailoc12

07-08-2006, 01:48 PM

BÀI 17 1. Ý TƯỞNG THUẬT TOÁN : a. Ở bài này ta không phải xuất các phần tử ngược trở lại mà vấn đề là phải thay đổi được vị trí các phần tử với nhau theo đề bài là đảo ngược ( VD : phần tử đầu sẽ đảo thành phần tử cuối ) . b. Ta nên lưu ý chỉ cho một vòng lặp chạy từ 0 cho đến nửa số phần tử mà thôi sau đó hoán đổi vị trí của hai phần tử với nhau . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài có : a. Biến a[ 100] : là mảng để chứa các phần tử . b. Biến n : là biến input là số phần tử trong mảng . c. Hàm daomang(int a[100] , int n ) : nhiệm vụ hàm này là đảo vị trí của toàn mảng . trong hàm có biến tmp dùng để bắc cầu khi hai biến hoán đổi vị trí cho nhau . 3. BÀI GIẢI : #include #include void nhapmang(int a[100],int n) { for(int i=0;i HẾT

hailoc12

07-08-2006, 01:49 PM

BÀI 18 1. Ý TƯỞNG THUẬT TOÁN : a. Trước hết ta phải viết một hàm kiểm tra số nguyên tố sau đó viết hàm nhập mảng . b. Số nguyên tố là số chỉ chia hết cho 1 và chính nó . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI Trong bài gồm : i. a[100] : mảng tối đa 100 phần tử ii. n : số phần tử trong mảng iii. Hàm int ktnt(int a[100] , int n) là hàm kiểm tra và trả về giá trị 1 nêú là số nguyên tố và ngược lại trả về 0 Trong hàm có biến dem : dùng để kiểm soát số lần chia hết cho I nếu là 1 lần thì là số nguyên tố ( vì I chạy từ 2). 3. BÀI GIẢI : #include #include int ktnt(int x) { int dem=0; for(int i=2;i<=x;i++) { if(x%i==0) dem++; } if(dem==1) return 1; else return 0; } void nhapmang(int a[100],int n) { for(int i=0;i HẾT

hailoc12

07-08-2006, 01:50 PM

BÀI 19 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này theo ý tưởng của tôi ta nên cho họ nhập vào tùy ý phần tử đầu tiên sau đó dựa trên phần tử đó kiểm soát và khống chế theo đề bài i. TH1 : Kiểm tra nếu pt đầu tiên là lẻ thì khi I chẳn phải là số chẳn và I lẻ phải là số lẻ . ii. TH2 : Kiểm tra nếu pt đầu tiên là chẵn thì khi I chẵn phải là số lẻ và I lẻ phải nhập số chẵn . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a[100] : là mảng phần tử tối đa là 100 kí tự n : số phần tử của mảng I : l biến chạy của một số hm for 3. BÀI GIẢI : #include #include int kt_chan_le(int x) { if(x%2==0) return 1; else return 0; } void nhapmang(int a[100],int n) { printf("Nhap a[0]"); // Nhap va xet ngay so dau tien cua mang scanf("%d",&a[0]); if(kt_chan_le(a[0])) { for(int i=1;i HẾT

hailoc12

07-08-2006, 01:51 PM

BÀI 20 1. Ý TƯỞNG THUẬT TOÁN : a. Ở bài này ta chỉ cần xuẩt ra theo kiểu hình ma trận là được b. Ta chỉ nhập vào ma trận với n dòng và m cột sau đó cho xuẩt ra ứng với giá trị cột ta xuất tương ứng ra các giá trị dòng ( VD : ở ma trận 3 x 3 thì 00 , 01 , 11 …………,30 , 31 , 32 ) Ta sẽ xuất được ma trận chuyển vị của ma trận nhập vào . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài chỉ có mảng hai chiều a[ 50 ][50] chứa tối đa 50 dòng và 50 cột b. n : số dòng của ma trận c. m : số cột của ma trận 3. BÀI GIẢI : #include #include void nhapmang(int a[50][50],int n,int m) { printf("Moi ban nhap mang vao day \n"); for(int i=0;i HẾT

hailoc12

28-09-2006, 08:28 PM

Những bài này không phải mình làm nên post lên nguyên vẹn để tôn trọng tác giả. Còn xét điều kiện a= 0 hay khác 0 trước hay sau thì tuỳ thuộc vào thói quen của mỗi người nó không ảnh hưởng đến tính đúng đắn của thuật toán. Tuy nhiên trường hợp a=0 có thể tạm coi là trường hợp "cực đoan" của bài toán, trong các đề thi những trường hợp như vậy rất hay được khai thác để kiểm tra, phân loại học sinh vì vậy có lẽ trước khi giải phần chính ta nên liệt kê đến các trường hợp suy biến như vậy giải quyết trước rồi tạo điều kiện đúng cho phần giải quyết chính. Hơn thế nữa, chắc khi làm toán bạn cũng thấy biện luận phương trình với a=0 rất dễ nhưng cũng chiếm số điểm khá lớn (khoảng 0,5 trong tổng 2 điểm), dễ ăn điểm vậy tại sao lại không giải quyết trước.

Kevin Hoang

29-09-2006, 01:07 AM

Về giải thuật, bác làm như thế là được rồi, nhưng có điều bố trí trường hợp không được hợp lí cho lắm,em thấy thường thì khi giải phương trình bậc hai, người ta xét trường hợp a khác 0 trước. Khi đưa vào giải thuật cũng dễ nhìn và dễ kiểm tra hơn. Chương trình này xét a!=0 trước đó thôi.

Vấn đề xét trước hay sau, Dreaminess nghĩ không sao, quan trọng là bố trí sao cho dễ hiểu mà thôi.

trieuanhl

02-10-2006, 08:02 PM

//cong tru nhan chia 2 phan so //thay ban gi post bai nhiều quá nên mình xin post ké.ở đây đề bài không yêu cầu rút gọn nên mình không rút gọn,mình chỉ cộng trừ nhân chia 2 phân số thôi struct phanso { int tu; int mau; }; typedef struct phanso PHANSO; void nhap(PHANSO &P); void xuat(PHANSO P); PHANSO tong(PHANSO P,PHANSO Q); PHANSO hieu(PHANSO P,PHANSO Q); PHANSO tich(PHANSO P,PHANSO Q); PHANSO thuong(PHANSO P,PHANSO Q); void main() { PHANSO P,Q,R; clrscr(); cout<<"nhap phan so thu nhat:"; nhap(P); cout<>P.tu; cout<>P.mau; } void xuat(PHANSO P) { cout< }

trieuanhl

02-10-2006, 08:12 PM

//cong trù nhân chia 2 số phức số phức là cố có dạng a+b*i, trong đó a là phân thực,b là phần ảo và i là đơn vị ảo. VD:3+5*i,là số phức (3+5*i)+(4+2*i)=7+5*i,đó là toán cộng. ở đây có định nghĩa đày đủ về số phức nè http://vi.wikipedia.org/wiki/Tr%C6%B0%E1%BB%9Dng_s%E1%BB%91_ph%E1%BB%A9c còn đây là bài của mình làm struct sophuc { float thuc; float ao; }; typedef struct sophuc SOPHUC; void nhap(SOPHUC &P); void xuat(SOPHUC P); SOPHUC tong(SOPHUC P,SOPHUC Q); SOPHUC hieu(SOPHUC P,SOPHUC Q); SOPHUC tich(SOPHUC P,SOPHUC Q); SOPHUC thuong(SOPHUC P,SOPHUC Q); void main() { SOPHUC P,Q,R; clrscr(); cout<<"nhap so phuc thu nhat:"; nhap(P); cout<>P.thuc; cout<>P.ao; } void xuat(SOPHUC P) { cout< }

trieuanhl

02-10-2006, 08:30 PM

//đôi chuổi thường sang chuổi hoa #include #include #include #include void main(){ char *s,*p; clrscr(); printf("nhap chuoi s:"); gets(s); //cach 1 /* p=strupr(s); puts(p); */ //cach 2 for(int i=0;i'a'&&s[i]<'z') s[i]-=32;//32 ở dây nghĩa là mã ascii chuyển từ chữ thường sang chũ // hoa tương ứng là 32 } puts(s); getch();

}

Ct có lỗi nặng lắm. Memory alloc cho pointer s lấy đâu ra mà gets vào vùng memory point by s. Lỗi dạng này sẽ làm crash app.

hailoc12

03-10-2006, 12:38 PM

Đúng là dùng thế có lỗi thật, trình biên dịch thông báo "Possible using s before definition" do ở đây s là con trỏ chuỗi nhưng lại chưa được khởi tạo chuỗi nào cả. Chương trình trên chạy đúng là do bên trong trỏ s đã chứa địa chỉ không xác định nào đó, khi sử dụng nó cho hàm gets thì hàm này sẽ đưa các kí tự vào địa chỉ s+1, s+2... y như một chuỗi, và sau khi xử lý sẽ cho ra kết quả đúng, tuy nhiên vùng địa chỉ s+1, s+2.... là vùng ta không kiểm soát được rất có thể lại là địa chỉ của một biến nào đó khác trong chương trình. Bạn có thể kiểm tra điều này bằng cách gán s=NULL rồi xem chương trình có còn chạy đúng nữa không. #include #include #include #include void main() { char *s ; clrscr(); s=NULL; printf("nhap chuoi s:"); gets(s); //cach 1 /* p=strupr(s); puts(p); */ //cach 2 for(int i=0;i'a'&&s[i]<'z') s[i]-=32;//32 ? dây nghia là mã ascii chuy?n t? ch? thu?ng sang chu // hoa tuong ?ng là 32 } puts(s); getch(); }

Cách giải quyết vấn đề này rất đơn giản hoặc khai báo thêm mảng char a[100]; rồi gán s=a; hoặc khai báo s là char s[100];

hailoc12

06-10-2006, 09:49 PM

BÀI 21 : 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này sau khi nhập ma trận ta gán các phần tử về mảng 1 chiều sau đó sắp xếp tăng dần theo dạng xoắn ốc bằng cách gán các phần tử ở mảng b cho ma trận a . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài bao gồm các biến toàn cục: i. a[50][50] : mảng chứa tối đa 50 dòng 50 cột ii. b[2500] :chứa tối đa 2500 phần tử iii. k : số phần tử của mảng b iv. n , m : số dòng và số cột của ma trận a b. Trong hàm void ganlai_2c() : có nhiệm vụ gán lại mảng a theo hình xoắn ốc có : i. Biến tmpcot = số cột -1 ( vì ta cho I chạy từ 0 ) ii. Biến tmpdong= số dòng -1 ( tương tự ) iii. Biến ptb : nghĩa là phần tử của b sẽ gán cho ma trận a và vị trí sẽ tăng lên sau khi gán ( nghĩa là chạy lên phần tử kế tiếp ) . iv. dem : đếm số lần gán để khống chế việc (VD : ma trận 3 x 4 thì chỉ gán 12 lần mà thôi ) v. ax : là biến tăng dòng vào bên trong , nó phụ thuộc vào x thay đổi theo x để tăng chỉ số các biên đi sâu vào ma trận . vi. Dòng for thứ nhất Gán cho dòng thứ nhất vii. Dòng for thứ hai : 1. Chạy từ tmpdong : là biến biên cột cố định j : chạy từ 1 vì đã sắp xếp cạnh thứ nhất rồi , j tăng sẽ gán từ từ ma trận b vào cột biên . 2. Sau vòng for này ta phải xét nếu dem = m*n thì cho dừng tránh trường hợp gán quá số phần tử của ma trận b viii. Dòng for thứ 3 : 1. Biến z được gán bằng tmpcot -1 có nghĩa là xét phần tử bên trong cột biên trở về ( tránh trường hợp xét phần tử ở cột vừa gán xong ) . ix. Dòng for thứ 4 : 1. biến t được gán bằng tmpdong – 1 , t giảm đến khi nào > ax . Vì bỏ đi phần tử nằm trên cùng cột nhưng ở dòng trên của nó . 3. BÀI GIẢI : #include #include int a[50][50],n,m,b[100],k=0; //Khoi tao mang toan cuc /*---------------Nhap Mang Ban Dau------------------------*/ void nhapmang() { printf("Ban Hay Nhap so dong va so cot cua ma tran "); scanf("%d%d",&n,&m); for(int i=0;ib[j]) { tmp=b[i]; b[i]=b[j]; b[j]=tmp; } } } /*-----------Gan lai mang 2 chieu luc dau && Xuat-----------------------*/ void ganlai_2c() { int x=0,tmpcot=m-1,tmpdong=n-1,ptb=0,ax,dem=0; while(dem=ax;z--) // gan vao bien 3 hang canh thu 3 { a[tmpdong][z]=b[ptb++]; dem++; } for(int t=tmpdong-1;t>ax;t--) // gan vao bien 4 hang canh thu 4 { a[t][ax]=b[ptb++]; dem++; } x++; tmpcot--; //giam vi tri tung bien de thanh soan oc tmpdong--; } } void xuata() { textcolor(-4); cprintf("Mang sau khi sap xep la :\n"); printf("\n\n"); for(int i=0;i HẾT

hailoc12

06-10-2006, 09:50 PM

void xuatmang(int a[100],int n) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:50 PM

BÀI 23 : 1. Ý TƯỞNG THUẬT TOÁN : a. Trước hết viết hàm tìm số nguyên tố . b. Cho vòng lặp đễ xác định được số nguyên tố đầu tiên và gán cho nó là lớn nhất . c. Sau đó tạo một vòng lặp quét hết các phần tử và kiểm tra nếu thỏa i. Lớn hơn số nguyên tố đựợc xác định lúc đầu và ii. Là số nguyên tố d. Ta sẽ tìm được số nguyên tố lớn nhất . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Ở bài này chỉ có hàm int ktnt(int x ) : trong đó x là đối số cần kiểm tra i là biến chạy , dem : là đếm số lần chia hết cho i b. Hàm void search(int a[100] , int n ) , trong đó : i. max : là biến dùng để gán giá trị là số nguyên tố lớn nhất ii. vt : là tìm vị trí của số nguyên tố lớn nhất c. Hàm main() có : i. a[100] : mảng tối đa có 100 phần tử ii. n : số phần tử trong mảng 3. BÀI GIẢI : #include #include void nhapmang(int a[100],int n) { for(int i=0;imax) // neu phan tu thu i lon hon max thi gan cho max { max=a[i]; vt=i+1; } } } if(max==0) printf("Trong mang khong co so nguyen to "); else printf(" \n So nguyen to lon nhat trong mang la %d tai phan tu so %d" , max,vt); } void main() { clrscr(); int a[100],n; printf(" Nhap so phan tu cua mang "); scanf("%d",&n); nhapmang(a,n); xuatmang(a,n); search(a,n); getch();

}

hailoc12

06-10-2006, 09:52 PM

BÀI 24 1. Ý TƯỞNG THUẬT TOÁN : a. Phải có một hàm tính tổng các phần tử trên một hàng và có một hàm hoán đổi vị trí các phần tử hai hàng với nhau . b. Sau đó viết một hàm có vòng lặp kiểm tra và hoán đổi đồng thời viết một hàm sắp xếp các phần tử tăng dần trên từng hàng . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Ở bài này thì có các hàm : i. Hàm int tong_hang(int a[50][50] , int m ,int k) : hàm này có nhiệm vụ trả về con số có giá trị là tổng của hàng k truyền vào .trong hàm có biến t : làm nhiệm vụ cộng dồn , z : là biến chạy vòng lặp ii. Hàm void swap_hang(int a[50][50] , int m ,int x ,int y ) : làm nhiệm vụ hoán đổi các phần tử giữa hai hàng x và y . iii. Hàm void sapxep( int a[50][50] , int n ,int m) : làm nhiệm vụ sắp xếp theo đề bài . Trong hàm có các biến : 1. k : là biến giới hạn hàng xét chỉ chạy tới dòng kế cuối mà thôi 2. z : là biến ứng với một giá trị của k thì z sẽ quét từ k+1 cho đến dòng cuối cùng 3. Đồng thời trong hàm còn có sắp xếp các phần tử tăng dần theo từng hàng có 3 dòng for a. Vòng for thứ nhất : giới hạn xét hàng b. Vòng for thứ hai : lấy từng phần tử đi so sánh c. Vòng for thứ ba : sẽ chạy các phần tử tiếp theo ứng từ giá trị phần tử của Vòng for thứ hai màquét cho đến hết số phần tử trên hàng đó rồi sắp xếp . iv. Ở hàm main() : có các biến a[50][50] : mảng tối đa 50 hàng và 50 cột , n : số hàng của mảng , m : số cột của mảng . 3. BÀI GIẢI : #include #include /*----------------Nhap Mang & Xuat Mang -----------------*/ void nhapmang(int a[50][50],int n,int m) { for(int i=0;itong_hang(a,m,z)) swap_hang(a,m,k,z); } k++; } // Sap xep tung hang tang dan for(int i=0;ia[i][p]) { tmp=a[i][j]; a[i][j]=a[i][p]; a[i][p]=tmp; } } } /*--------------------Ham Chinh --------------------------------*/ void main() { clrscr(); int a[50][50],n,m; printf("Nhap so dong"); scanf("%d",&n); printf("Nhap so cot"); scanf("%d",&m); nhapmang(a,n,m); xuatmang(a,n,m);// Xuat Mang Luc Dau sapxep(a,n,m); printf("\n\nsau khi sap xep mang la\n"); xuatmang(a,n,m);// Xuat Mang Luc sau getch(); }

HẾT

hailoc12

06-10-2006, 09:52 PM

BÀI 25 1. Ý TƯỞNG THUẬT TOÁN : a. Ta phải xác định ma trận tích thu được là có số dòng là số dòng của ma trận 1 và số cột là số cột của ma trận 2 . b. Từ đó xác định được giá trị giới hạn của vòng lặp rồi nhân theo phương pháp nhân 2 ma trận . c. Lưu ý Phải có cả hai điều kiện sau mới tính tích được i. số cột của ma trận 1 bằng số dòng của ma trận 2 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài có hàm : i. Void xuatmatran3(int kq[10][10] ,int a[10][10] , int b[10][10] ,int n ,int m , int c) : làm nhiệm vụ nhân và xuất ma trận kết quả . ii. Trong hàm có 3 dòng for : 1. Vòng for thứ nhất : Chạy trên từng dòng của ma trận 1 2. Vòng for thứ hai : Chạy trên từng cột của ma trận 2 3. Vòng for thứ ba : ứng với từng giá trị của Vòng for thứ nhất và vòng for thứ hai nó quét trên từng phần tử . 4. sau khi tính in ra phần tử đó luôn . b. Ở hàm main() gồm : i. a[10][10] : ma trận tối đa 10 hàng 10 cột ii. n, m : là số dòng và số cột của ma trận a iii. b[10][10] : ma trận tối đa 10 hàng 10 cột iv. d, c : là số dòng và số cột của ma trận b v. kq[10][10] : là ma trận kết quả có tối đa là 10 dòng và 10 cột 3. BÀI GIẢI : #include #include void nhapmatran1(int a[10][10],int n,int m) { int i,j; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { printf("a[%d][%d] ",i,j); scanf(" %d",&a[i][j]); } } void nhapmatran2(int b[10][10] ,int d,int c) { int i,j; for(i=1;i<=d;i++) { for(j=1;j<=c;j++) { printf("b[%d][%d]",i,j); scanf("%d",&b[i][j]); } } printf("\n\n\n"); } void xuatmatran3(int kq[10][10],int a[10][10],int b[10][10],int n,int m,int c) { int i,j,k; printf(" Ma tran ket qua la \n\n\n"); for(i=1;i<=n;i++) { for(j=1;j<=c;j++) { kq[i][j]=0; for(k=1;k<=m;k++) { kq[i][j]+=a[i][k]*b[k][j]; } //textcolor(i-9); printf("%5d",kq[i][j]); } printf("\n"); } } void main() { clrscr(); int n,m,d,c,a[10][10],b[10][10],kq[10][10]; printf("Nhap vao so Dong Va Cot cua ma tran 1 "); scanf("%d%d",&n,&m); nhapmatran1(a,n,m); printf("Nhap vao so Dong Va Cot cua ma tran 2 "); scanf("%d%d",&d,&c); nhapmatran2(b,d,c); if((n==c)&&(m==d)) xuatmatran3(kq,a,b,n,m,c); else printf("Hai ma tran nay khong nhan voi nhau duoc "); getch(); }

HẾT

hailoc12

06-10-2006, 09:52 PM

BÀI 26 1. Ý TƯỞNG THUẬT TOÁN : Tương tự bài só nguyên tố lớn nhất ở bài 23 . Nhưng ở bài này ta cần tìm ra số âm đầu tiên sau đó từ vị trí số ăm đó quét cho đến hết mảng và tìm ra số âm lớn nhất . 2. Ý NGHĨA MỘT SỐ BIÉN TRONG BÀI : a. Trong bài có hàm void search_am(int a[100] ,int n ) : làm nhiệm vụ tìm và in ra số âm lớn nhất trong mảng . Trong đó có các biến : i. max : là chứa số âm lớn nhất biến max thay đổi theo giá trị của số âm trên mảng . ii. vt : là biến chứa vị trí của phần tử hiện đang là số âm lớn nhất b. Hàm main() có : i. a[100] : mảng 1 chiều tối đa 100 phần tử . ii. n : số phần tử trong mảng . 3. BÀI GIẢI : #include #include void nhapmang(int a[100],int n) { for(int i=0;imax) { max=a[j]; vt=j+1; } } printf(" \n So Am lon nhat trong mang la %d tai phan tu so %d" , max,vt); } } void main() { clrscr(); int a[100],n; printf(" Nhap so phan tu cua mang "); scanf("%d",&n); nhapmang(a,n); xuatmang(a,n); search_am(a,n); getch(); }

HẾT

hailoc12

06-10-2006, 09:53 PM

BÀI 27 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này ta cần đếm số phần tử của một mảng con tăng bằng cách vừa xét vừa đếm sau đó lưu lại vị trí của phần tử bắt đầu xét và lưu lại vị trí của phần tử kết thúc mảng con tăng . Để thực hiện được như vậy ta cần có một biến lưu lại số phần tử của mảng con tăng sau đó nếu có mảng con tăng nào dài hơn nữa thì lưu lại những thông tin của mảng như đã nói ở trên . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong hàm void xuatmang_tang(int a[100] , int n ) gồm có : i. Biến vitri_1 : là biến để lưu lại vị trí của phần tử đầu tiên trong mảng con tăng dài nhất . ii. Biến vitri_2 : là biến để lưu lại vị trí cuối cùng của mảng con tăng dài nhất . iii. Biến s : là biến để lưu lại vị trí được tính từ phần tử đầu tiên a[0] đến phần tử kết thúc của mảng con tăng dài nhất iv. Biến t : là biến đếm số phần tử trong mảng con tăng . b. Trong hàm main() có : i. a[100] : mảng tối đa là 100 phần tử ii. n : là số phần tử trong mảng 3. BÀI GIẢI : #include #include /*-----------------------HAM NHAP MANG --------------------------*/ void nhapmang(int a[100],int n) { int i; printf("Ban hay Nhap Mang vao :\n"); for(i=0;ivitri_2) { vitri_1=i;//Tu pt bat dau xet vitri_2=t; //pt ket thuc mang con tang s=vitri_1+vitri_2;// s la bien tinh tu pt a[0] cho } // den pt ket thuc mang con tang } printf("Mang con tang dai nhat la :"); for(int k=vitri_1;k<=s;k++) printf("%4d",a[k]); } void main() { clrscr(); int a[100],n; printf("Ban hay nhap so phan tu cua mang :"); scanf("%d",&n); nhapmang(a,n); xuatmang(a,n); xuatmang_tang(a,n); getch(); }

HẾT

hailoc12

06-10-2006, 09:55 PM

BÀI 28 1. Ý TƯỞNG THUẬT TOÁN : a. Ta cũng cần có một hàm kiểm tra nguyên tố tương tự như các bài trước để xét từng phần tử . Nếu tại đó là số nguyên tố thì ta phải thực hiện hàm dời mảng đi một kí tự . b. Sau khi dời ta gán tại vị trí ở phía sau phần tử đó là 5 c. Lưu ý cho vòng lặp cộng thêm 2 hi đã gán 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài có hàm void insert(int a[100] , int &n ) dùng để chèn thêm phần tử là 5 vào sau phần tử là số nguyên tố . b. Trong hàm main() có : i. a[100] : là mảng tối đa có 100 phần tử ii. n : số phần tử của mảng 3. BÀI GIẢI : #include #include void nhapmang(int a[100],int n) { for(int i=0;ii+1;j--) a[j]=a[j-1]; a[i+1]=5; n+=1; i+=2; } else i++; } } void main() { clrscr(); int a[100],n; printf(" Nhap so phan tu cua mang "); scanf("%d",&n); nhapmang(a,n); xuatmang(a,n); insert(a,n); printf("\n Mang sau khi chen voi dieu kien de bai la \n"); xuatmang(a,n); getch(); }

HẾT

hailoc12

06-10-2006, 09:55 PM

BÀI 29 1. Ý TƯỞNG THUẬT TOÁN : a. Ở bài này ta chỉ cần đếm số làn xuất hiện của số đầu tiên là bao nhiêu lần sau đó gán giả sử cho nó là lớn nhất ,rồi quét trên mảng nếu gặp phần tử nào xuất hiện nhiều hơn thì ta gán cho nó là lớn nhất . b. Trước hết ta cần có một hàm đếm phần tử , sau đó là viết một hàm đếm kiểm soát , nếu gặp phần tử giống phần tử đã đếm rồi thì không đếm nữa ngược lại thì đếm và gán giả sử là lớn nhất như đã nói ở trên 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài có hàm int dempt( int x , int a[100] , int n ,int i ) : làm nhiệm vụ là đếm số lần xuất hiện của phần tử đó từ nó trở đi . vì các số trước nó đã xét và đếm nên không cần đếm lại . b. Hàm void max_xuat( int a[100] , int n ) : làm nhiệm vụ xét và tìm ra phần tử xuất hiện nhiều nhất , trong hàm có các biến : i. max : để chứa số lần xuất hiện của phần tử ii. pt : là để lưu lại giá trị của phần tử xuất hiện nhiều nhất . iii. Vòng lặp for thứ nhất : quét tất cả các phần tử từ phần tử đầu tiên cho đến phần tử cuối cùng . iv. Vòng for thứ hai : ứng mỗi giá trị của phần tử tại vị trí i thì ta xét phần tử đó có giống một phần tử nào phía trúớc đó hay không nếu giống thì không đếm nữa thoát khỏi vòng lặp tăng giá trị i lên ngược lại thì đếm . c. Hàm main() gồm các biến : i. a[100] : mảng phần tử tối đa 100 kí tự ii. n: số phần tử trong mảng . 3. BÀI GIẢI #include #include void nhapmang(int a[100],int n) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:56 PM

BÀI 30 1. Ý TƯỞNG THUẬT TOÁN : a. Ở bài này cũng tương tự như những bài trên ta cũng cần có một hàm kiểm tra số đó có phải là số nguyên tố hay không . b. Nếu phải thì tại vị trí đó dời mảng trở về một phần tử . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Hàm kiểm tra số nguyên tố tương tự như lời giải thích của những bài trên b. Hàm void xoa_ngto( int a[100] , int &n ) : làm nhiệm vụ xóa các số nguyên tố có trong mảng c. Hàm main() gồm các biến : i. a[100]: mảng tối đa có 100 phần tử ii. n : số phần tử của mảng 3. BÀI GIẢI : #include #include void nhapmang(int a[100],int n) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:56 PM

BÀI 31 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này ta chỉ cần viết hàm sắp xếp các số dương bằng cách có hai vòng lặp i. Vòng lặp thứ nhất : làm nhiệm vụ quét các phần tử từ phần tử đầu tiên cho đến phần tử kế cuối ii. Vòng lặp thứ hai : ứng với các giá trị phần tử của vòng lặp thứ nhất vòng lặp thứ hai quét đến hết mảng sau đó làm nhiệm vụ hoán đổi nếu thỏa điều kiện . 2. Ý NGHÍA MỘT SỐ BIẾN TRONG BÀI : a. Trong bài có : i. a[100] : mảng tối đa 100 phần tử ii. n : số phần tử trong mảng 3. BÀI GIẢI : #include #include void nhapmang(int a[100],int n) { for(int i=0;i=0) { if((a[i]>a[j])&&(a[j]>=0)) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } else break; } } } void xuatmang(int a[100],int n) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:57 PM

BÀI 32 1. Ý TƯỞNG THUẬT TOÁN : a. Ở bài này ta nên ưu tiên lấy phần tử gần với x mà đứng trước x b. Ta phải có một hàm làm nhiệm vụ tìm phần tử gần với x nhất . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. Ở hàm void search_pt(int a[50][50] , int n ,int m , int x ) gồm có : i. min : là biến chứa hiệu của số x và phần tử a[0][0] . ii. y : là biến chứa hiệu giữa x và a[i][j] . iii. pt : là biến chứa giá trị của phần tử gần với x nhất . b. Ở hàm main() : i. a[50][50] : mảng có tối đa 50 dòng 50 cột ii. n , m : là số dòng và số cột iii. x : là biến được input . 3. BÀI GIẢI : #include #include #include /*----------------Nhap Mang & Xuat Mang -----------------*/ void nhapmang(int a[50][50],int n,int m) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:58 PM

BÀI 33 : 1. Ý TƯỞNG THUẬT TOÁN : a. Ở bài này ta chỉ cần vẽ một ma trận vuông cấp 4 chẳng hạn sau đó quan sát các biến chạy thay đổi rồi tìm ra quy luật của nó . b. Ví dụ muốn tính tổng các phần tử trên đường chéo chính chẳng hạn trong ma trận cấp 4 thì các phần tử ở các vị trí như sau ( 00 ,11 , 22 , 33 ) thì ta cho vòng lặp chạy từ 0 cho đến n-1 sau đó khai báo một biến cộng dồn lại các phần tử a[i][i] khi vòng lặp chạy . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài chỉ có mảng a[50][50] : tối đa 50 dòng 50 cột , n : là cấp ma trận 3. BÀI GIẢI : #include #include /*----------------Nhap Mang & Xuat Mang -----------------*/ void nhapmang(int a[50][50],int n) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:58 PM

BÀI 34 1. Ý TƯỞNG THUẬT TOÁN : a. Trước hết ta phải xác định chuyển mảng sang mấy dòng mấy cột . b. Sau đó mới gán tử mảng 1 chiều sang mảng 2 chiều . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài chỉ có các biến : i. a[100] : mảng 1 chiều có 100 phần tử ii. c[100][100] : mảng 2 chiều có tối đa là 100 dòng và 100 cột iii. x: là số phần tử trên mảng 1 chiều iv. n , m : là các biến input chính là số dòng và số cột của ma trận 3. BÀI GIẢI : #include #include void nhap(int a[100],int n) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:59 PM

BÀI 35 1. Ý TƯỞNG THUẬT TOÁN : Trong bài này trước hết ta kiểm tra trên từng hàng của ma trận coi có số 0 hay không : i. Có số 0 bẻ khỏi vòng for xét tiếp các điều kiện để gán dĩ nhiên là không thỏa . ii. Nếu dòng đó không có số 0 thì gán cho ma trận b 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài có hàm : i. Void tao_mtb( int a[50][50] ,int b[50][50] , int &l , int n ,int m , int &flag ) : làm nhiệm vụ tạo ra ma trận b trong hàm có : 1. p : là biến chạy dòng của ma trận b . 2. vòng for thứ nhất chạy trên dòng của ma trận a . 3. vòng for thứ hai ứng với vòng for thứ nhất để chạy trên từng cột của ma trận a 4. Nếu vòng for thứ hai chạy đến hết ( nghĩa là không có số 0 trên dòng hiện tại ) thì vòng for thứ ba sẽ gán ma dòng hiện tại vào ma trận b . ii. Ở hàm main() có : 1. a[50][50] : là mảng có tối đa là 50 dòng và 50 cột . 2. n,m : là số dòng và số cột của ma trận a . 3. l : là số dòng của ma trận b 4. flag : là biến lá cờ để biết b có nhận được giá trị nào hay không nếu không thì không xuất ra ma trận b . 3. BÀI GIẢI #include #include #include /*----------------Nhap Mang & Xuat Mang -----------------*/ void nhapmang_a(int a[50][50],int n,int m) { for(int i=0;i HẾT

hailoc12

06-10-2006, 09:59 PM

BÀI 36 1. Ý TƯỞNG THUẬT TOÁN : a. Ở bài này ta xét một phần tử rồi so sánh hết các phần tử trong mảng sau đó đổi chỗ , vấn đề ở chỗ là bạn phải xét phần tử như thế nào và quét theo tuần tự nào . b. Bài này ta thực hiện bằng cách tạo ra hai vòng lặp *****g nhau sau đó quét từ phần tử đó cho hết mảng nhưng quét theo từng cột . Nhưng lưu ý là ví dụ như một ma trân 3 x 4 thì giả sử như hai vòng lặp trên xét tới phần tử 03 thì ta phải so sánh với phần tử thứ 01 trở đi ( 11 , 21 , 31 .. 02 , 12 , 22,32 ….) . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : Trong bài có hàm void sapxep(int a[50][50] , int n , int m )gồm có các biến như sau : i. t : là biến định vị trí dòng để xét đến vị trí kế tiếp ii. p : là biến chạy quét trên từng cột mà ứng một giá trị p sẽ chạy vòng lặp for k cho đến khi k = n-1 hóan đổi nếu thỏa và xét tiếp . 3. BÀI GIẢI : #include #include #include /*----------------Nhap Mang & Xuat Mang -----------------*/ void nhapmang(int a[50][50],int n,int m) { for(int i=0;ia[k][p]) { tmp=a[i][j]; a[i][j]=a[k][p]; a[k][p]=tmp; } if(k==n-1) { t=-1;//Chuyen sang cot moi xet tu phan tu dau tien break; } } } } void main() { clrscr(); int a[50][50],n,m,x; printf("Nhap vao so dong "); scanf("%d",&n); printf("Nhap vao so cot "); scanf("%d",&m); nhapmang(a,n,m); xuatmang(a,n,m); sapxep(a,n,m); printf("\n\n Ma Tran sau khi sap xep la \n\n"); xuatmang(a,n,m); getch(); }

HẾT

hailoc12

06-10-2006, 10:00 PM

BÀI 37 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này để viết các hàm : i. Xóa đầu chuỗi : trước hết ta phải xác định là có khoảng trắng hay không và nếu có thì có mấy khoảng trắng để ta dời mảng kí tự về với số lần dời bằng số khoảng trắng . Sau đó gán tại vị trí n-1 – số khoảng trắng là kí tự ‘ \0 ‘ . ii. Xóa giữa chuỗi : Nếu gặp hai khoảng trắng liền nhau thì ta xóa đi một khoảng trắng bằng cách là dời tại vị trí khoảng trắng đó về 1 kí tự . iii. Xóa cuối chuỗi : N?u g?p kí t? tr?ng ? cu?i chu?i thì ta d?i kí t? ‘ \ 0 ‘ về 1 kí tự . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : N : là độ dài của chuỗi 3. BÀI GIẢI : #include #include #include void nhap(char *str) { gets(str); } void xuat(char *str) { puts(str); } void xoadauchuoi(char *&str,int &n) { int i=0,dem=0; if(str[0]==' ') { while(str[i]==' ') { dem++; i++; } for(int j=dem;j HẾT

hailoc12

06-10-2006, 10:01 PM

Bài 38 : 1. Ý TƯỞNG THUẬT TOÁN : Ở bài này trước hết ta phải xét xem chuỗi s1 có dài hơn chuỗi s2 không . sau đó khai báo một chuỗi tạm để cắt một chuỗi bằng độ dài của chuỗi s2 đem so sánh với chuỗi s2 .Nếu bằng thì đếm tăng lên 1 ngựợc lại xét từ phần tử tiếp theo lại cắt một chuỗi như vậy cho đến hết chuỗi s1 . 2. Ý NGHĨA MỘT SỐ BIẾN TRONG BÀI : a. s1[100] , s2[100] , tmp[100] : lần lượt là chuỗi s1 ,s2 và chuỗi tạm . b. m : là độ dài của chuỗi s1 . c. n: là độ dài của chuỗi s2 . d. trong hàm ganchuoi có các biến : i. x : là biến chạy các phần tử của chuỗi tmp . ii. i : là biến chuyển dịch chuỗi lên 1 kí tự . iii. k : là biến lặp chạy vừa đủ độ dài của chuỗi s2 để đem so sánh . iv. p : là biến trả về 0 nếu s2 và tmp bằng nhau . 3. BÀI GIẢI : #include #include #include void nhapchuoi1(char *s1) { printf("Nhap Vao Chuoi ki tu thu nhat :\n"); gets(s1); } void nhapchuoi2(char *s2) { printf("Nhap Vao Chuoi ki tu thu hai :\n "); gets(s2); } void demchuoi(char *s1,char *s2,char *tmp,int n,int m,int &dem) { int x=0,i=0,p; while(i=n) { demchuoi(s1,s2,tmp,n,m,dem); if(dem==0) printf("Khong co chuoi s2 trong s1 "); else printf("So lan xuat hien cua chuoi s2 trong s1 la %d lan " ,dem); } else printf("\nKhong co Chuoi s2 trong s1 "); getch(); }

HẾT

hailoc12

06-10-2006, 10:05 PM

Rất cám ơn bạn trieuanhl đã đưa ra cách giải quyết cho bài này, tuy còn một số vấn đề về cách sử dụng hàm gets nhưng nhìn chung đã đi đúng hướng. Còn dưới đây mình xin post đáp án bài này theo đúng chương trình. Bài 40 #include #include #include //---------------------HAM NHAP CHUOI --------------------------------------- void nhap(char *str) { printf("Nhap vao chuoi ki tu : \n"); gets(str); } //---------------------HAM XUAT CHUOI------------------------------------------- void xuat(char *str) { textcolor(2); cputs(str); } //--------------------HAM DOI THANH CHUOI HOA------------------------------------- void doithanhhoa(char *str) { int n=strlen(str); for(int i=0;i96)&&(str[i]<133)&&(str[i]!=' ')) str[i]=str[i]-32; } } //---------------------CHUONG TRINH CHINH----------------------------------- void main() { clrscr(); char str[1000]; nhap(str); printf("Chuoi ki tu luc dau la : \n"); xuat(str); doithanhhoa(str); printf("\nChuoi ki tu luc sau la : \n"); xuat(str); getch(); }

HẾT

hailoc12

06-10-2006, 10:06 PM

Bài 41 //DEM SO TU CUA CHUOI #include #include #include //---------------------NHAP CHUOI ------------------------------------------- void nhap(char *str) { gets(str); } //--------------------XUAT CHUOI---------------------------------------------- void xuat(char *str) { puts(str); } //---------------------DEM SO TU TRONG CHUOI ---------------------------------- int dem(char *str) { int dem; if (str[0]==' ') dem=0; else dem=1; for (int i=0;i HẾT

hailoc12

06-10-2006, 10:08 PM

Bài 44 : #include #include #include struct sinhvien { int mssv,phai; char hoten[30]; float dtb; }; void nhap(sinhvien sv[30],int n) { float tmp; for(int i=0;isv[j].mssv) { tmp=sv[i]; sv[i]=sv[j]; sv[j]=tmp; } } } } void xuat(sinhvien sv[30],int n) { printf("\n\nMaSo\t"); printf("Ho Ten \t\t\t"); printf("Phai \t"); printf("Diem TB\n\n"); for(int i=0;i HẾT

hailoc12

06-10-2006, 10:09 PM

Còn đây là đáp án, tất nhiên nó chỉ là tương đối thôi Bài 42 #include #include #include struct sophuc { float thuc; float ao; }; void nhap(sophuc &c) { printf("ban hay nhap vao phan thuc "); scanf("%f",&c.thuc); printf("ban hay nhap vao phan ao "); scanf("%f",&c.ao); } void cong(sophuc a,sophuc b) { sophuc c; c.thuc=a.thuc+b.thuc; c.ao=a.ao+b.ao; printf("\n\n\nTong hai so phuc %f",c.thuc); if(c.ao<0) printf("%.2fi",c.ao); else printf("+%.2fi",c.ao); } void tru(sophuc a,sophuc b) { sophuc c; c.thuc=a.thuc-b.thuc; c.ao=a.ao-b.ao; printf("\nHieu hai so phuc %.2f",c.thuc); if(c.ao<0) printf("%.2fi",c.ao); else printf("+%.2fi",c.ao); } void nhan (sophuc a,sophuc b) { sophuc c; c.thuc=a.thuc*b.thuc+a.ao*b.ao*(-1); c.ao=a.thuc*b.ao+a.ao*b.thuc; printf("\nTich cua hai so phuc %.2f",c.thuc); if(c.ao<0) printf("%.2fi",c.ao); else printf("+ %.2fi",c.ao); } void chia (sophuc a, sophuc b) { sophuc c; float x; x=pow(b.thuc,2)+pow(b.ao,2)*(-1); // Phan mau cua thuong hai so phuc c.thuc=(a.thuc*b.thuc+a.ao*b.ao)/x; //Phan thuc tren tu chia cho mau c.ao=(a.thuc*b.ao*(-1)+a.ao*b.thuc)/x;//phan ao tren tu chia cho mau printf("\nThuong cua hai so phuc %.2f",c.thuc); if(c.ao<0) printf("%.2fi",c.ao);//Neu ao nho hon 0 thi in ra ao se co dau tru else printf("+ %.2fi",c.ao);//nguoc lai se in ra + phan ao } void main() { clrscr(); sophuc a,b; textcolor(5-10); cprintf("Ban hay nhap vao so phuc a"); printf("\n"); nhap(a); cprintf("Ban hay nhap vao so phuc b"); printf("\n"); nhap(b); cong(a,b); printf("\n"); tru(a,b); printf("\n"); nhan (a,b); printf("\n"); if((b.ao!=0)||(b.thuc!=0)) chia(a,b); else { textcolor(-9); printf("\n\n"); cprintf("Khong thuc hien phep chia duoc "); } getch(); }

HẾT

hailoc12

06-10-2006, 10:09 PM

Đáp án đây: Bài 43 #include #include #include //-------------------KHAI BAO PHAN SO---------------------------------------- struct phanso { int tu; int mau; }; //-------------------NHAP PHAN TU-------------------------------------------- void nhap(phanso &n) { printf("ban hay nhap vao tu so"); scanf("%d",&n.tu); printf ("ban hay nhap vao mau so"); scanf("%d",&n.mau); } int ucln(int a,int b) { while((a!=0)&&(b!=0)) { if(a>=b) a-=b; else b-=a; } if(a==0) return b; else return a; } //-------------------CONG HAI PHAN SO---------------------------------------- phanso cong(phanso a, phanso b) { phanso c; int x; if(a.mau!=0&& b.mau!=0) { c.tu=a.tu*b.mau+a.mau*b.tu; c.mau=a.mau*b.mau; x=ucln(c.tu,c.mau); c.tu/=x; c.mau/=x; return c; } else exit(1); } //---------------------NHAN HAI PHAN SO---------------------------------------\ phanso nhan(phanso a,phanso b) { phanso c; int x; if(a.mau!=0&&b.mau!=0) { c.tu=a.tu*b.tu; c.mau=a.mau*b.mau; x=ucln(c.tu,c.mau); c.tu/=x; c.mau/=x; return c; } else exit(1); } //----------------------CHIA HAI PHAN SO--------------------------------------- phanso chia(phanso a,phanso b) { phanso c; int x; if(a.mau!=0&&b.mau!=0&&b.tu!=0) { c.tu=a.tu*b.mau; c.mau=a.mau*b.tu; x=ucln(c.tu,c.mau); c.tu/=x; c.mau/=x; return c; } else exit(1); } //----------------------TRU HAI PHAN SO---------------------------------------- phanso tru(phanso a,phanso b) { phanso c; int x; if(a.mau!=0&&b.mau!=0) { c.tu=a.tu*b.mau-b.tu*a.mau; c.mau=a.mau*b.mau; x=ucln(c.tu,c.mau); c.tu/=x; c.mau/=x; return c; } else exit(1); } //----------------------CHUONG TRINH CHINH------------------------------------ void main () { clrscr(); phanso a; phanso b; textcolor(6-9); cprintf("ban hay nhap vao phan so a"); printf("\n"); nhap(a); cprintf ("ban hay nhap vao phan so b"); printf("\n"); nhap(b); printf("tong hai phan so la %d/%d",cong(a,b)); printf("\n"); printf("hieu cua hai phan so %d/%d",tru(a,b)); printf("\n"); printf("tich cua hai phan so %d/%d",nhan(a,b)); printf("\n"); printf("thuong cua hai phan so %d/%d",chia(a,b)); getch(); }

HẾT

hailoc12

06-10-2006, 10:10 PM

Bài 45 : #include #include #include struct sinhvien { int mssv,phai; char hoten[30]; float dtb; }; void nhap(sinhvien sv[30],int n) { float tmp; for(int i=0;ivt;i--) { sv[i]=sv[i-1]; } n+=1; printf("\n Nhap vao thong tin cua sinh vien can chen "); printf("\nMa so sinh vien "); scanf("%d",&sv[vt].mssv); printf("Ho Ten Sinh vien "); fflush(stdin); gets(sv[vt].hoten); printf("Phai "); scanf("%d",&sv[vt].phai); printf("Diem Trung Binh "); scanf("%f",&tmp); sv[vt].dtb=tmp; } void timsv_ms(sinhvien sv[30] , int maso , int n) { for(int i=0;i }

hailoc12

06-10-2006, 10:11 PM

Bài 46 : #include #include void docfile(char x[30],unsigned long &dodai) { char ch; // Bien dem ki tu FILE *fp; fp=fopen(x,"r"); if(fp==NULL) ("Khong The Mo Tap Tin "); else { while((ch=getc(fp))!=EOF) //neu gap ki tu cuoi file thi ket thuc { putc(ch,stdout); //doc tung ki tu roi xuat ra man hinh dodai++; } } fclose(fp); printf("\n\nDo dai cua File la %lu ",dodai); } void main() { clrscr(); unsigned long dodai=0; char x[30]="bt46.txt"; docfile(x,dodai); getch(); }

HẾT

hailoc12

06-10-2006, 10:12 PM

Bài 47 #include #include #include struct date // khai bao bien cau truc ngay thang nam { int ngay,thang; unsigned long nam; }; struct nhanvien // dinh nghia kieu du lieu nhan vien bao gom { int msnv,phai; char hoten[30]; char diachi[100]; char phone[10]; float luong; date ngaybd,birthday; }; /*----------------------HAM nhap nhan vien ------------------------*/ void nhap(nhanvien nv[30],int n) { float tmp; for(int i=0;iluongmax) luongmax=nv[i].luong; } return luongmax; } void in_list_max(nhanvien nv[50],int n) { getch(); printf("\n\n-----------------------------------------------------------\n\n"); printf("\n\n Nhan vien co luong cao nhat la : \n"); float x=max_luong(nv,n); for(int i=0;i }

hailoc12

06-10-2006, 10:12 PM

Bài 48 : #include #include #include /*-------------Ham dem so lan xuat hien cua mot ki tu -----------*/ int dem_sotu(char str[255],char n) { int dem=0,x= strlen(str); for (int i=0;i }

hailoc12

06-10-2006, 10:13 PM

Bài 49 : #include #include #include /*-----------Ham dem so tu tren mot chuoi cho truoc ------*/ int count_sotu(char *str)//con tro *str cho den dia chi str { int dem; int x = strlen(str); if (str[0]==' ') dem =0; else dem=1; for (int i=0;i }

hailoc12

06-10-2006, 10:13 PM

Bài 50 ; #include #include #include void ghi(char s[50],char s1[50],char s2[50]) { FILE *fp=fopen(s1,"rt"); FILE *fq=fopen(s2,"rt"); FILE *fk=fopen(s,"a+t"); char c[255]; int n; // char *x=fgets(c,255,p); /* while(x!=NULL) { fputs(c,q); x=fgets(c,255,fp); } */ char ch; int dem=1; while((ch=getc(fp))!=EOF) //neu gap ki tu cuoi file thi ket thuc { fprintf(fk,"%c",ch); } fclose(fp); while((ch=getc(fq))!=EOF) { if(dem==1) { if(ch>65&&ch<97) { fprintf(fk,"\n"); fprintf(fk,"%c",ch); dem++; } else fprintf(fk,"%c",ch); dem++; } else fprintf(fk,"%c",ch); dem++; } fclose(fq); fclose(fk); } void main() { clrscr(); char s1[50]="bt50a.txt"; char s2[50]="bt50b.txt"; char s[50]="filenoi.txt"; ghi(s,s1,s2); getch();

}

hailoc12

01-10-2007, 01:42 PM

BÀI TẬP Giải và biện luận phương trình bâc hai. (Phuong trinh bac 2) Nhập vào một ngày tháng năm. Cho biết ngày đó là ngày thứ mấy. (Lay thu cua ngay thang) Nhập vào số ngày. Cho biếy ngày đó là ngày tháng năm. (Ngay thu may trong nam) Viết chương trình kiểm tra xem ngày đó có hợp lệ hay không? (Ngay co hop lehay khong) Viết một chương trình có menu đơn giản(Ve menu don gian) Ø Vẽ hình chữ nhật Ø Vẽ hình vuông Ø Thóat Ø In ra hình tương ứng sau khi tiếp nhậyn các giá trị cho biết kích thước , theo yêu cầu của tượng hình . Dùng kí hiệu dấ hoa thi * để vẽ hình. Viết chương trình phân tích một số ra thừa số nguyên tố .(Phan tich ra thua so nguyen to) Viết chương trình cho biết số nhập vào có phải là số chính phương .(Kiem tra so chinh phuong) Viết chương trình kiểm tra số đó có phải là số nguyên tố hay không?(Kiem tra so nguyen to) Tìm lại bội số chung nhỏ nhất và ước số chung lớn nhất của hai số nhâp vào. Viết chương trình in ra như sau:(với chiều cao của các tam giác xuất ra do ngườinhập sẽ nhập vào) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Viết chương trình sử dụng vòng lặp để in ra bảng cửu chương từ 2 đến 9 theo hàng ngang. Viết chương trình mô phong cách nhấn tay hai số tự nhiên bất kì. Viết chương trình tính s= 1+ 2 +…+n . Viết chương trình tính s= 1* 2 *…*n . Viết một chương trình kiểm tra xem một ngày nào đó có hợp lệ hay không? Viết hàm tính căn bậc 2 của mốt số . Viết hàm đảo ngược vị trí các phần tử trong mảng một chiều. Viết hàm nhập vào một mảng a có n số nguyên to. Viết hàm nhập mảng a gồm n phân tử sao cho các số chẳn và lẻ xen kẽ nhau. Viết hàm nhập vào một ma trận xuất ra ma trận chuyển vị. Viết hàm nhập vào một ma trận theo dạng xoắn ốc . Viết hàm xắp xếp mảng a tăng dần . Viết hàm tìm phân tử có số nguyên tố lớn nhất . Nhập vào một ma trận , tìm tổng của từng dòng và xắp xếp các dòng tăng dần theo cái tổng đó. Viết hàm tìm ma trận là tích của hai ma trận . Viết hàm tìm số âm lớn nhất trong mảng. Viết hàm tìm dãy con tăng dài nhất trong mảng . Viết hàm chen phần tử có giá trị 5 vào trong mảng sau các vi trí mà giá trị tại đó là số nguyên tố. Viết hàm in ra màn hình phân tử xuất hiện nhiều nhật trong mảng . Viết hàm sóa tất cả các số nguyên tố trong mảng a . Viết hàm sắp thứ tự tăng các số dương và giữ cố định các số còn lại . Tìm phấn tử trong ma trận gần tới x nhất . Viết hàm tính tổng tam giác trên , tổng tam giác dưới. Viết hàm chuyển mảng 1 chiều b sang ma trận a (n*m) theo dòng . Viết hàm tạo ma trận b từ ma tr65n a bằng cách sóa các dòng có chứa số 0 của mảng a . Viết hàm sắp xếp mảng a 2 chiều theo từng cột . Viết hàm xóacác khỏang trắng ờ đầu chuỗi , cuối và giữa chuỗi . Viết hàm tìm số lần xuất hiện của chuỗi s2 trong chuỗi s1 . Viết hàm đổi chuỗi ra thành chuỡi thường . Viết hàm đổi chuỗi ra thành chuỗi hoa . Viết hàm đếm số từ trong chuỗi . Viết hàm thực hiện phép cộng trừ nhân chia 2 số phức . Viết hàm thực hiện phép cộng trừ nhân chia 2 phân số . Viết chương trình nhập vào 50 sinh viên với mỗi sinh viên gồm các thônh tin sau: mã sinh viên , họ tên , phái , điểm trung bình . Sau đó xuất ra màn hình mỗi sinh viên là một dòng theo thứ tự tăng dần của mã số sinh viên . Viết hàm thêm vào một sinh viên . Tìm một sinh viên theo mã số . Viết hàm tìm độ dài của file . Viết chương trình nhập dữ liệu các nhận viên của một cơ quan và lưu vào file . Sau đó thực hiện các công việc sau : nhập vào một số thứ tự , sửa dữ liệu của nhân viên này vào file viết các hàm thực hiện các công việc sau : Tìm lương thấp nhất của cơ quan Tìm lương trung bình của cơ quan In ra danh sách nhân viên In ra những người có lương cao nhất In ra những người có lương thấp nhất Viết hàm tính số lần xuất hiện của 1 kí tự chữ cái trong tập tin văn bản . Viết hàm tính số từ có trong tập tin

Viết hàm nối hai tập tin văn bản với nhau thành một tập tin

soithuytinh

13-11-2007, 06:58 PM

trời đất Đề Bài lại post tận cuối cùng làm mình vừa đọc vừa đoán đề bài. bạn hailoc12 và các bạn khác post bài nào ghi rõ đề chứ >_<.

tks các bạn các bài tập cơ bản rất có ích cho người mới học .... như mình.

nguyendinhan

01-01-2008, 01:38 AM

tui có code kiểm tra SNT cũng được các bạn xem thử nha int SNT(int n) { int dem=0,i=1; while(i<=n) { if(n%i==0) dem++; i++; } return (dem==2); } mình cũng có 1 bài chuỗi này các bạn tham khảo nha void demso(char *s,char *tam,char *p) { int dem,j,n=strlen(s),k=0,max=-MAXINT; *tam='\0'; *p=NULL; for(int i=0;i<=n-1;i=i+dem+1)//dem la dem tung so { dem=0; if(s[i]!=32&&s[i]!='0') { dem++; for( j=i+1;s[j]!=32&&s[j]!='0'&&j=l) return 1; i++; } return 0; } Lưu ý: - Đọc nội quy trước khi gửi bài viết. - Để code trong cặp tag code. - Không gửi liên tiếp, liền nhau quá nhiều bài viết.

(Nhắc nhở bởi Dr)

nguyendinhan

01-01-2008, 01:47 AM

và 1 bài về ma trận cũng được nè:tăng dần theo đường xoắc ốc void saptang(int b[],int n) { for(int i=0;ib[j]) { int tam=b[i]; b[i]=b[j]; b[j]=tam; } } void tangdanxoanoc(int a[][100],int c) { int b[1000],k=0; int i,trai=0,phai=c-1,tren=0,duoi=c-1; while(trai<=phai&&tren<=duoi) { for(i=trai;i<=phai;i++) b[k++]=a[tren][i]; for(i=tren+1;i<=duoi;i++) b[k++]=a[i][phai]; for(i=phai-1;i>=trai;i--) b[k++]=a[duoi][i]; for(i=duoi-1;i>=tren+1;i--) b[k++]=a[i][trai]; trai++,phai--,tren++,duoi--; } saptang(b,k); k=0; i,trai=0,phai=c-1,tren=0,duoi=c-1; while(trai<=phai&&tren<=duoi) { for(i=trai;i<=phai;i++) a[tren][i]=b[k++]; for(i=tren+1;i<=duoi;i++) a[i][phai]=b[k++]; for(i=phai-1;i>=trai;i--) a[duoi][i]=b[k++]; for(i=duoi-1;i>=tren+1;i--) a[i][trai]=b[k++]; trai++,phai--,tren++,duoi--; }

}

nguyendinhan

01-01-2008, 01:48 AM

và những bài tui mới làm về ma trận nè #include #include #include void nhap(int a[][100],int &d,int &c) { printf("\nnhap dong:"); scanf("%d",&d); printf("\nnhap cot:"); scanf("%d",&c); for(int i=0;itong1dong(a,c,j)) hoanvi(a,d,i,j); } void sapxepzizac(int a[][100],int d,int c) { float b[1000]; int k=0,i,j; for(i=0;ib[j]) { float tam=b[i]; b[i]=b[j]; b[j]=tam; } k=0; for(i=0;i=0;j--) { a[i][j]=b[k]; k++; } } } void xoacheochinh(int a[][100],int d,int &c) { for(int i=0;i-1;j--) { for(int i=d-j;i0&&b[j]<0||b[i]<0&&b[j]<0&&b[i]>b[j]||b[i]>0&&b[j]>0&&b[i]a[k][j]||a[k][i]%2!=0&&a[k][j]%2!=0&&a[k][i]>a[k][j]) { int tam=a[k][i]; a[k][i]=a[k][j]; a[k][j]=tam; } } void chantanglegiam(int a[][100],int d,int c) { for(int k=0;ka[k][j]||a[k][i]%2!=0&&a[k][j]%2!=0&&a[k][i]a[j][l]) { int tam=a[i][l]; a[i][l]=a[j][l]; a[j][l]=tam; } } } int demcucdai(int a[][100],int d,int c) { int dem=0; for(int k=0;ka[k][i+1]&&a[k][i]>a[k][i-1]) dem++; } return dem; } int tongcucdai(int a[][100],int d,int c) { int s=0,s1=0,s2=0; for(int h=0;ha[h][i+1]&&a[h][i]>a[h][i-1]) s1=s1+a[h][i]; } for(int k=0;ka[j+1][k]&&a[j][k]>a[j-1][k]) s2=s2+a[j][k]; } s=s1+s2; return s; } int hoitucacdong(int a[][100],int d,int c) { for(int k=0;k }