| | |
How to make a choise for the user to choose a file to open?
Thread Solved
![]() |
•
•
Join Date: Jun 2008
Posts: 130
Reputation:
Solved Threads: 2
Hi guys 
I'm working on a project ( a game )
this is the code
See the MAIN
I did tried Switch Loop but it doesn't work
Any good Plans? :/ it'll be appreciated

I'm working on a project ( a game )
this is the code
C++ Syntax (Toggle Plain Text)
#include <iostream> #include <fstream> #include <string> using namespace std; //####### Begin Class Node ########### class Node { public: string data; Node* link; Node(string x) { data = x; link = NULL; } }; //####### Begin Class LinkList ########### class LinkList { private: Node* head,*end,*temp,*trav; int count; void PrintBack(Node* x) { if (!x) { PrintBack(x->link); cout<<x->data<<" "; } } public: LinkList() { head = end = NULL; temp = NULL; count = 0; } bool Insert(string x) { if (!(temp = new Node(x))) return false; count++; if (!head) { head = end = temp; return true; } end->link = temp; end = temp; temp = NULL; return true; } bool FindX(string x) { bool found; found = false; trav = head; while(trav != NULL && !found) if(trav->data == x) found = true; else trav = trav->link; return found; } bool Remove(string &x) { if (!head) return false; if (count == 1) { x = head->data; delete head; head = end = NULL; count--; return true; } x = head->data; temp = head; head = head->link; delete temp; temp = NULL; return true; } bool delX(string x) { string u; if (!head) return false; if ( head->data == x) { Remove(u); return true; } for ( temp = head, trav = head->link; trav ; temp = trav,trav = trav->link) { if (trav->data == x) { temp->link=trav->link; if(trav==end) end = temp; delete trav; trav = NULL; return true; } } return false; } void PrintLinkList() { if(!head) cout<<"\nLinkList is Empty ... "<<endl; else for ( trav = head ; trav ; trav = trav->link) { cout<<trav->data<<" "; } } void PrintBackword() { temp = head; PrintBack(head); } ~LinkList() { while(head != NULL) { temp = head; head = head->link; delete temp; } end = head = temp = NULL; count = 0; } void printNode(string &x) { trav = head; x = trav->data; trav=trav->link; } int counter() { return count; } }; //####### Begin Function Main ########### int main() { string A[5000]; string x; string p; int choose; LinkList lib; // Creating Object from the class LinkList cout << "Choose Which file you want to try the game on?\n"; cout << "1 - madlib1.txt\n"; cout << "2 - madlip2.txt\n"; cin >> choose; // Switch loop to choose more than one file to play *FOR THE BONUS* xD switch( choose ) { case 1: // Constructor that opens the file ifstream fin("madlip1.txt"); // If statement to check if the file can be opened or not. if( !fin ) { cerr << "\nError, Can't open the File.!\n"; exit(1); } // end if statement break; // to exit switch case 2: // Constructor that opens the file ifstream fin("madlip2.txt"); // If statement to check if the file can be opened or not. if( !fin ) { cerr << "\nError, Can't open the File.!\n"; exit(1); } // end if statement break; // to exit switch loop } // end switch int i =0; // Initiate this variable for the use of the array. // While Loop to read the File, and save the content in the array while( fin>>x ) { A[i] = x; i++; } // For Loop to insert the Keywords to the LinkList. for( int j = 0; j < i; j++ ) { if (A[j] == "adjective") lib.Insert("Adjective"); if (A[j] == "verb") lib.Insert("Verb"); if (A[j] == "name") lib.Insert("Noun"); if (A[j] == "adverb") lib.Insert("Adverb"); } int y = lib.counter(); while (y != 0) { cout<<"Enter an "; lib.printNode(x); cout<<x; cout<<" "; lib.Remove(x); cin>>p; lib.Insert(p); cout<<endl; y--; // Decrement y until we finish from all the Keywords, to reach 0. } // For loop to replace each Keyword with the suitable word from the user. for(int r = 0; r < i; r++) { if (A[r] == "adjective") { lib.printNode(x); A[r] = x; lib.Remove(x); } if (A[r] == "verb") { lib.printNode(x); A[r] = x; lib.Remove(x); } if (A[r] == "name") { lib.printNode(x); A[r] = x; lib.Remove(x); } if (A[r] == "adverb") { lib.printNode(x); A[r] = x; lib.Remove(x); } } // For loop to output the new updated paragraph for(int k = 0; k < i ; k++) { if(A[k] =="!") cout<<"\n\n\n"; cout<<A[k]<<" "; } return 0; // To indicate successfully termination } //####### End Function Main ###########
See the MAIN
I did tried Switch Loop but it doesn't work
Any good Plans? :/ it'll be appreciated
•
•
Join Date: Mar 2008
Posts: 1,381
Reputation:
Solved Threads: 112
The variable fin is destructed before you use it. For this to work you would have to arrange it slightly differently.
for this to work, construct the variable fin before the switch statement and open the file like this:
switch( choose )
{
case 1:
// Constructor that opens the file
ifstream fin("madlip1.txt");
// If statement to check if the file can be opened or not.
if( !fin )
{
cerr << "\nError, Can't open the File.!\n";
exit(1);
} // end if statement
break; // to exit switch
case 2:
// Constructor that opens the file
ifstream fin("madlip2.txt");
// If statement to check if the file can be opened or not.
if( !fin )
{
cerr << "\nError, Can't open the File.!\n";
exit(1);
} // end if statement
break; // to exit switch loop
} // end switch
int i =0; // Initiate this variable for the use of the array.
// While Loop to read the File, and save the content in the array
// Too late, its already been destructed
while( fin>>x )
{
A[i] = x;
i++;
}for this to work, construct the variable fin before the switch statement and open the file like this:
fin.open("...."); I need pageviews! most fun profile ever :)
In order to use the ifstream fin variable that you declare inside the switch statement, you need to declare it outside the switch statement. For example:
[edit] Wow, I was beaten by over half an hour. Sorry.
Just one other thing to add: why not let the user enter the name of the file themselves? That way you don't have to worry about the switch statement or anything . . . . [/edit]
C++ Syntax (Toggle Plain Text)
ifstream fin; switch(choose) { case 1: fin.open("whatever.txt"); // ... } while(fin >> whatever) // ...
[edit] Wow, I was beaten by over half an hour. Sorry.
Just one other thing to add: why not let the user enter the name of the file themselves? That way you don't have to worry about the switch statement or anything . . . . [/edit]
Last edited by dwks; Jul 2nd, 2008 at 5:20 pm.
dwk
Seek and ye shall find.
"Only those who will risk going too far can possibly find out how far one can go."
-- TS Eliot.
"I have not failed. I've just found 10,000 ways that won't work."
-- Thomas Alva Edison
"The only real mistake is the one from which we learn nothing."
-- John Powell
Seek and ye shall find.
"Only those who will risk going too far can possibly find out how far one can go."
-- TS Eliot.
"I have not failed. I've just found 10,000 ways that won't work."
-- Thomas Alva Edison
"The only real mistake is the one from which we learn nothing."
-- John Powell
![]() |
Other Threads in the C++ Forum
- Previous Thread: While(Holding Button)
- Next Thread: Windows GUI book.
| Thread Tools | Search this Thread |
api array based binary bitmap business c++ c/c++ char class classes code codesamplerunwhilecommands coding commentinghelp compile console conversion count decide delete deploy desktop developer directshow dll download dynamic dynamiccharacterarray email encryption error faq file forms fstream function functions game givemetehcodez graph guess gui hash homeworkhelp homeworkhelper iamthwee ifpug ifstream incrementoperators infinite input int integer java lib linkedlist linker listing loop looping loops map math matrix memory multiple news node output pointer port problem proficiency program programming project python random read recursion reference rpg string strings temperature template test text text-file tree url variable vector video win32 windows winsock wordfrequency wxwidgets






!!