At 1/20/2007 02:19 AM, you wrote:
At 15:46 2007-01-16, Rick wrote:
At 1/16/2007 04:01 PM, you wrote:
Hi
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?
Here is the program:
================
int main(int argc, char *argv[])
{
char *s;
int *t,n,a=0,i;
cout << "Enter a string";
cin >> s ;
n=strlen(s);
for (i=0;i<n;i++)
{
switch(s[i])
{
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
I'm not the best programmer around, but I would not use a switch
statement. I would do something like this:
#include <cstdlib>
why???
#include <iostream>
using namespace std;
// Add each letter in the supplied string using the following values:
// 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.
int main(int argc, char *argv[])
{
char *str;
int val;
int idx;
int num;
int tmp;
int values[26] =
{1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800};
cout << "Enter a string: ";
cin >> str;
and your program will blow up..... if you're using C++ forget about
all the damned char* and strxxx() crap
Yes, I know. I forgot to allocate memory for str, but I corrected that.
I'm using C, not C++, so this is perfectly valid. Why get in such a huff?
num=strlen(str);
for (val=idx=0;idx<num;idx++)
{
tmp = str[idx]-'a';
val += values[tmp];
}
cout << "The sum is " << val << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
~Rick
No need to miss a message.
<http://us.rd.yahoo.com/evt=43910/*http://mobile.yahoo.com/mail>Get
email on-the-go
with Yahoo! Mail for Mobile.
<http://us.rd.yahoo.com/evt=43910/*http://mobile.yahoo.com/mail>Get started.
Victor A. Wagner Jr. http://rudbek.com
The five most dangerous words in the English language:
"There oughta be a law"