Vào thời điểm này các bạn khóa 3 nắm bắt được ngôn ngữ C hoặc C++ rồi. để kiến thức đó đi vào thực tế, các bạn hãy cùng tham gia trò chơi sau: - điều kiện tham gia: nắm được ngôn ngữ C hoặc C++, 1 phần quà nào đó có giá trị như đĩa CD/DVD phần mềm, mì tôm, kẹo mút... - yêu cầu: người ra đề phải nắm vững bài giải, phải có phần thưởng cho người giải được - người trả lời sẽ post bài ngay sau đó, nếu đúng sẽ nhận được phần thưởng từ người ra đề. - cuối mỗi tuần bạn nào tham gia trả lời đúng nhiều câu hỏi nhất sẽ nhận được danh hiệu: " VH top coder" hoặc "đệ nhất võ lâm". thể lệ đã xong. mình demo: //------------------------------------------------------------------------- ngôn ngữ: C viết chương trình nhập vào danh sách sinh viên theo struct sau: Mã: typedef struct { char masv[20]; char ten[20]; int tuoi; float diem; } sinhvien; nhập rồi thì xuất, yêu cầu xuất ra: Mã: ten | masv | tuoi | diem a | JHG566 | 19 | 10 ... //----------------------------------------------------------------- hết. Phần thưởng cho bạn là 1 đĩa Open disc và 3 cây kẹo mút. đến nhận tại phòng 103 B1 - gặp integer. chúc các bạn vui vẻ, tiếp tục ra đề và giải đề nhé !
sao giống bài thầy ra về nhà vậy bác Mã: #include<conio.h> #include<string.h> #include<iostream.h> #include<stdio.h> #define maxl 255 //-----Khai Bao CTDL------------- typedef struct { char masv[10]; char hoten[30]; float diem; } sv; sv a[maxl]; int n=0; //-----Ham Nhap Du Lieu Sinh Vien-------- void input(sv a[],int &n) { cout<<"Nhap so luong SV: ";cin>>n; for(int i=1;i<=n;i++) { cout<<"\nNhap ma sv"<<i<<": ";gets(a[i].masv); cout<<"Nhap ho ten: ";gets(a[i].hoten); cout<<"Nhap diem: ";cin>>a[i].diem; } } //----Ham in danh sach du lieu------------- void print(sv a[],int n) { for(int i=1;i<=n;i++) cout<<"\nMaSV: "<<a[i].masv<<" Ten: "<<a[i].hoten<<" Diem: "<<a[i].diem; } void main() { clrscr(); input(a,n); print(a,n); getch(); } Không in ra kiểu như bác .. mất thẩm mĩ CTDL SV thiếu 1 trường Cái đó là tập hợp phần mềm mã nguồn mở chạy trên windows bạn P/S: Nói chung thì quà của bác chả có j hấp dẫn
miễn đáp ứng được yêu cầu đề ra là được bài này demo thôi mà. Opendisc là cái này: http://2mit.org/forum/showthread.ph...em-nguon-mo-chay-tren-windows-Open-Disc-10-09
ra đề: Viết 1 chương trình tạo ra cây nhập từ bàn phím, phải nhập được theo thứ từ là giữa -> trái-> phải, (ví dụ trái là NULL thì nhập nhỏ hơn 0 hoặc j đó nó sẽ là ko có giá trị, ko có nút trái và nút phải), và chèn 1 nút vào cây tại vị trí k tùy ý( ví dụ vị trí nút NULL nào đó, có thể hỏi là có chèn nữa hay ko và cho chèn và nút trái hoặc phải tiếp theo) phần quà: 1 chầu cafe (1 người)
oh shit, tui có ý kiếnnnnnnnnnnnnnnnnnnnnnnnnnnn: mấy cái này các bạn có tham gia thì hok lấy bài trên internet xuống nhé, hãy tự suy nghĩ và đưa ra câu trả lời thì hay hơn :045:
u có thể giải thik lại đề ra dùm hok, đọc hok hiểu chi hết trơn. "tạo ra cây nhập từ bàn phím" là gì? .... nói chung là hok hiểu từ a --> z :018:
ngoài ngôn ngữ ra còn cần giải thuật nữa. mà cái này là CTDL, thiệt hại cho mí bạn chưa học rùi. bài của minhtam giống bài thầy ra quá.
sao toàn spam , ko thấy ai giải hết vậy? @withyou: thầy ko yêu cầu giống mình, của thầy đơn giản là nhập dãy số để sắp xếp vào cây, nếu nhỏ hơn root thì qua 1 bên và lớn hơn root thì qua bên kia ko ai định giành phần thưởng hả ???
có hiểu mô tê chi mà trả lời mi. Phải đưa ra hình ảnh kết quả như t` Nguyên ấy kìa, trừu tượng quá, nói ai ko nói đc. Mi mà đưa ra kết quả hình ảnh đảm bảo mất chầu cafe ngay
bài của bạn tâm đây. Mã: #include<stdio.h> #include<iostream> #include<conio.h> #include<stdlib.h> #include<string.h> using namespace std; //--------------- typedef struct node { int pt; node *left; node *right; } cay; //--------------- void make(cay **T) { *T=NULL; } //-- duyet Giua - Trai - Phai void preorder(cay *T) { cay *P; P=T; if(P!=NULL) { printf("%d ",P->pt); preorder(P->left); preorder(P->right); } } //- Duyet Trai - Giua - Phai void inorder(cay *T) { cay *P; P=T; if(P!=NULL) { inorder(P->left); printf("%d ",P->pt); inorder(P->right); } } //- Duyet Trai - Phai - Giua void posorder(cay *T) { cay *P; P=T; if(P!=NULL) { posorder(P->left); posorder(P->right); printf("%d ",P->pt); } } // dem so la--------------- int leaf(cay *T) { if(T==NULL) return 0; if(T->left==NULL && T->right==NULL) return 1; return leaf(T->left) + leaf(T->right); } // nhap cay ---------------------- void chen(cay **T,int x) { cay *tmp; tmp=*T; if(tmp==NULL) { tmp=new cay; tmp->pt=x; tmp->left=tmp->right=NULL; (*T)=tmp; } else if(x<(*T)->pt) chen(&(*T)->left,x); else if(x>(*T)->pt) chen(&(*T)->right,x); else printf("\nNut da ton tai !"); } main() { cay *T,*l,*r; make(&T); int x; char y; int dk=1; printf("\nNhap phan tu, nhan y --> [Enter]de nhap tiep !"); while(dk==1) { printf("\nNhap phan tu: "); cin>>x; chen(&T,x); printf("\nNhap tiep y/n: "); cin>>y; if(y=='y') dk=1; else dk=0; } printf("\ntien to\n"); preorder(T); printf("\ntrung to\n"); inorder(T); printf("\nhau to\n"); posorder(T); printf("\nSo la: %d",leaf(T)); } nhập cây như sau: nhập vào nút giữa, nhỏ hơn nhập sang trái nút, lớn hơn nhập sang phải.
chèn 1 nút vào cây tại vị trí k tùy ý( ví dụ vị trí nút NULL nào đó, có thể hỏi là có chèn nữa hay ko và cho chèn và nút trái hoặc phải tiếp theo) nữa nguyên ơi!
như vậy bạn sẽ tốn thời gian cho việc đẩy các nút phía sau cây lên 1 đơn vị ???. còn chèn vào bên trái hay bên phải là tùy thích, mình làm như trên để khỏi phải quan tâm khi nhập thì chọn bên trái hay bên phải thôi. dùng đoạn này: Mã: else if(x<(*T)->pt) chen(&(*T)->left,x); else if(x>(*T)->pt) chen(&(*T)->right,x) OK, 1 chầu cafe nhé. tuần 1 sắp kết thúc....