Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: giúp bài tập c, tạo và quản lí danh sách đặc

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    0

    Mặc định giúp bài tập c, tạo và quản lí danh sách đặc

    em viết ctr này
    nhưng khi chạy thì nó ko chạy đúng
    nhờ các pác coi giúp,
    các pác coi nhanh trả lời giùm em ạ
    nó chạy mà chả cho nhạp họ tên

    mã đây

    Code:
    #include<conio.h>
    #include<stdio.h>                        // chuong trinh quan li danh sach hoc sinh
    #include<iostream.h>
    #include<string.h>
    const int nmax=100;
    typedef char infor1[20];            // dinh nghia kieu du lieu
    typedef float infor2;
    typedef int infor3;
    struct danhsach{
           infor1 ht;
           infor2 cc;
           infor3 cntc;
    };
    typedef danhsach ds[nmax];
    ds a;
    int n,t,k;
    infor1 x;
    infor2 y;
    infor3 z;
    //-------------------------------------------------
    
    void display(ds a, int n){                              // ham xuat
         int i;
         for(i=0;i<=n;i++)
              printf("\n ten : %20s, chieu cao : %5.2f, cntc : %5d ",a[i].ht,a[i].cc,a[i].cntc);
    }
    int search(ds a, int n, infor1 x){                     // ham tiem kiem
         int i=0;
         while((i<n)&&(strcmp(a[i].ht,x)!=0))
             i++;
         if(i<=n-1)
             return i;
         else
             return -1;
    }
    void del(ds &a, int &n, int k){                       // ham xoa
         int i;
         if((k>=0)&&(k<=n-1)){
             for(i=k;i<=n-2;i--)
                a[k]=a[k+1];
             n--;
         }
    }
    void insert(ds &a, int &n, int k,infor1 x, infor2 y, infor3 z){   //ham chen them phan tu
         int i;
         if((k>=0)&&(k<=n-1)&&(n<nmax)){
             for(i=n-1;i>=k;i--)
                  a[i+1]=a[i];
             strcpy(a[k].ht,x);
             a[k].cc=y;
             a[k].cntc=z;
             n++;
         }
    }
    void nhap(ds &a, int &n){                                     //ham nhap
         n=0;
         do{
            printf("\n nhap vao ten cua sinh vien : ");
            gets(x);
            if(strlen(x)!=0){
                printf("\n nhap chieu cao : ");
                scanf("%f",&y);
                z=100*y-105;
                insert(a,n,n,x,y,z);
            }
         }while(strlen(x)!=0);
    }
    //----------------------------------------
                                                                            // ctr chinh
    void main(){
         clrscr();
    
         n=0;
         do{
             printf("\n---------------------------------------------------------------------\n");
             printf("\n 1. nhap moi mot danh sach ");
             printf("\n 2. hien thi danh sach");
             printf("\n 3. them mot phan tu vao danh sach");
             printf("\n 4. tim mot phan tu trong danh sach");
             printf("\n 5. xoa mot phan tu trong danh sach");
             printf("\n 0. ket thuc chuong trinh");
             printf("\n\n nhap cong viec can thuc hien :  ");
             scanf("%d",&t);
             switch (t) {
                    case 1 : nhap(a,n);
                             break;
                    case 2 : display(a,n);
                             break;
                    case 3 : printf("\n nhap ten phan tu can them :  ");
                             gets(x);
                             printf("\n nhap chieu cao : ");
                             scanf("%f",&y);
                             z=100*y-105;
                             printf("\n nhap vao vi tri can them : ") ;
                             scanf("%d",k);
                             insert(a,n,k,x,y,z);
                             break;
                    case 4 : printf("\n nhap vao phan tu can tim : ");
                             gets(x);
                             k=search(a,n,x);
                             if(k!=-1)
                                  printf("\n %20s  %5.2f  %5d",a[k].ht,a[k].cc,a[k].cntc);
                             else
                                  printf("\n khong co ai ten nhu vay");
                             break;
                    case 5 : printf("\n nhap vao vi tri can xoa : ");
                             scanf("%d",k);
                             del(a,n,k);
                             break;
    
                    };
         } while(t!=0);
          getch();
         }
    Đã được chỉnh sửa lần cuối bởi lamborghini007 : 01-10-2008 lúc 11:05 PM.

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    336

    sau scanf thì cứ thêm vào dòng fflush(stdin); cho khỏi trôi là xong vụ nhập thôi.
    vd:
    Code:
    printf("\n\n nhap cong viec can thuc hien :  ");
             scanf("%d",&t);fflush(stdin);
    còn mấy lỗi logic khác bạn tự sửa tiếp nhé :-"
    code ra gió bão

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    0

    tớ đã phát hiện ra 1 lỗi
    hàm insert cho đk k<=n

    cám ơn pác đã quan tâm

    bác có thể nói thêm về fflush(stdin);
    và tại sao trôi ko??????????
    Đã được chỉnh sửa lần cuối bởi lamborghini007 : 02-10-2008 lúc 01:01 AM.

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    2

    Trong hàm nhập, khi bạn nhập xong 1 phần tử không tăng n lên.

  5. #5
    Ngày gia nhập
    10 2008
    Bài viết
    0

    khi nhập tớ dùng insert mà trong hàm insert đã tăng n lên nên..........

  6. #6
    Ngày gia nhập
    09 2008
    Bài viết
    0

    Mặc định giúp bài tập c, tạo và quản lí danh sách đặc

    có thêm 2 bài tập cho cậu nè lambor, chắc cậu cũng gần thi rùi ,
    1/Viết chương trình hoàn chỉnh thực hiện nhiều lần việc tạo bảng thực đơn rồi lựa chọn để thực hiện công việc sau đây :
    Nhập mới từ bàn phím DSLK các hộ tiệu thụ điện gồm : họ và tên , chỉ số điện đầu tháng , rồi tính số tiền phải trả biết rằng các chữ điện từ 100 chữ trở xuống tính giá 550 đồng , các chữ trên 100 chữ tính giá 900 đồng và thế giá trị gia tăng là 10%
    Tính tổng số chữ điện vựot quá 100 chữ của hộ
    Đếm xem có bao nhieu họ trong tháng đó khônh tiêu thụ diện

    2/ Viết chương trình hoàn chỉnh thực hiện nhiều lần công việc tạo thực đơn rồi lựa chọn để thực hiện các công việc sau :
    Nhập mới từ bàn phím DSLK các lần gọi điện thoại gồm họ và tên , giây bắt đầu , kết thúc , rồi tính tiền biết rằng mỗi 6giây tính 130 đồng .
    - Liệt kê các lần gọi điện từ phút thứ 10 trở lên .
    - Tính bình quân khách Lê gọi , gọi mỗi lần mất thời gian bao nhiêu giây

    add nick tớ vào trao đổi nhé Y!M:borntodie_why

  7. #7
    Ngày gia nhập
    09 2008
    Bài viết
    0

    @all: bro nào giải được thì giải dùm em với nhé , post lên cho em tham khảo với, môn này chỉ ráng học cho qua thôi chứ khó quá ahf :((

  8. #8
    Ngày gia nhập
    04 2008
    Bài viết
    336

    bác có thể nói thêm về fflush(stdin);
    và tại sao trôi ko??????????
    khi bạn nhập 1 số xong enter thì trên stdin còn lưu lại phím enter của bạn do scanf chỉ lấy phần số thôi sau đó nếu bạn được yêu cầu nhập chuỗi vào thì sẽ bị "trôi" mất (nó tự hiểu là bạn bấm enter nên kết thúc việc nhập chuỗi)
    code ra gió bão

Các đề tài tương tự

  1. Sử dụng danh sách liên kết để tạo chương trình quản lý sinh viên. Xin được giúp đỡ?
    Gửi bởi hieuboo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 12-05-2012, 10:50 AM
  2. Tối ưu code quản lý danh sách sinh viên. Mọi người giúp đỡ?
    Gửi bởi trieuvan.n01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 08-01-2011, 08:10 PM
  3. Quản lý danh sách cần giúp đỡ đây
    Gửi bởi knightxuan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 28-04-2010, 07:43 PM
  4. Xây dựng lớp quản lý nhân viên bằng danh sách liên kết đơn. Xin giúp sửa bài tập này!
    Gửi bởi longtth trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 30-12-2009, 02:57 AM
  5. Giúp Dệ Bài Tập Về Quản Lý Danh Sách đội Bóng.
    Gửi bởi hoangc5 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 21-11-2008, 01:01 PM

Quyền hạn của bạn

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