Announcement

Collapse
No announcement yet.

Kiểm tra giúp bài này!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Kiểm tra giúp bài này!

    Code:
    #include "stdafx.h"
    #include "string.h"
    void nhapchuoi(char *s)
    {
    	puts("Nhap vao 1 chuoi bat ky :");
    	gets(s);
    }
    void xoakhoangtrang(char *s)
    {
    	int i=1;
    	while(s[0]==' ')/*XOA KHOANG TRANG DAU CHUOI*/
    	{
    		strcpy(s,s+i);
    		i++;
    	}
    	char *p=strstr(s,"  ");
    	while (p!=NULL)/*XOA KHOANG TRANG GIUA CHUOI*/
    		{
    			strcpy(p,p+1);
    			p=strstr(s,"  ");
    		}
    }
    void inchuthuong(char *s)
    {
    	strlwr(s); /*IN THUONG TAT CA CAC KY TU TRONG CHUOI*/
    }
    void xuatchuoi(char *s) 
    {
    	int i;
    	for (i=0;i<int(strlen(s));i++)
    		if(s[i]!=' ' && s[i-1]==' ')
    	strupr(s[i]);/*IN HOA KY TU DAU TIEN CUA MOT TIENG*/
    	puts(s);
    }
    void main()
    {
    	char s[100];
    	nhapchuoi(s);
    	xoakhoangtrang(s);
    	inchuthuong(s);
    	xuatchuoi(s);
    }
    Khi chạy thì báo lỗi thế này:
    Error 4 error C2664: 'strupr' : cannot convert parameter 1 from 'char' to 'char *'
    Anh/chị có thể giúp em khắc phục lỗi này được không?

  • #2
    mình góp ý cho bạn tự sửa nè không biết đúng hay sai nha. hiihi bạn không thể copy char sang char* được đâu. cho dù dùng hàm đi chăng nữa. vì ở đây char này chỉ là một kí tự thôi bạn kìa còn char * lại là một con trỏ kiểu chỗi rồi bạn ak:happy:
    :love:
    Tương lai khóc hay cười phụ thuộc vào độ lười của quá khứ.
    :cry:

    Comment


    • #3
      PHP Code:
      #include <ctype.h>
      void xuatchuoi(char *s)
      {
          
      int i;
          
      s[0]=toupper(s[0]);
          for (
      i=0;i<int(strlen(s));i++)
              if(
      s[i]!=' ' && s[i-1]==' ')
                  
      s[i]=toupper(s[i]);/*IN HOA KY TU DAU TIEN CUA MOT TIENG*/
          
      puts(s);


      Comment


      • #4
        góp chút tý code cho bạn này!
        #include "string.h"
        #include "conio.h"
        void nhapchuoi(char *s)
        {
        puts("Nhap vao 1 chuoi bat ky :");
        gets(s);
        }
        void xoakhoangtrang(char *s)
        {
        int i=0;
        while (i<strlen(s))
        {
        if (s[i]==' '){
        for (int j=i;j<strlen (s);j++)
        s[j]=s[j+1];
        }
        else i++;
        }
        puts(s);
        }
        void inchuthuong(char *s)
        {
        if (97<=s[0]&&s[0]<=122) s[0]=s[0]-32;
        for (int i=1;i<strlen(s);i++)
        {
        if (s[i]==' '&& 97<=s[i+1]&&s[i+1]<=122) s[i+1]=s[i+1]-32;
        else if (s[i-1]!=' '&&65<=s[i]&&s[i]<=90) s[i]=s[i]+32;
        }
        puts(s);

        }
        void main()
        {
        char s[100];
        nhapchuoi(s);
        inchuthuong(s);
        xoakhoangtrang(s);
        getch();
        }

        Comment


        • #5
          PHP Code:
          void xuatchuoi(char *s
          {
              
          int i;
              for (
          0;i<int(strlen(s));i++)
                  if(
          s[i]!=' ' && s[i-1]==' '// chỗ này nguy hiểm nha bạn. khởi gán i = 0 mà s[i-1] -> không ổn.
                            
          strupr(s[i]); // Lý do sai: strupr dùng cho con trỏ chuỗi kiểu char * chứ k dùng cho kí tự char. 
                                                 // Sửa  s[i]=toupper(s[i]); .
              
          puts(s);

          Last edited by 11520317; 17-12-2012, 23:01.
          Top Best Online - The Best Products Review Website

          Comment


          • #6
            Originally posted by 11520317 View Post
            PHP Code:
            void xuatchuoi(char *s
            {
                
            int i;
                for (
            0;i<int(strlen(s));i++)
                    if(
            s[i]!=' ' && s[i-1]==' '// chỗ này nguy hiểm nha bạn. khởi gán i = 0 mà s[i-1] -> không ổn.
                              
            strupr(s[i]); // Lý do sai: strupr dùng cho con trỏ chuỗi kiểu char * chứ k dùng cho kí tự char. 
                                                   // Sửa  s[i]=toupper(s[i]); .
                
            puts(s);

            Edit thêm xíu : xài toupper và tolower thì sử dụng thư viện ctype.h

            Cho bạn thêm code chuỗi hóa = string của mình
            Code:
            string chuoihoa(string &nhap)
            {
            	while(nhap[0]==' ')
            	{
            		nhap.erase(0,nhap.find(' ')+1);
            	}
            	int pos;
            	for(int i=nhap.length()-1;i>=0;i--)
            	{
            		if(nhap[i]!=' ')
            		{
            			pos=i;
            			break;
            		}
            	}
            	nhap.erase(pos+1);
            	for(int i=0;i<nhap.length();i++)
            	{
            		while(nhap[i]>='0' && nhap[i]<='9')
            		{
            			nhap.erase(i,1);
            		}
            	}
            	for(int i=0;i<nhap.length();i++)
            	{
            		while(nhap[i]==' ' && nhap[i+1]==' ')
            		{
            			nhap.erase(i,1);
            		}
            	}
            	for(int i=0;i<nhap.length();i++)
            	{
            		nhap[i]=tolower(nhap[i]);
            		if(i==0)
            		{
            			nhap[0]=toupper(nhap[0]);
            		}
            	}
            	for(int i=0;i<nhap.length();i++)
            	{
            		if(nhap[i]==' ')
            		{
            			nhap[i+1]=toupper(nhap[i+1]);
            		}
            	}
            	return nhap;
            }

            Comment


            • #7
              chắc mai mốt em gửi tin nhắn cho mấy anh luôn quá, post bài xong ăn luôn cái thẻ phạt :cry:

              Comment

              LHQC

              Collapse
              Working...
              X