Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Run time error , 高手看下是怎么回事啊

Posted by zszc at 2009-05-06 21:58:25 on Problem 1002
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
  
    #define ROW 100000  
    char format(const char &s);
    char *RegularTel[ROW];
    int OccurTimes = 1;
    int compare(const void *a, const void *b);
    int main()
    {
        long int testnum;
        
        cin >> testnum;  //cin 过后有回车,所以应该用getchar()将回车接收 
        getchar();
        
                
        for (int i=0; i< testnum; i++)
        {
            RegularTel[i]=new char [8];
        }
        
        for (int i=0; i < testnum; i++)
        {
            char ch;
            int j=0;
            while(true)
            {
                scanf("%c", &ch);
                if (ch == '\n')
                break;
                if (ch == '-')
                continue;
                RegularTel[i][j] = ch;
                j++;
            }
            RegularTel[i][j] = '\0';
            
        }
      
      
        int j;
        char tmp;
        int count = 0 ;
      
        for (int i=0; i < testnum; i++)
        {
            count=0;
            j=0;
            tmp = RegularTel[i][j] ;

            
            while( tmp != '\0' )
            {


                                  
                 if (tmp >= '0' && tmp <= '9')
                 {
                    RegularTel[i][count] = tmp;
                 }
                 else
                 {
                     RegularTel[i][count] = format(tmp);
                 }
                 
                 j++;
                 count = (count +1)%7;
                 tmp = RegularTel[i][j];
                                 
            }
 
        }

       
       
       qsort(RegularTel, testnum, 4, compare);       
         
       int tmp2;
       int flag=0;
       
      for (int i=0; i < testnum; i++)
      {
          tmp = i;
           
           if ((i+1) < testnum)
           {
            while (strcmp(RegularTel[i],RegularTel[i+1]) == 0 )
            {
                OccurTimes++;
                i++;
                if ( i >=testnum )
                break;
            }    
           }    
            if (OccurTimes >=2)
            {
            for (int ii=0; ii < 3; ii++)
            cout << RegularTel[tmp][ii];
            cout << '-';
            for (int jj=3; jj < 7; jj++)
            cout << RegularTel[tmp][jj];
            cout << " " << OccurTimes <<endl;
            flag=1;
            }    
            OccurTimes = 1;            
      }
      
      if (flag ==0)
      {
          cout << "No duplicates." <<endl;
      }
      
         
         
       for (int i=0; i< testnum; i++)
        {
            delete [] RegularTel[i];
        }  
       
        return 0;
    }
    
    
    char format(const char &s)
    {
         char tmp;
         switch(s)
         {
          case 'A':
          case 'B':
          case 'C':tmp = '2';break;
          
          case 'D':
          case 'E':
          case 'F':tmp='3';break;
          
          case 'G':
          case 'H':
          case 'I':tmp='4';break;
               
          case 'J':
          case 'K':
          case 'L':tmp='5';break;
          
          case 'M':
          case 'N':
          case 'O':tmp='6';break;
          
          case 'P':
          case 'R':
          case 'S':tmp='7';break;
          
          case 'T':
          case 'U':
          case 'V':tmp='8';break;
          
          case 'W':
          case 'X':
          case 'Y':tmp='9';break;
                   
         }
         return tmp;             
         
    }
    
    int compare(const void *a, const void *b)
    {
 
       return strcmp(*(char **)a,*(char **)b); 
    }




    




Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator