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

Đề tài: [C++] Kiểm tra trùng lặp trên cấu trúc

  1. #1
    Ngày gia nhập
    12 2006
    Bài viết
    43

    Mặc định [C++] Kiểm tra trùng lặp trên cấu trúc

    mình đang gặp một mãng cấu trúc gồm hoten[], diachi[]... khi nhập họ tên cần kiểm tra xem tên đã nhập có trùng kô, nếu trùng thì yêu cầu nhập lại.

    /******************************/

    Theo mình : " mình đang dùng for đề nhập các mãng cùa cấu trúc, nếu muốn kiển tra tên trùng thì dùng for để duyện lại các phần tử từ 0 --> i-1 (giả sữ biến đếm kia là i ) xem phần tử nào trùng thì "continue" và gán i = i -1. Nhưng "continue" thì máy hiều là "continue" cùa dòng for thứ 2.

    /******************************/

    Xin các bạn giúp đỡ.

  2. #2
    Ngày gia nhập
    11 2006
    Nơi ở
    Softech - Aptech
    Bài viết
    34

    Theo mình thì khi phát hiện bị trùng thì bạn phải break rồi in ra yêu cầu nhập lại chứ nhỉ? (Vì nếu đã không cho trùng họ tên thì không thể có 2 tên trùng nhau trong danh sách được, nên cần gì phải duyệt đến hết mảng, chỉ cần duyệt cho đến khi phát hiện trùng )
    Trước khi yêu cầu ebook, bạn nên search ở:
    http://www.flazx.com/
    http://knowfree.net/
    http://www.itstudy8.org/

    Falling in love with Java

  3. #3
    Ngày gia nhập
    12 2006
    Bài viết
    43

    ý mình như sao :
    .......
    .......
    for (int i = 0;i<10;++i) /*gia su danh sach co 10 nguoi*/
    {
    printf("nhap ten: "):
    gets(a[i].ten); /*nhập tên*/
    .......
    .......
    for ( int j= 0;j<i;++j) /*kiểm tra cac giá trị trước*/
    {
    if (strcmp(a[j].ten,a[i].ten == 0 )
    printf("\nten trung ban phai nhap lai\n");
    ........... /*đến đây mình kô biết làm sao đề yêu cầu nhập lại gia trị vừa nhập */
    }
    .........
    nếu dùng continue sao khi xét điều kiện thì nó chỉ quay lại for thừ 2

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ý tường mình thế này: dùng 1 vòng while để nhập họ tên, ứng với mỗi vòng lặp, hãy cho nhập vào 1 biến tạm tên là Inserted có cấu trúc tương tự như cấu trúc của 1 phần tử trong mảng. Ta kiểm tra tên của Inserted có trùng với tên của 1 phần tử nào trong mảng ko (cho kiểm tra từ 1 đến n, nếu phát hiện thì trả ra false), nếu ok thì chúng ta chỉ gán Inserted vào cho phần tử kế tiếp trong mảng
    Code:
    #include <iostream>
    #include <string>
    #define maxx 255
    using namespace std;
    int main(){
        system("cls");
        struct hoso{
               string hoten;
               string diachi;
               bool phai;
        };
        hoso danhsach[maxx]; 
        hoso inserted; 
        int n = 0; //tong so ho so thuc
        int i; //bien vong lap
        int temp; //bien tam
        bool cont = true; //kiem tra xem co con nhap hay ko
        while (cont){
              cout <<"Nhap ten: "; 
              fflush(stdin); getline(cin,inserted.hoten);
              cout <<"Nhap dia chi: "; 
              fflush(stdin); getline(cin,inserted.diachi);
              cout <<"Phai(Nam la 1, Nu la 0): ";
              cin >>temp;
              if (temp == 1) inserted.phai = true;
              else inserted.phai = false;
              i = 0;
              while (i < n)
                    if (inserted.hoten != danhsach[i].hoten) ++i;
              if (i >= n){
                 danhsach[n] = inserted;
                 ++n;
              }
              else cout <<"Trung ten trong danh sach";
              cout <<"Ban co tiep tuc nhap ko(Co la 1, Ko la 0): ";
              cin >>temp;
              if (temp == 1) cont = true;
              else cont = false;
        }
        return 0;
    }
    Cái code này lúc check thì ok, nhưng mà đến khi run thì gặp 1 đối tượng bị trùng nó đứng chương trình luôn, mong mọi người góp ý dùm xem nó sai chỗ nào.
    Đã được chỉnh sửa lần cuối bởi huynguyen : 31-12-2006 lúc 04:29 AM.

  5. #5
    Ngày gia nhập
    12 2006
    Bài viết
    43

    OK !!! mình hiểu ý bạn rùi, mình sẽ thử lại cám ơn nhiều nha !!!

  6. #6
    Ngày gia nhập
    06 2009
    Bài viết
    12

    Mặc định [C++] Kiểm tra trùng lặp trên cấu trúc

    Trích dẫn Nguyên bản được gửi bởi bathong Xem bài viết
    ý mình như sao :
    .......
    .......
    for (int i = 0;i<10;++i) /*gia su danh sach co 10 nguoi*/
    {
    printf("nhap ten: "):
    gets(a[i].ten); /*nhập tên*/
    .......
    .......
    for ( int j= 0;j<i;++j) /*kiểm tra cac giá trị trước*/
    {
    if (strcmp(a[j].ten,a[i].ten == 0 )
    printf("\nten trung ban phai nhap lai\n");
    ........... /*đến đây mình kô biết làm sao đề yêu cầu nhập lại gia trị vừa nhập */
    }
    .........
    nếu dùng continue sao khi xét điều kiện thì nó chỉ quay lại for thừ 2
    Bài này của bạn ko khả thi cho lắm

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

  1. Trả lời: 0
    Bài viết cuối: 07-07-2013, 07:29 PM
  2. Lập trình C | Sắp xếp và loại bỏ các phần tử trùng nhau trên mảng?
    Gửi bởi sonas trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 14
    Bài viết cuối: 22-06-2012, 09:34 AM
  3. ADO.NET lỗi vòng for xóa dữ liệu trùng trên datatable
    Gửi bởi billsang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 02-05-2011, 07:01 PM
  4. Kiểm tra trùng lặp dữ liệu trên DataGridView trong lập trình C#?
    Gửi bởi AirBlade trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 21-04-2011, 10:57 PM
  5. return trên C. Trả về giá trị kiểu cấu trúc trên C. Xin chỉ giúp?
    Gửi bởi hoangedward 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-2010, 09:37 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