|
Bài gửi sau cùng |
---|
Bài gửi | Người gửi | Thời gian | Happy new year 2013 | | Sat Dec 29, 2012 3:45 pm
| Lâu rùi anh không thấy chú nào vào diễn đàn nữa | | Mon May 07, 2012 9:26 am
| Happy new year 2012. | | Mon Jan 30, 2012 5:05 am
| [color=red]Tin "Cực Hot" cho tất cả các bạn và người thân[/color] | | Wed Oct 05, 2011 4:44 am
| Cách đổi lịch âm dương | | Mon Oct 03, 2011 2:24 am
| lâu lâu rùi không lên diễn đàn lớp mình chém gió | | Fri Sep 30, 2011 9:44 am
| TRIỂN LÃM DU HỌC NHẬT BẢN 2010 Vừa học vừa làm thu nhập 1700USD/1 tháng | | Wed Sep 28, 2011 8:00 am
| Vừa đi làm, vừa làm cộng tác viên kiếm tiền... | | Sun Aug 07, 2011 11:37 am
| :(((((((((((((((((((((((((((((((((((((((((((((((((((((((( | | Sat Aug 06, 2011 5:05 am
| Khánh thành website học tiếng anh của Chiến | | Fri Aug 05, 2011 10:30 am
| Funy : Counter strike =)) | | Mon Jul 25, 2011 10:43 am
| Lịch học hè | | Fri Jul 08, 2011 4:11 pm
| Tổng hợp ảnh 24/06/2011 - Lễ tốt nghiệp | | Wed Jul 06, 2011 9:17 am
| Câu lạc bộ tiếng anh của Chiến - cơ hội giao lưu người bản xứ | | Tue Jun 28, 2011 9:41 pm
| [K52A3] CÔNG BỐ TÀI CHÍNH QUỸ LỚP (10/03/2011) | | Thu Jun 23, 2011 5:35 pm
| [VPK] DANH SÁCH TỐT NGHIỆP CHÍNH THỨC | | Thu Jun 23, 2011 5:31 pm
| [VPK] LỄ TRAO BẰNG TỐT NGHIỆP | | Wed Jun 22, 2011 11:59 am
| Pic 21/06 (new and hot) | | Wed Jun 22, 2011 10:28 am
| Gameloft Hà Nội tuyển dụng | | Mon Jun 20, 2011 8:18 pm
| [ CTCTSV ] 21 THÁNG 6 ĐI LẤY HỒ SƠ TỐT NGHIỆP | | Sat Jun 18, 2011 9:38 am
| |
| Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C | |
|
+3dat_tn_89nd Che..vankhe chien2311 7 posters | Tác giả | Thông điệp |
---|
chien2311 Enterprise Admin
Tổng số bài gửi : 1224 Sinh nhật : 23/11/1988
| Tiêu đề: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Sat May 14, 2011 2:13 pm | |
|
Đây là bài giải theo phương pháp tư duy của người học ngôn ngữ C Mình chia sẻ bài giải với các bạn
Tải về : Tại đâybạn nào có phương án hay hơn thì chia sẻ nhé ! | |
| | | Che..vankhe Đại Tổng Quản
Tổng số bài gửi : 129 Sinh nhật : 09/07/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Sat May 14, 2011 6:02 pm | |
| Xin thêm mấy chữ : Post code lên đây cho dễ xem, dành cho ai lười ko muốn download :D Chương trình C : (Chương trình ko cần chạy - ko cần quá chi tiết, cần hơn là thể hiện được ý tưởng của thuật giải, code sáng - gọn , dễ nhìn) ... :D <pre> #include <stdio.h> #include <conio.h> #include <alloc.h> int *readfile(int N) { int i; int *p; FILE *f=fopen("DOTHI.IN","r"); if (f) { fscanf(f,"%d",&N); p=(int*)calloc(100,sizeof(int)); if(p){ for (i=1;i<=N*N;i++) fscanf(f,"%d",p+i); return p; } } fclose(f); } void writefile(int count,int i, int j, int k, int g,FILE *f) { if (count==0) fprintf(f,"%d",-1); else { fprintf(f,"%d : %d %d %d %d\n",count,i,j,k,g);} } void clique4(int N,int *A) { int i,j,k,g; int count=0; FILE *f=fopen("CLIQUE4.OUT","w"); if (f) { for (i=1;i<=N-3;i++) for (j=i+1;j<=N-2;j++) if (*(A+i*N+j)) for (k=j+1;k<=N-1;k++) if (*(A+i*N+k)&&*(A+j*N+k)) for (g=k+1;g<=N;g++) if(*(A+i*N+g) && *(A+j*N+g) && *(A+k*N+g)) { count++; writefile(count,i,j,k,g,f); } if (!count) writefile(0,0,0,0,0,f); } fclose(f); } int main() { int *A; int N=100; A=readfile(N); clique4(N,A); puts("It's ok !"); getch(); return 0; }
</pre> HẾT - Chúc mọi người làm bài tốt nhé
p/s : làm thế nào cho cái thẻ code này nó dài ra nhở ;s | |
| | | chien2311 Enterprise Admin
Tổng số bài gửi : 1224 Sinh nhật : 23/11/1988
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Sun May 15, 2011 4:20 am | |
| Chú ý đoạn p=(int*)calloc(100,sizeof(int)); là để test, khi làm thay bằng cấp phát động :
p=(int*)calloc(N*N,sizeof(int)); sẽ chuẩn hơn, con trỏ và cấp phát động mà :D | |
| | | dat_tn_89nd Quan Chi Phủ
Tổng số bài gửi : 44 Sinh nhật : 17/12/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Sun May 15, 2011 9:40 am | |
| Me thag Chien lam sai roi p=(int*)malloc((n*n)*sizeof(int)); | |
| | | BurNova Trạng Nguyên
Tổng số bài gửi : 8 Sinh nhật : 18/11/1988
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Sun May 15, 2011 10:57 pm | |
| Dung vong lap ma cap phat dong. VD nhu ma tran mxn thi cap phat m hang truoc, roi voi moi hang thi cap phat n cot. malloc dung cho dsmn con calloc dung cho mang, tach ra nhu the de nho hon nhieu. | |
| | | hunghanam Quan Nhất Phẩm
Tổng số bài gửi : 129 Sinh nhật : 05/11/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Tue May 17, 2011 2:36 pm | |
| EM CHIA SẺ MỘT TÍ CÁC BÁC NÀO MÀ KÉM MỘT TÍ THÌ COI BÀI C NÈ TUI LÀM CHO DỄ HIỂU CHƯA DÙNG CẤP PHÁT ĐỘNG VÀ CON TRỎ GÌ CẢ CỨ VẬY ĐỌC THUI. sAU ĐÓ ĐỌC BÀI VIẾT DƯỚI CÁC BÁC CHUYỂN SANG CẤP PHÁT ĐỘNG VÀ CON TRỎ NHÉ. MÌNH LÀM BÀI NÀY CHỈ THEO MẢNG KHÔNG ĐỂ CÁC BẠN HỌC C KHÔNG ĐƯỢC TỐT LẮM CÓ THỂ DỄ THEO DÕI KA KA :d 1. cấp phát động: Ngôn ngữ c dùng có bốn hàm liên quan đến cấp phát động, cụ thể là: - malloc - calloc - realloc - free chỉ cần dùng thằng malloc và thằng calloc thui mà cũng chỉ cần dùng thằng calloc là đủ rùi cú pháp void* calloc(size_t nitem, size_t size); ví dụ: xin cấp phát cho mảng 10 phần tử ta làm như sau int *x,n; x=(int *)calloc(n,sizeof(int)) n=10=> là số phần tử cần cấp phát, sizeof(int) là kích thước của mỗi phần tử đây là bài cụ thể cấp phát động tui làm: #include<conio.h> #include<stdio.h> #include<stdlib.h> int *x,n,m; void nhap_mt() { int *p; printf("nhap vao so phan tu cua ma tran:\n"); x=(int *)calloc(n*m,sizeof(int)); if(!x) { printf("khong cap phat duoc bo nho \n"); getch(); } for(p=x;p<x+n*m;p++) { scanf("%d",p); } } void in_mt() { printf("mang vua nhap vao co dang:\n"); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { printf("%5d",*(x+i*m+j)); } printf("\n"); } } void tong_hang(int c) { int tong; tong =0; printf("chuong trinh tinh tong hang thu c cua ma tran nhap vao tu ban phim:\n"); for(int j=0;j<m;j++) { tong =tong+*(x+c*m+j); } printf("tong cua hang thu %d la %d",c,tong); printf("\n"); } void tong_cot(int d) { int tong; tong =0; printf("chuong trinh tinh tong cot thu d cua ma tran nhap vao tu ban phim:\n"); for(int i=0;i<n;i++) { tong =tong+*(x+i*m+d); } printf("tong cua hang cot %d la %d",d,tong); printf("\n"); } int main() { int t,hang,cot; printf("chuong trinh cap phat dong cho mang hai chieu:\n"); printf("********************************************\n"); printf("nhap vao n=");scanf("%d",&n); printf("\n"); printf("nhap vao m=");scanf("%d",&m); printf("\n"); nhap_mt(); in_mt(); printf("nhap vao hang thu h=");scanf("%d",&hang); tong_hang(hang); printf("nhap vao cot thu c=");scanf("%d",&cot); tong_cot(cot); getch(); return 0; } 2. đọc file phần nì quan trọng ka ka chỉ cần quan tâm tên file là gì và cấu trúc file ra sao với mở ra để đọc hay ghi thui ka ka:)) FILE *f; f=fopen("tên file","r"); ở đây "r": là đọc file văn bản f=fopen("tên file","w"); ở đây "r": là ghi file văn bản sau đây là đoạn chương trình đọc file và ghi file tham khảo nhé: void doc_file() { int tg; f=fopen("dothi.txt","r"); if(!f){printf("co loi khong doc duoc file:\n");getch();} fscanf(f,"%d",&n); for(int i=1;i<=n;i++) { for(int j =1;j<=n;j++) { fscanf(f,"%d",&tg); a[i][j]=tg; } } printf("\n doc file thanh cong:\n"); } Cuối cùng là chương trình lập trình bài của K51 làm theo kiểu Amater không thuật toán dùng 4 vòng for nhưng đúng theo yêu cầu của đề bài
// de thi K51 #include<conio.h> #include<stdio.h> #include<math.h> FILE *f; int n,a[10][10]; void doc_file() { int tg; f=fopen("dothi.txt","r"); if(!f){printf("co loi khong doc duoc file:\n");getch();} fscanf(f,"%d",&n); for(int i=1;i<=n;i++) { for(int j =1;j<=n;j++) { fscanf(f,"%d",&tg); a[i][j]=tg; } } printf("\n doc file thanh cong:\n"); } void baitoan() { for(int i=1;i<=n;i++) { printf("do thi 4 bat dau bang dinh %d\n"); for(int j=1;j<=n;j++) { if(j!=i&&(a[i][j]==1||a[j][i]==1)) { for(int k=1;k<=n;k++) { if(k!=i&&k!=j&&(a[k][j]==1||a[j][k]==1)) { for(int g=1;g<=n;g++) {if(g!=i&&g!=j&&g!=k&&(a[k][g]==1||a[g][k]==1)) {printf("%2d%2d%2d%2d",i,j,k,g);printf("\n");} } printf("\n"); } } } } } } int main() { doc_file(); printf("\ cac do thi co 4 dinh la:\n"); baitoan(); getch(); return 0; } các bác chụi khó chuyển nó dùng cấp phát động và con trỏ với mảng 2 chiều nhé thank`s vì đã đọc !mọi ý kiến đóng góp xin gửi về địa chỉ :levanhung.hus@gmail.com hoặc levanhung_357 | |
| | | dat_tn_89nd Quan Chi Phủ
Tổng số bài gửi : 44 Sinh nhật : 17/12/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Tue May 17, 2011 8:27 pm | |
| Xin gop vui bai Clique :D
#include<stdio.h> #include<conio.h> #include<stdlib.h>
void docdl(int *a,int &n) { int i,j; FILE *f=fopen("DOTHI.IN","r"); fscanf(f,"%d",&n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) { fscanf(f,"%d",a+i*n+j); } fclose(f); } void indl(int *a,int n) { int i,j; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("%3d",*(a+i*n+j)); } printf("\n"); } } int test(int *a, int i, int j, int k, int l, int n) { if(*(a+i*n+j) && *(a+j*n+k) && *(a+k*n+l) && *(a+l*n+i)) return 1; return 0; } void dothi(int *a,int n) { int i,j,k,l; int d=0; for(i=1;i<=n-3;i++) for(j=i+1;j<=n-2;j++) for(k=j+1;k<=n-1;k++) for(l=k+1;l<=n;l++) { if(test(a,i,j,k,l,n)==1) { d++; printf("Clique:%d\n",d); printf("%3d-%3d-%3d-%3d\n",i,j,k,l); } } if(d==0) printf("-1"); } int main() { int *a; int n; a=(int *)malloc((n*n)*sizeof(int)); docdl(a,n); indl(a,n); dothi(a,n); getch(); }
| |
| | | Che..vankhe Đại Tổng Quản
Tổng số bài gửi : 129 Sinh nhật : 09/07/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Sat May 21, 2011 10:15 pm | |
| Tớ mới code bài tìm điểm yên ngựa trong ma trận, thuật toán thì ko có j Mọi người xem cách trình bày xem, có j góp ý cái ;) Thanks ! /* Bai toan tim diem yen ngua cua ma tran Input : File DIEMYENNGUA.IN co m+1 dong: dong 1 ghi m,n la kich thuoc ma tran m dong tiep theo ghi ma tran m.n Output: File DIEMYENNGUA.OUT ghi 2 so i,j la toa do cua diem yen ngua Nếu không có ghi -1 */
#include<conio.h> #include<stdio.h> #include<stdlib.h> int * readFile(int *n,int *m){ int i,j,t;// khai bao len dau ham FILE *f = fopen ("DIEMYENNGUA.IN","r"); if(!f) { printf("\n Khong mo duoc FILE"); getch(); exit(0); } fscanf(f,"%d%d",m,n);// doc vao kich thuoc ma tran int *A = (int*)calloc(*m * *n+1,sizeof(int)); for(i=0;i< *m;i++) for(j=0;j< *n;j++) { fscanf(f,"%d",&t); *(A+i*(*n)+j) = t; } fclose(f); return A; } // Ham in(A,m,n) nay chi de test, khi lam bai cac ban ko can viet void in(int *A,int m,int n){ int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) { if(j==0) puts(""); printf("%4d",*(A+i*n+j)); } } void Output(int nHang,int nCot){ FILE *f = fopen("DIEMYENNGUA.OUT","w"); if(!f) { printf("Khong the tao file"); getch(); exit(0); } if(nHang >=0) fprintf(f,"%d %d",nHang+1,nCot+1); else fprintf(f,"%d",-1); fclose(f); printf("\n\n All done.."); } void YenNgua(int *A,int m,int n){ int i,j,k,jmin,min=0; for(i=0;i<m;i++) { // Tim min cua hang min = *(A+i*n+0);// ban dau gan min hang = phan tu dau tien trong hang jmin = 0; // danh dau gia tri min nam o vi tri jmin for(j=0;j<n;j++) if(*(A+i*n+j)< min) { min = *(A +i*n+j) ; jmin = j ; } //kiem tra gia tri min co phai la max cot hay ko ? for(j=0;j<m;j++) if(*(A+j*n+jmin) > min) break; if(j==m)// ko co phan tu nao tren cot jmin lon hon min hang i { // tim thay diem yen ngua Output(i,jmin); break; } } if(i==m) Output(-1,-1); } int main(){ int m,n; int *A; A = readFile(&n,&m); //in(A,m,n); YenNgua(A,m,n); //getch(); } | |
| | | vuthaihoc Quan Nhất Phẩm
Tổng số bài gửi : 275 Sinh nhật : 08/01/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Mon May 23, 2011 10:15 am | |
| - hunghanam đã viết:
1. cấp phát động: Ngôn ngữ c dùng có bốn hàm liên quan đến cấp phát động, cụ thể là:
- malloc - calloc - realloc - free
Lôi thêm cái này để điên đầu à | |
| | | vuthaihoc Quan Nhất Phẩm
Tổng số bài gửi : 275 Sinh nhật : 08/01/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Mon May 23, 2011 10:16 am | |
| Nghĩa thêm file minh họa để tét nhé | |
| | | VoTienKhoangHau Trạng Nguyên
Tổng số bài gửi : 4 Sinh nhật : 10/10/1989
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C Thu May 26, 2011 8:47 pm | |
| Trong buổi ôn tập môn ng2 lập trình, thầy Vĩnh có nhắc về ôn phần bt hậu tố, mọi người xem bài này tham khảo xem :) /* Cho bieu thuc hau to tu File, moi toan hang / toan tu cach nhau boi 1 dau cach VD:INPUT : 2 3 + 6 * 8 3 - * OUTPUT : 150 (gia tri cua bieu thuc) */
#include<conio.h> #include<stdio.h> #include<stdlib.h> #include<string.h> void push(int x,float s[],int *n) { *n +=1; s[*n] = x; } float pop(float s[],int *n) { float t= s[*n]; *n -=1; return t; } float readFile() { int n = 0 ; float s[100],a=0,b=0; char x[100]; FILE *f =fopen("HauTo.INP","r"); if(!f) { printf("\n Can't open File"); getch(); exit(0); } int i =0 ; while(!feof(f)) { i ++; fscanf(f,"%s ",x); printf("\n Doc s = %s",x); if(strlen(x)==1 && x[0]=='+') { a = pop(s,&n); b = pop(s,&n); printf("\n %f + %f ",a,b); push(a+b,s,&n); } else if(strlen(x)==1 && x[0]=='*') { a = pop(s,&n); b = pop(s,&n); printf("\n %f * %f ",a,b); push(a*b,s,&n); } else if(strlen(x)==1 && x[0]=='-') { a = pop(s,&n); b = pop(s,&n); printf("\n %f * %f ",a,b); push(b-a,s,&n); // } else if(strlen(x)==1 && x[0]=='/') { a = pop(s,&n); b = pop(s,&n); printf("\n %f * %f ",a,b); push(b/a,s,&n); } else { a = atof(x); push(a,s,&n); } } printf("%f",s[n]); fclose(f); return s[n]; } void output(float a) { FILE *f =fopen("HauTo.OUT","w"); if(!f) { printf("\n Can't open File"); getch(); exit(0); } fprintf(f,"%f",a); fclose(f); } int main() { float result = readFile(); output(result); getch(); }
| |
| | | Sponsored content
| Tiêu đề: Re: Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C | |
| |
| | | | Chia sẻ phương án làm bài đề thi ngôn ngữ lập trình C | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |
|