| | |
How to make a choise for the user to choose a file to open?
Please support our C++ advertiser: Intel Parallel Studio Home
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,489
Reputation:
Solved Threads: 123
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 |
Tag cloud for C++
api application array arrays based beginner binary bmp c++ c/c++ calculator char char* class classes code compile compiler console conversion convert count data delete deploy dll download dynamiccharacterarray email encryption error file format forms fstream function functions game givemetehcodez graph homeworkhelp iamthwee ifstream input int java lib library lines list loop looping loops map math matrix memory newbie news number numbertoword output pointer problem program programming project python random read recursion recursive reference return rpg search simple sorting spoonfeeding string strings struct temperature template templates text text-file tree url variable vector video visual visualstudio void win32 windows winsock wordfrequency wxwidgets





!!
