Converting alphabetic phone number to numeric

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • changwl8888
    New Member
    • Mar 2010
    • 11

    Converting alphabetic phone number to numeric

    How do i convert an alphabetic phone number to a numeric phone number?

    Translating alphabetic number:

    Enter phone number:1-800-COL-LECT

    1-800-265-5328
  • Niheel
    Recognized Expert Moderator Top Contributor
    • Jul 2005
    • 2432

    #2
    Simplest way is create an array and assign each letter it's corresponding number. Then loop through the phone number input and replace the letter with number.
    niheel @ bytes

    Comment

    • whodgson
      Contributor
      • Jan 2007
      • 542

      #3
      Uhmm....I think:
      if string s=1800-COL-LECT
      If(s[i]=='-') write nothing
      else ii(s[i]>==0 || s[i]<==9)write s[i]
      if(s[i]=='A'||s[i]=='B'||s[i]=='C')write 2
      etc for DEF,GHI,JKL,MNO ,PQRS,TUV and WXYZ.

      Comment

      • donbock
        Recognized Expert Top Contributor
        • Mar 2008
        • 2427

        #4
        I suggest using <ctype.h> classification functions isdigit() and isalpha(). You probably want to treat 'a' the same as 'A'. Instead of the logical expression in the if statement, I suggest using a switch statement -- it will be easier to read:
        Code:
        switch (toupper(s[i])) {
           case 'A':
           case 'B':
           case 'C':
              s[i] = '2';
              break;
           ...

        Comment

        • changwl8888
          New Member
          • Mar 2010
          • 11

          #5
          hi..sorry i don't really understand how to convert and store and show all number back...can u please show more details of code...i am really new to c programming

          Comment

          • changwl8888
            New Member
            • Mar 2010
            • 11

            #6
            can u show me some example code?in more details pls..

            Comment

            • donbock
              Recognized Expert Top Contributor
              • Mar 2008
              • 2427

              #7
              Refer to the posting guidelines.
              We'll answer questions like "why did I get this error?"; we won't answer questions like "I don't know how to start, please send me the code."

              Comment

              • changwl8888
                New Member
                • Mar 2010
                • 11

                #8
                Code:
                #define SIZE 30
                
                
                void translateNumber(int * optionStats, char * phoneNumber)
                {
                    char phoneNumber[SIZE];
                    int x=0;
                    int length;
                
                printf("Translating alphatic number:\n");
                printf("Enter Phone Number:\n");
                   while (fgets(phoneNumber, SIZE, stdin) != NULL)  /* fetch up to 30 chars */
                   {
                         switch (toupper(phoneNumber[x]))
                            {
                                    case 'A':
                                    phonenumber[x]="2";
                                    break;
                                    case 'B':
                                    phonenumber[x]="2";
                
                                    break;
                                    case 'C':
                                    phonenumber[x]="2";
                
                                    break;
                                    case 'D':
                                    phonenumber[x]="3";
                
                                    break;
                                    case 'E':
                                     phonenumber[x]="3";
                                    break;
                                    case 'F':
                                     phonenumber[x]="3";
                                    break;
                                    case 'G':
                                     phonenumber[x]="4";
                                    case 'H':
                                    phonenumber[x]="4";
                
                                    case 'I':
                                    phonenumber[x]="4";
                                    case 'J':
                                     phonenumber[x]="5";
                                    case 'K':
                                    phonenumber[x]="5";
                
                                    case 'L':
                                    phonenumber[x]="5";
                
                                    case 'M':
                                    phonenumber[x]="6";
                
                                    case 'N':
                                    phonenumber[x]="6";
                
                                    case 'O':
                                    phonenumber[x]="6";
                
                                    case 'P':
                                    phonenumber[x]="7";
                
                                    case 'Q':
                                    phonenumber[x]="7";
                
                                    case 'R':
                                    phonenumber[x]="7";
                
                                    case 'S':
                                    phonenumber[x]="7";
                                    break;
                                    case 'T':
                                    phonenumber[x]="8";
                                    break;
                                    case 'U':
                                    phonenumber[x]="8";
                                    break;
                                    case 'V':
                                    phonenumber[x]="8";
                                    break;
                                    case 'W':
                                    phonenumber[x]="9";
                                    break;
                                    case 'X':
                                    phonenumber[x]="9";
                                    break;
                                    case 'Y':
                                    phonenumber[x]="9";
                                    break;
                                    case 'Z':
                                    phonenumber[x]="9";
                                    break;
                                    }
                so this is some code i have done...but i duno how to make it...store and display back...is it using for loop n strlen?
                any tips? thanks alot

                Comment

                • whodgson
                  Contributor
                  • Jan 2007
                  • 542

                  #9
                  Read the threads above. .
                  Essentially you have converted the alphanumeric number to numeric. Now print it
                  using a for loop.
                  To improve your code you can group cases 'A','B'and'C' as suggested in thread #4

                  Comment

                  • changwl8888
                    New Member
                    • Mar 2010
                    • 11

                    #10
                    is it correct way to print?
                    please correct me if i m wrong...thanks. ..

                    Code:
                    #define SIZE 30
                    
                    void translateNumber(int * optionStats, char * phoneNumber)
                    {
                        phoneNumber[SIZE];
                        int x=0;
                        int length;
                    
                    printf("Translating alphatic number:\n");
                    printf("Enter Phone Number:\n");
                       while (fgets(phoneNumber, SIZE, stdin) != NULL)  /* fetch up to 30 chars */
                       {
                             switch (toupper(phoneNumber[x]))
                                {
                                        case 'A':
                                        phoneNumber[x]="2";
                                        break;
                                        case 'B':
                                        phoneNumber[x]="2";
                    
                                        break;
                                        case 'C':
                                        phoneNumber[x]="2";
                    
                                        break;
                                        case 'D':
                                        phoneNumber[x]="3";
                    
                                        break;
                                        case 'E':
                                         phoneNumber[x]="3";
                                        break;
                                        case 'F':
                                         phoneNumber[x]="3";
                                        break;
                                        case 'G':
                                         phoneNumber[x]="4";
                                        case 'H':
                                        phoneNumber[x]="4";
                    
                                        case 'I':
                                        phoneNumber[x]="4";
                                        case 'J':
                                         phoneNumber[x]="5";
                                        case 'K':
                                        phoneNumber[x]="5";
                    
                                        case 'L':
                                        phoneNumber[x]="5";
                    
                                        case 'M':
                                        phoneNumber[x]="6";
                    
                                        case 'N':
                                        phoneNumber[x]="6";
                    
                                        case 'O':
                                        phoneNumber[x]="6";
                    
                                        case 'P':
                                        phoneNumber[x]="7";
                    
                                        case 'Q':
                                        phoneNumber[x]="7";
                    
                                        case 'R':
                                        phoneNumber[x]="7";
                    
                                        case 'S':
                                        phoneNumber[x]="7";
                                        break;
                                        case 'T':
                                        phoneNumber[x]="8";
                                        break;
                                        case 'U':
                                        phoneNumber[x]="8";
                                        break;
                                        case 'V':
                                        phoneNumber[x]="8";
                                        break;
                                        case 'W':
                                        phoneNumber[x]="9";
                                        break;
                                        case 'X':
                                        phoneNumber[x]="9";
                                        break;
                                        case 'Y':
                                        phoneNumber[x]="9";
                                        break;
                                        case 'Z':
                                        phoneNumber[x]="9";
                                        break;
                                        }
                    
                    for (phoneNumber[x],phoneNumber[x].length;phoneNumber++)
                    {
                    printf("answer: %c",phoneNumber[x]);
                    }
                       }
                    
                    
                    
                    }

                    Comment

                    • newb16
                      Contributor
                      • Jul 2008
                      • 687

                      #11
                      Does it compile without errors (if you tried it though)?

                      Comment

                      • changwl8888
                        New Member
                        • Mar 2010
                        • 11

                        #12
                        it is error on this line
                        for (phoneNumber[x];phoneNumber[x].length;phoneNu mber++)

                        request for member "length" in something not a structure or union...


                        help please

                        Comment

                        • changwl8888
                          New Member
                          • Mar 2010
                          • 11

                          #13
                          it is error on this line
                          for (phoneNumber[x];phoneNumber[x].length;phoneNu mber++)

                          request for member "length" in something not a structure or union...

                          when compile error....
                          help please

                          Comment

                          • jkmyoung
                            Recognized Expert Top Contributor
                            • Mar 2006
                            • 2057

                            #14
                            You're calling length on the x'th item of the array, not the array itself.

                            Comment

                            • newb16
                              Contributor
                              • Jul 2008
                              • 687

                              #15
                              phonenumber[i] is char, you can't access char using dot as if it was a structure with a member named length. And array has no .length as well. Also, for() loop contains three expressions separated by semicolon - initializer, condition and increment, maybe optional but semicolons are not.

                              Comment

                              Working...