Page 1 of 1

I hate to bring this over here, but I need some C++ help

Posted: Sun Jun 13, 2004 10:59 pm
by liberator
My instructor has us writing a thing to write skeleton programs. It takes input from the user in the form of library/header names, class names, ect. and outputs it in the correct format to a separate source file in the same directory. It looks like this

Code: Select all

//John Mynard
//CS-318
//Purpose:  This program interacts with the programmer
//			to generate the skeleton of a second program 
//			that the programmer with complete and debug.
//Date Created: Monday, June 7, 2004
//Date Last Edited: Monday, June 11, 2004

#include <iostream>
#include <fstream>
#include <string>
using namespace std;


void main()
{
//initialization of output file
	ofstream out_stream;
  	out_stream.open ("sourcegen.cpp");

int menuchoice;
string name;
string type;
char loopcon = 'y';


//interactivity
	while (menuchoice !=0)
	{
		cout << "Welcome to Code Generator" << endl;
		cout << "Please enter a selection" << endl << endl;
		cout << "Select 1 to add C++ Library/Header files" << endl;
		cout << "Select 2 to add C++ Class declarations" << endl;
		cout << "Select 3 to add C++ Structure declarations" << endl;
		cout << "Select 4 to add constant variable declarations" << endl;
		cout << "Select 5 to add variable declarations" << endl;
		cout << "Select 0 to exit Code Generator" << endl;

		cin >> menuchoice;

		switch (menuchoice)
		{
		case  1:
			{
				while (loopcon == 'y' || loopcon == 'Y')
				{
				cout << "Enter the Library/Header name" << endl;
				cin >> name;
				out_stream << "#include <" << name << ">" << endl;
				cout << "Are there any other Library/Header file you wish to include?" << endl;
				cin >> loopcon;
				}
				out_stream << "using namespace std;" << endl << endl;
				break;
			}

		case  2:
			{
				while (loopcon == 'y' || loopcon == 'Y')
				{
				cout << "Enter the Class name" << endl;
				cin >> name;
				out_stream << "struct " << name << endl;
				cout << "Are there any other classes you wish to include?" << endl;
				cin >> loopcon;
				}
				out_stream << endl << endl;
				break;
			}
			
		case  3:
			{
				while (loopcon == 'y' || loopcon == 'Y')
				{
				cout << "Enter the Structure name" << endl;
				cin >> name;
				out_stream << "class " << name << endl;
				out_stream << "{" << endl << "public:" << endl << "private:" << endl << endl;
				cout << "Are there any other structures you wish to include?" << endl;
				cin >> loopcon;
				}
				out_stream << endl << endl;
				break;
			}
			
		case  4:
			{
	//			Choice.ConstantQuery();
				break;
			}
			
		case  5:
			{
	//			Choice.VariableQuery();
				break;
			}
		}
	}
}
Excuse the quotes at the bottom, I had tried putting everything in a class but it wouldn't let me open an output file in the class for the class to use.

Anyway, it compiles and runs fine on the first selection, but when it get's back to the menu and you make a second selection it starts cycling through the menu over and over and won't go down to the switch statement.

I don't understand why it's doing this unless there is something wrong with my switch statement/menu system, in which case I'll primitize even more and switch it to $$$$ing "if" statements.

Any help would be appreciaed. Thanks in advance! :)

Posted: Mon Jun 14, 2004 5:11 pm
by kasperl
I am a QuickBASIC coder myself, but I read the first 2 chapters of C++ for dummies, and I can read a bit. The code seems fine, though I have something instinctive against putting anything aside form function calls into a select case thingy. You could try to remove the while menuchoice != 0 and simply but somekind of break in a case 0 thingy. Also, you could try to set the menuchoice var to something when you first reach the menu. Either of these solutions ought to change nothing, but it might help.

Posted: Mon Jun 14, 2004 7:36 pm
by liberator
I got it parsed out. More specifically, I got directed to a place called DevX.

It turns out that the loopcon variable needed to be reset to 'y'. It was just falling through the case statement and going back to the menu.

Thanks for the consideration though Kas!