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

Đề tài: bài tập hay và hiếm về cấu trúc trong C

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

    Mặc định bài tập hay và hiếm về cấu trúc trong C

    hiện tại em đang làm 1 cấu trúc sinh viên,khi nhập email vào phải có tên miền là "@yahoo.com" thì mới hợp lệ.bài này trong chuỗi em đã làm được rồi nhưng sao qua cấu trúc thì có vài lỗi mà em chưa tìm ra.mong các anh giúp em sửa mấy lỗi này

    Code:
    #include <iostream>
    #include <string.h>
    #include <cstdlib>
    using namespace std;
    
    struct student
    {
    	char name[50];
    	char birth[11];
    	char mail[50];
    	char address[128];
    };
    void input(student &a)     
    {
    
    		cout<<"Please enter student name : "; 
    		cin.ignore();                        
    		cin.get(a.name,50,'\n');
    	                          
    		cout<<"Please enter day of birth (dd/mm/yyyy) : ";
    		cin.ignore();
    		cin.get(a.birth,11,'\n');
    
    		cout<<"Please enter email : ";
    		cin.ignore();
    		cin.get(a.mail,50,'\n');
    	
    		cout<<"Please enter address : ";
    		cin.ignore();
    		cin.get(a.address,128,'\n');
    	
    		cout<<endl;
    	
    
    }
    void inputstudentlist(student a[],int&n)
    {
    	
    	int i;
    	cout<<"Please input number of students : ";
    	cin>>n;
    	for(i=0;i<n;i++)
    	{
    		cout<<"Student "<<i+1<<endl;
    		cout<<"---------------------------------------------"<<endl;
    		input(a[i]); 
    	}
    }
    
    bool checkmail(char mail[])           //cái hàm bool này trong cái mail này bị sai nè
    {
    	
    	mail+=strlen(mail) - strlen("@yahoo.com");    //cat chuoi den khi con 8 ki tu,cái dòng đỏ này là chỗ bị sai
    	if (strcmp(mail, "@yahoo.com")==0)            //so sanh chuoi vua cat voi chuoi "@yahoo.com"
    		return true;                             //neu = 0 thi chuoi cat la chuoi can tim
    	else
    		return false;
    }
    
    //*************************************
    
    void main()   //đây là hàm main để chạy chương trình
    {
    	student a[100];
    	char mail[50];
    	int n;
    	
    	inputstudentlist(a,n);                          //goi ham input de nhap du lieu
    
    //bắt đầu từ đây là hàm kiểm tra mail
        
    		if (checkmail(mail)==true)                     //goi ham check email
    		{
    			cout<<"this email is correct form."<<endl; 
    		}
    		else
    		{
    			cout<<"this email is incorrect form."<<endl;
    		}
    }

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn nhập dữ liệu gì và bị lỗi thế nào ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Bạn nhập dữ liệu gì và bị lỗi thế nào ?
    nói chung là thế này.bài này mình phải kiểm tra tên miền email của mỗi sinh viên nhập vào có phải là "@yahoo.com" hay không.nhập dữ liệu thì không có vấn đề gì nhưng cái hàm checkmail nó bị sai cái dòng màu đỏ đỏ ấy.mình đã debug phát hiện ra lỗi là cái hàm bool này sẽ kiểm tra cái name[] trong struct chứ không phải cái mail[],mình không biết làm sao để nó kiểm tra cái mail[] trong struct ấy ~_~!

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    tham số mail[] là 1 con trỏ tĩnh.
    Nên sẽ ko thể nào "gán" được.

    Với cả cái câu lệnh: mail+=strlen(mail) - strlen("@yahoo.com");
    Sao thấy nó tăm tối thế bạn ơi @@ Nó làm cái việc gì đây ?? Cắt chuỗi là cắt thế nào ??
    Um Mani Padme Hum...!!

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

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    tham số mail[] là 1 con trỏ tĩnh.
    Nên sẽ ko thể nào "gán" được.

    Với cả cái câu lệnh: mail+=strlen(mail) - strlen("@yahoo.com");
    Sao thấy nó tăm tối thế bạn ơi @@ Nó làm cái việc gì đây ?? Cắt chuỗi là cắt thế nào ??
    nó cắt hết các kí tự trong chuỗi thừa đi và chừa lại 10 kí tự cuối,sau đó so sánh với chuỗi "@yahoo.com" xem coi có giống nhau không ?

    bạn có thể chỉ mình cách gán cái mail được không

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định bài tập hay và hiếm về cấu trúc trong C

    Hàm main của bạn viết rất chi là khó hiểu. Tự nhiên nhập vô a, n. Đến khi kiểm tra mail là tự khai báo một chuỗi mail rồi tự sướng. Chuỗi mail trong hàm main và student trong mảng a ko liên quan gì đến nhau cả. Nhập 1 đằng, kiểm tra 1 nẻo thì hàm nào mà chạy cho đúng được.

    C++ Code:
    1. void main()
    2. {
    3.     student a[100];
    4.     int n;
    5.    
    6.     inputstudentlist(a,n);
    7.  
    8.     for (int i=0;i<n;i++)
    9.     {
    10.    
    11.         if (checkmail(a[i].mail))
    12.         {
    13.             cout<<"this email is correct form."<<endl;
    14.         }
    15.         else
    16.         {
    17.             cout<<"this email is incorrect form."<<endl;
    18.         }
    19.     }
    20. }


    P/S : mình ko ko đồng tình với cái kiểu đặt tiêu đề giật tít như vậy. Bài này là bài tập cơ bản của struct, có gì mà hay và hiếm ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Trích dẫn Nguyên bản được gửi bởi nntrungduy Xem bài viết
    nó cắt hết các kí tự trong chuỗi thừa đi và chừa lại 10 kí tự cuối,sau đó so sánh với chuỗi "@yahoo.com" xem coi có giống nhau không ?

    bạn có thể chỉ mình cách gán cái mail được không
    Có thấy nó cắt gì đâu ???
    Làm gì có chuyện trừ 2 cái length đi là nó "cắt" . Mà sao giám chắc nó sẽ cắt đi còn 10 ký tự ??
    Giờ có làm cho mail nó gán được đi chăng nữa thì kiểu đó cũng ko ổn đâu. Sao có chuyện gán 1 số nguyên cho 1 con trỏ được ?? Bậy bạ quá
    Xem biểu thức bên phải lệnh gán nó là cái gì. Bên trái lệnh gán nó là gì. Có phù hợp để gán nhau ko
    Nói chung là bạn sai cơ bản nhiều quá. Những thứ này ko liên quan gì đến struct sờ triếc gì cả. Toàn là những thứ đã học trước khi học đến struct thôi.
    +Các kiểu dữ liệu cơ sở
    +Phép gán
    +Con trỏ
    +Chuỗi

    Bạn nên đi "lượm" lại mấy thứ đó rồi mới quay lại làm bài này nhé
    Đã được chỉnh sửa lần cuối bởi clchicken : 24-12-2011 lúc 07:56 PM.
    Um Mani Padme Hum...!!

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

  1. Vợ tổng bí thư hiến nhà cho quân đội
    Gửi bởi giadia.vn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 28-02-2013, 11:24 PM
  2. Cha hiếp dâm con gái ruột
    Gửi bởi quynhcute trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 20-09-2012, 01:16 AM
  3. Bài tập về cấu trúc trong c | Cấu trúc sinh viên???
    Gửi bởi dddzzzjjjiii trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 14
    Bài viết cuối: 21-07-2012, 05:06 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