|
Thanks for the help with this. I will be trying it later after work. I may still have some questions we will see.
|
|
|
|
|
Does this look something that will work to create say 100 names?
int main(int argc, char* argv[])
{
string firstname[100];
static const int namelen = 15;
static const char* letters[2] = { "bcdfghjklmnpqrstvwxyz", "aeiouy" };
static const letterlen[2] = { strlen(letters[0]), strlen(letters[1]) };
for (int j=0; j<100; j++)
{
for (int i=0; i
|
|
|
|
|
Chuck Vought wrote: name += letters[i%2][rand()%letterlen[i%2]];
name will need to be declared, and then reset each time through the j loop.
Chuck Vought wrote: name[0] = toupper(name[0]);
Move this out of the inner for() loop.
Chuck Vought wrote: firstname[j]=firstname;
firstname[j] = name; Chuck Vought wrote: cout<< firstname[i];
cout << firstname[i].c_str() << endl;
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
name will need to be declared, and reset each time through the j loop?
how would i declare it each time?
string name;
|
|
|
|
|
Chuck Vought wrote: how would i declare it each time?
You only need to declare it once, up with the other declarations. You'll then need to reset it each time through the loop (so the concatenation works as you expect).
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
i have never done a string reset, how would i do that?
|
|
|
|
|
name = "";
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
I am getting two errors, first why cant I declare the array size from a user input called "num", and when I change it to a constant it runs but then get the following message" "string subscript out of range."
string firstname[num],lastname,name;
static const int namelen = numFirst;
static const char* letters[2] = { "bcdfghjklmnpqrstvwxyz", "aeiouy" };
static const int letterlength[2] = { strlen(letters[0]), strlen(letters[1]) };
srand(time(NULL));
for (int j=0; j<num; j++)
{
for (int i=0; i<numFirst; i++)
{
name = "";
name[i] += letters[i%2][rand()%letterlength[i%2]];
}
name[0]=toupper(name[0]);
firstname[j]=name;
}
for (int i=0; i<numLast; i++)
{
lastname[i] += letters[i%2][rand()%letterlength[i%2]];
lastname[0] = toupper(lastname[0]);
}
for(j=0;j<num;j++)
{
cout <<firstname[j].c_str() <<" ";
if(j=5)
{
cout<<endl;
}
}
|
|
|
|
|
Chuck Vought wrote: I am getting two errors, first why cant I declare the array size from a user input called "num"...
From what you've shown, num , numFirst and numLast have not been declared.
Chuck Vought wrote: name = "";
You need to move this out of the inner for() loop.
Chuck Vought wrote: if(j=5)
This will always evaluate to true. Is that your intent?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
put it in the outer for loop or does it go with the declarations? i still get the error subscript out of range.
|
|
|
|
|
do you want me to e-mail a copy of my .cpp?
|
|
|
|
|
Chuck Vought wrote: put it in the outer for loop or does it go with the declarations?
Think about it. You are doing concatenation. At what point would name need to start over?
Chuck Vought wrote: i still get the error subscript out of range.
Making it a constant has nothing to do with the error.
Chuck Vought wrote: name[i] += letters[i%2][rand()%letterlength[i%2]];
name is not an array yet you are treating it as one. Remove the subscript.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
name[0]=toupper(name[0]);
firstname[j]=name;
name = "";
it says line 1575?
|
|
|
|
|
int main()
{
int numFirst, numLast,num,i,j,count;
int lowFirst=3, highFirst=12,lowLast=5, highLast=14;
cout << "This program will generate first and last names from\n";
cout <<"the number of names you choose." << endl;
cout << endl;
cout << "Please enter the number of names between 1 and 100 you want to \n"
<< "generate random first and last names for: ";
cin >> num;
while (num < 1 || num > 100)
{
cout << "\nInvalid number entered!! Please try again ..." << endl << endl;
cout << "Please enter the number of integers between 1 and 100 you want to\n"
<< "generate random first and last names for: ";
cin >> num;
}
cout << "\nPlease enter the number of letters(between 3 and 12) you want for your first name: ";
cin >> numFirst;
cout << endl;
while (numFirst < lowFirst || numFirst > highFirst)
{
cout << "\nInvalid number entered!! Your number must be between 3 and 12. \n"
<< "Please re-enter a number. \n";
cin >> numFirst;
}
cout << "\nPlease enter the number of letters(between 5 and 14) you want for your last name: ";
cin >> numLast;
cout << endl;
while (numLast < lowLast || numLast > highLast)
{
cout << "\nInvalid number entered!! Your number must be between 5 and 14. \n"
<< "Please re-enter a number.\n";
cin >> numLast;
}
string firstname[num],lastname,name;
static const int namelen = numFirst;
static const char* letters[2] = { "bcdfghjklmnpqrstvwxyz", "aeiouy" };
static const int letterlength[2] = { strlen(letters[0]), strlen(letters[1]) };
srand(time(NULL));
for (int j=0; j<num; j++)
{
for (int i=0; i<numFirst; i++)
{
name += letters[i%2][rand()%letterlength[i%2]];
}
name[0]=toupper(name[0]);
firstname[j]=name;
name = "";
}
for (int i=0; i<numLast; i++)
{
lastname[i] += letters[i%2][rand()%letterlength[i%2]];
lastname[0] = toupper(lastname[0]);
}
for(j=0;j<num;j++)
{
cout <<firstname[j].c_str() <<" ";
if(j<=5)
{
cout<<endl;
}
}
cout<<endl<<endl;
return 0;
}
|
|
|
|
|
Suggestions:
Chuck Vought wrote: string firstname[num],lastname,name;
vector<string> firstname; Chuck Vought wrote: firstname[j]=name;
firstname.push_back(name);
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
still getting the error. i am lost as to what to try
|
|
|
|
|
Chuck Vought wrote: still getting the error.
Where?
Your code, coupled with my suggestions, compiles and runs fine.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
can you repost the code you ran and i will try it again.
|
|
|
|
|
Chuck Vought wrote: can you repost the code you ran and i will try it again.
See here then here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
i have those in there. can you repost the entire code that you ran? i will put it in my compiler to see if I get any errors.
i am running VS2008 with a Vista OS, do you think there is a problem in one of these?
|
|
|
|
|
It is working without errors except that it seems to only create a first or last name with the number of character for firstname only. If i enter 3 for firstname and 10 for last name i still only get 3 letters?
vector <string> firstnames;
vector <string> lastnames;
string lastname;
string firstname;
static const char* letters[2] = { "bcdfghjklmnpqrstvwxyz", "aeiouy" };
static const int letterlength[2] = { strlen(letters[0]), strlen(letters[1]) };
srand(time(NULL));
for (int j=0; j<num; j++)
{
for (int i=0; i<numFirst; i++)
{
firstname += letters[i%2][rand()%letterlength[i%2]];
}
firstname[0]=toupper(firstname[0]);
firstnames.push_back(firstname);
firstname = "";
}
for (int x=0; x<num; x++)
{
for (int y=0; y<numLast; y++)
{
lastname += letters[i%2][rand()%letterlength[i%2]];
}
lastname[0]=toupper(lastname[0]);
lastnames.push_back(lastname);
lastname = "";
}
}
for(z=0;z<num;z++)
{
cout <<firstnames[z].c_str()<<" " << lastnames[z].c_str()<<endl;
}
|
|
|
|
|
How does this code even compile?
Chuck Vought wrote: lastname += letters[i%2][rand()%letterlength[i%2]];
Study this statement carefully.
Aside from that, your code produces:
Zyr Yayaouyeea
Yyv Yoiooioeyu
Qay Yiuooeyoeu
Zyh Uyiaauuiuu
Rok Ioiouiaooi
Les Oyauaiuiyu
Xam Aoieyuiaoy
Mij Oyeaaaoiya
Yuq Yyiuaoyooa
Hil Uayayyouyu which falls within your guidelines of a 3-letter first name and a 10-letter last name.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
From what you've shown num, numFirst and numLast have not been declared.
they are variables so how could i declare them? they are declared as int types.
|
|
|
|
|
Chuck Vought wrote: they are variables so how could i declare them? they are declared as int types.
http://www.codeproject.com/Messages/3160966/Re-Random-Name-Generator.aspx[^]
When you are asking for help and providing code snippets, the less guess work we have to do, the better. Since I am not you, I have no way of knowing if the compiler errors you reference go hand-in-hand with the code snippets you are providing.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
i can send the .cpp file if you want to run it to see the errors do you want me to do that?
|
|
|
|