On 1/16/07, Mohammed Derhalli <[EMAIL PROTECTED]> wrote:


I want to write a program that reads a string s then sums the number
assciated to each string in teh alphabet like the following schema:
a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9,j=10,k=20,l=30,m=40,n=50,o=60,p=70,
q=80,r=90,s=100,t=200,u=300,v=400,w=500,x=600,y=700,z=800.

I wrote the following program for the first 10 characters of the schema.
But it didn't work properly.

can u fix it?


1. You should create a mapping between characters and integers. Since you
are using C++, use one of the many generic data structures provided by the
Standard Temple Library (STL), like a HashMap.

Once you get this built, you just get the string, iterate through the
characters, find out which entry in the map the character is at, pull out
the associated integer, and add to your running total.



Here is the program:
================


int main(int argc, char *argv[])
{
  char *s;
  int *t,n,a=0,i;

  cout << "Enter a string";
  cin >> s ;


You never allocate memory for s... this will definitely cause problems. Why
use C strings when using the C++ string class is much easier and safer?


  n=strlen(s);
  for (i=0;i<n;i++)
  {
    switch(s[i])


This is really not the right way to iterate through a pointer to char. Again
use the C++ string class and it will be much easier to iterate over. What
does the case statement give you here? It's definitely not the right
approach.


   {
        case 'a':
              {a=a+1;
              t[1]=a;}

        case 'b':
               {a=a+1;
              t[2]=a;}

        case 'c':
               {a=a+1;
              t[3]=a;}
        case 'd':
               {a=a+1;
              t[4]=a;}
        case 'e':
               {a=a+1;
              t[5]=a;}
        case 'f':
               {a=a+1;
              t[6]=a;}
        case 'g':
               {a=a+1;
              t[7]=a;}
        case 'h':
               {a=a+1;
              t[8]=a;}
        case 'i':
               {a=a+1;
              t[9]=a;}
        case 'j':
               {a=a+1;
              t[10]=a;}


    }
       a=a+t[i];

  }
  cout << "the length is " << a;
  system("PAUSE");
  return 0;
}


Mohammed

------------------------------
No need to miss a message. Get email on-the-go
<http://us.rd.yahoo.com/evt=43910/*http://mobile.yahoo.com/mail%0A>
with Yahoo! Mail for Mobile. Get 
started.<http://us.rd.yahoo.com/evt=43910/*http://mobile.yahoo.com/mail%0A>





--
------------------------------------------------------------
"In the rhythm of music a secret is hidden;
   If I were to divulge it, it would overturn the world."
              -- Jelaleddin Rumi

Reply via email to