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

Giúp các bé đáng thương ấy với

Gameshow “Ai Là Triệu Phú” trên VTV đang chờ đón bạn – Tải ngay!

Bán đấu giá ủng hộ từ thiện

Ngập tràn ưu đãi cho tín đồ công nghệ tại sony show 2014

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

Tin tức công nghệ mới
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.082
    Cảm ơn
    968
    Điểm
    5.443/2.058 bài viết

    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
    488
    Cảm ơn
    67
    Điểm
    102/71 bài viết

    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
  •