Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Tuyển chuyên viên tin tức VN-Zoom 2014

Tìm HD - Phần mềm tìm và xem phim HD miễn phí

Hoãn tổ chức offline VN-Zoom 8 năm tại TP HCM

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tài trợ VNZ Siêu phẩm Tân Kiếm Thế chibi 3D mới

Tuyển BQT VN-Zoom
kết quả từ 1 tới 2 trên 2
  1. #1
    HuongKrb's Avatar
    HuongKrb vẫn chưa có mặt trong diễn đàn Rìu Chiến Vàng
    Tham gia
    Apr 2008
    Bài
    6.085
    Cảm ơn
    968
    Điểm
    5.442/2.059 bài viết
    VR power
    13

    Default Xây dựng cây gia phả bằng list?!

    Mình cần làm 1 đồ án kết thúc môn CTDL&GT, đề như sau:
    Xây dựng cây gia phả của 1 gia đình bằng list.
    Ai giúp mình xem thử mình dùng code này đc không, vì mình kém môn lập trình lắm, cảm ơn mọi người!
    #include <iostream.h>
    #include <conio.h>
    #include <string.h>
    #include <fstream.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <stdio.h>

    struct node
    {

    char name[20];
    node *left;
    node *right;
    };
    class family
    {

    public:
    void addleft(node *);
    void addright(node *);
    void editleft(node *);
    void editright(node *);
    void delleft(node *);
    void delright(node *);
    void findleft(node *);
    void findright(node *);
    void searchleft(node *);
    void searchright(node *);
    };

    void family::addleft(node *kaliwa)
    {
    cout<<"Enter Name: ";gets(kaliwa->name);
    }
    void family::findleft(node *hanapleft)
    {
    while(hanapleft!=NULL)
    {
    cout<<hanapleft->name;
    hanapleft=hanapleft->left;cout<<"\n";
    }
    }
    void family::addright(node *kanan)
    {
    cout<<"Enter Name: ";gets(kanan->name);
    }
    void family::findright(node *hanapright)
    {
    while(hanapright!=NULL)
    {
    cout<<hanapright->name;
    hanapright=hanapright->right;cout<<"\n";
    }
    }
    void family::searchleft(node *hanapinleft)
    {
    char findname[80];
    cout<<"Type a name: ";gets(findname);
    while(hanapinleft!=NULL)
    {if(strcmp(findname,hanapinleft->name)==0)
    {cout<<"Element exist!";}
    hanapinleft=hanapinleft->left;
    }
    }
    void family::searchright(node *hanapinright)
    {
    char findname2[80];
    cout<<"Type a name: ";gets(findname2);
    while(hanapinright!=NULL)
    {if(strcmp(findname2,hanapinright->name)==0)
    {cout<<"Element exist!";}
    hanapinright=hanapinright->right;
    }
    }
    void family::delleft(node *)
    {
    char delname[80];
    cout<<"Type name: ";gets(delname);
    }
    void family::delright(node *)
    {
    char delname2[80];
    cout<<"Type name: ";gets(delname2);
    }
    void main()
    {
    clrscr();
    family pamilya; //Object of Class
    int option;
    ofstream out_file; //cout sa Filestream
    char file[80];
    char familyname[80];
    node *l1,*l2,*r1,*r2,master;
    l1 =new node;
    l2=l1;
    r1=new node;
    r2=r1;
    char a,b;
    cout<<"Please Enter Filename: ";gets(file);
    out_file.open(file);
    clrscr();
    cout<<"Please Enter the Family Name: ";gets(familyname);
    cout<<"\nNow Please Enter the Ancestor's Name: ";gets(master.name);
    cout<<"\n\nThank You! Press Any Key to Continue";
    getch();
    clrscr();
    int nX = 2, nY = 2; //pang scroll
    int ch; //inequate sa getch()
    do{
    clrscr();
    cout<<familyname<<" Family Tree Generator";
    cout<<"\n[1] Add Element";
    cout<<"\n[2] Edit Element";
    cout<<"\n[3] Delete Left Child";
    cout<<"\n[4] Delete Right Child";
    cout<<"\n[5] Find a Left Child";
    cout<<"\n[6] Find a Right Child";
    cout<<"\n[7] Display All Left Children";
    cout<<"\n[8] Display All Right Children";
    cout<<"\n[9] Summarize in the Notepad";
    cout<<"\n[10] Exit";
    cin>>option;
    switch (option)
    {
    case 1: //Every element will be asked to input left and right childs, pero optional un kung ndi nya llagyan...
    {
    flagleft:
    clrscr();
    cout<<"Left Child:\n";
    pamilya.addleft(l2);
    cout<<"Do You Want to Add Another Left Child? [y/n]";
    cin>>a;
    if(a=='y')
    {l2->left=new node;
    l2=l2->left;
    goto flagleft;}
    l2->left=NULL;
    getch();
    }
    {
    flagright:
    clrscr();
    cout<<"Right Child:\n";
    pamilya.addright(r2);
    cout<<"Do You Want to Add Another Right Child? [y/n]";
    cin>>b;
    if(b=='y')
    {r2->right=new node;
    r2=r2->right;
    goto flagright;}
    r2->right=NULL;
    getch();
    break;
    }
    case 2: //String Compare, if yes, overwrite, if no matches, tatanungin ule
    {
    cout<<"Type new name: ";
    getch();
    break;
    }
    case 3: //String Compare na lang siguro ule...
    {
    pamilya.delleft(l1);
    cout<<"Deleted!";
    getch();
    break;
    }
    case 4:
    {
    pamilya.delright(r1);
    cout<<"Deleted!";
    getch();
    break;
    }
    case 5: //String Compare
    {clrscr();
    pamilya.searchleft(l1);
    getch();
    break;
    }
    case 6: //String Compare
    {clrscr();
    pamilya.searchright(r1);
    getch();
    break;
    }
    case 7: //Lahat ng Left
    {
    cout<<"\n\n\n\nThe following elements are all the left childs: \n";
    pamilya.findleft(l1);
    getch();
    break;
    }
    case 8: //Lahat ng Right
    {
    cout<<"\n\n\n\nThe following elements are all the right childs: \n";
    pamilya.findright(r1);
    getch();
    break;
    }
    case 9: //Naka notepad?? Pano iddrawing ung branches??
    {
    getch();
    break;
    }
    case 10:
    {
    cout<<"\n\nThank You!";
    break;
    }
    default:
    cout<<"\n\nInvalid Option!";
    getch();
    break;
    }
    }while(option!=10);
    getch();
    }


    ---------- Bài viết đã được nhập tự động bởi hệ thống ----------

    Thêm code này nữa:
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    typedef struct chitiet
    { char hoten[20],tenvo[20];
    char gioitinh[5],vochua[5];
    int ngay,thang,nam;
    int socon;
    }chitiet;
    typedef struct node
    { struct chitiet data;
    struct node *left,*right;
    }nodetype;
    typedef nodetype *nodeptr;
    nodeptr createnode(chitiet dulieu)
    { nodeptr p;
    p=(nodeptr)malloc(sizeof(nodetype)); //p=new nodeptr
    p->data=dulieu;p->left=p->right=NULL;
    return p;
    }
    void insert(nodeptr &root,nodeptr p)
    { if(root==NULL) root=p;
    else
    { if(root->data.nam<p->data.nam) insert(root->left,p);
    if(root->left->data.nam<p->data.nam) insert(root->right,p);
    if(root->left->data.nam>p->data.nam)
    { insert(root->right,root->left);
    insert(root->left,p);
    }
    }
    }
    void nhapdl(nodeptr &root,chitiet dulieu)
    { nodeptr p;
    printf("\nho va ten : ");fflush(stdin);gets(dulieu.hoten);
    printf("\nnhap ngay thang nam sinh \n");
    printf("nhap ngay : ");fflush(stdin);scanf("%d",&dulieu.ngay);
    printf("\nnhap thang : ");fflush(stdin);scanf("%d",&dulieu.thang);
    printf("\nnhap nam : ");fflush(stdin);scanf("%d",&dulieu.nam);
    printf("\ngioi tinh (nam or nu) : ");
    fflush(stdin);gets(dulieu.gioitinh);
    if(strcmp(dulieu.gioitinh,"nu")==0)
    {
    printf("\ncon va chong cua nguoi nay ko duoc luu vao gia pha\n");
    p=createnode(dulieu);
    insert(root,p);
    }
    else if(strcmp(dulieu.gioitinh,"nam")==0)
    {
    printf("\n co vo chua ( co or khong ) : ");
    gets(dulieu.vochua);
    if(strcmp(dulieu.vochua,"co")==0)
    { fflush(stdin);
    printf("\n nhap ho va ten vo : ");fflush(stdin);gets(dulieu.tenvo);
    printf("\n co bao nhieu con : ");fflush(stdin);scanf("%d",&dulieu.socon);
    if(dulieu.socon==0) printf("\n khong co con \n");
    if(dulieu.socon>=1)
    { for(int i=1;i<=dulieu.socon;i++)
    { printf("con thu %d ",i);
    nhapdl(root,dulieu);
    }
    }
    }
    p=createnode(dulieu);
    insert(root,p);
    }


    }
    void xuatdl(nodeptr &root,chitiet dulieu)
    {
    if(root==NULL) printf("\n khong co du lieu \n");
    else
    { printf("\n ho va ten : %s",dulieu.hoten);
    printf("\n ngay thang nam sinh : %d/%d/%d",dulieu.ngay,dulieu.thang,dulieu.nam);
    printf("\n gioi tinh : %s",dulieu.gioitinh);
    if(strcmp(dulieu.gioitinh,"nam")==0)
    if(strcmp(dulieu.vochua,"co")==0)
    { printf("\n ho va ten vo : %s",dulieu.tenvo);
    if(dulieu.socon>=1)
    { for(int j=1;j<=dulieu.socon;j++)
    { printf("\ncon thu %d\n",j);
    xuatdl(root,dulieu);
    }
    }
    }
    xuatdl(root->left,dulieu);
    xuatdl(root->right,dulieu);

    }
    }
    void main()
    { clrscr();
    nodeptr root;
    chitiet dulieu;
    nhapdl(root,dulieu);
    xuatdl(root,dulieu);
    getch();
    }

    Nên sử dụng cái nào nhỉ?
    Thay đổi nội dung bởi HuongKrb; 30-01-2010 lúc 16:13. Lý do: Hệ thống nhập bài tự động

  2. #2
    thinh_le90's Avatar
    thinh_le90 vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Nov 2009
    Bài
    490
    Cảm ơn
    67
    Điểm
    102/71 bài viết
    VR power
    0

    Default

    Sao không hỏi anh anh bày cho yahoo nè : still_love_tl

 

 

Quyền sử dụng

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể tự sửa bài viết của mình
  •