First week of the current trimester and we've taken a huge leap from writing little code snippets of loops and switches to writing an entire program, and expecting it to work!
I, nor anyone else in my class have heard of structs which is our first assignment. I've been pounding away for several days now and it won't compile beyond my struct declaration. Anyone who knows a bit about C++ I would enjoy you pointing out all of the syntax and logical errors in the first dozen lines of what is over 100 lines of code so far on this program. Here is the guideline:
CIS 247: Programming Assignment #1
Worth 5 Points Assigned: Week 1 Due: Week 3
You have contracted with a media company that deals with CDs, books, movies and video games and will be helping them manage inventory for one of the types of media.
Create a program that will internally store at least eight media items. Use a global (declared above main() ) structure called book, cd, movie or videoGame. Include at least five member variables (select the appropriate data types) to represent different attributes of a media (some examples: pages, cost, runningTime, format, hardcover, genre, …, etc.).
● One of them has to be price, because I will have you calculate tax (rate 8.5%) and total cost.
● One has to be a char array (C-String) and
● One has to be a char that is an abbreviation (such as r for Red). You select anything for the other two.
In main(), create 6 global month structure variables to represent the six different media items. For example, a structure for a shirt inventory might be:
struct shirt {
char size; // S, M, L, X;
char brand[15]; // uses C-style strings instead of string objects
bool shortSleeve;
char color; // for the required switch statement (r=Red, u=Blue, g=Green, w=White, b=Black, y=Yellow)
double price;
};
Note: The above code is an example, not to be used verbatim. Please choose your own set of variable names and data. You may use similar names. The structure can have the variables in any order.
You can load the data into the structures at the time of declaration, or read from a file.
struct shirt concert={'M', “Hanes”, true, ‘b’, 12.5}; // this would be shirt number 1
struct shirt work={'L', “Sears”, false, ‘u’, 21.95}; // this would be shirt number 2
…
… // shirt number 7
… // shirt number 8
Note: Select only one media type, come up with your own naming for the variables and use your own (unique) data.
Write a program that will generate a report showing all of the six media items (I'm using shirts instead here). Requirements:
● Create a text menu using a switch() block, to ask for media number, or 0 for all of them, or 99 to exit. All other input will result in an error message.
● Write one function that accepts media number as an int (1-8) and prints the appropriate media package information (see Sample Output), by passing the appropriate media to the function as a parameter. It will use the switch() statement to display the appropriate color (or whatever you want to use as a coded item),
I will be using the following key for color of shirt: (r=Red, u=Blue, g=Green, w=White, b=Black, y=Yellow)
Sample Output - Show output for at least 4 of the 6 items in your inventory
Shirt Menu
Please Enter 1-8 to list the shirts
Please Enter 0 to list all shirts
Please Enter 99 to end the program
Selection: 2
You have chosen to display information on the Sears shirt:
Size: L
Long Sleeve
Color: Blue
Price: $21.95
Tax: $ 1.87
Total Cost: $23.82
Note that the output will depend upon the type of media (not shirt) and variables that you select.
Now, I've given a great deal of effort into the code you are going to be looking at so keep in mind 6 months ago I had never stroked one key of code.
I'm not sure I'm posting this in the right area either, if not someone please direct me to the C++ posting threads please.
//Assignment One CIS247 Joseph Matzke
#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
struct movie
{
string rating; //G,PG,PG13,R17,X,XXX
char title; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
bool releaseDate; //Still in theatre-released
char language;//English, Spanish, Japanese, Chinese, German, Swaheely
double cost [2];
double tax;
};
void playMovie (struct movie); //it will not compile beyond here
int main(void)
{
int choice = 0;
//movie anyMovie; //declaration-creates object?
struct movie1={"R17", "Oceans 13", true, 'E', 19.99}; //movie number 1
movie movie2={"R17", "Oceans 12", false, 'E', 9.99};
movie movie3={"R17", "Oceans 11", false, 'E', 9.99);
movie movie4={"R17", "Braveheart", false, 'E', 9.99};
movie movie5={"PG", "Harry Potter", false, 'E', 9.99};
movie movie6={"XXX", "Caligula", false, 'S', 1.99};
system ("pause");
return 0;
}
do
{
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
cout << "Selection: ";
There is a lot more code to this, my switch module, my array, and so on but they do me no good if I can't compile beyond where I've noted.
I've changed from --void main (void) to--int main()--to int main (void)-- and regardless of what I do, actually my original code did not have a return in the main but the compiler message seemed to want me to return an int. Can anyone spot the problem? Thanks
38 2993
First week of the current trimester and we've taken a huge leap from writing little code snippets of loops and switches to writing an entire program, and expecting it to work!
I, nor anyone else in my class have heard of structs which is our first assignment. I've been pounding away for several days now and it won't compile beyond my struct declaration. Anyone who knows a bit about C++ I would enjoy you pointing out all of the syntax and logical errors in the first dozen lines of what is over 100 lines of code so far on this program. Here is the guideline:
CIS 247: Programming Assignment #1
Worth 5 Points Assigned: Week 1 Due: Week 3
You have contracted with a media company that deals with CDs, books, movies and video games and will be helping them manage inventory for one of the types of media.
Create a program that will internally store at least eight media items. Use a global (declared above main() ) structure called book, cd, movie or videoGame. Include at least five member variables (select the appropriate data types) to represent different attributes of a media (some examples: pages, cost, runningTime, format, hardcover, genre, …, etc.).
● One of them has to be price, because I will have you calculate tax (rate 8.5%) and total cost.
● One has to be a char array (C-String) and
● One has to be a char that is an abbreviation (such as r for Red). You select anything for the other two.
In main(), create 6 global month structure variables to represent the six different media items. For example, a structure for a shirt inventory might be:
struct shirt {
char size; // S, M, L, X;
char brand[15]; // uses C-style strings instead of string objects
bool shortSleeve;
char color; // for the required switch statement (r=Red, u=Blue, g=Green, w=White, b=Black, y=Yellow)
double price;
};
Note: The above code is an example, not to be used verbatim. Please choose your own set of variable names and data. You may use similar names. The structure can have the variables in any order.
You can load the data into the structures at the time of declaration, or read from a file.
struct shirt concert={'M', “Hanes”, true, ‘b’, 12.5}; // this would be shirt number 1
struct shirt work={'L', “Sears”, false, ‘u’, 21.95}; // this would be shirt number 2
…
… // shirt number 7
… // shirt number 8
Note: Select only one media type, come up with your own naming for the variables and use your own (unique) data.
Write a program that will generate a report showing all of the six media items (I'm using shirts instead here). Requirements:
● Create a text menu using a switch() block, to ask for media number, or 0 for all of them, or 99 to exit. All other input will result in an error message.
● Write one function that accepts media number as an int (1-8) and prints the appropriate media package information (see Sample Output), by passing the appropriate media to the function as a parameter. It will use the switch() statement to display the appropriate color (or whatever you want to use as a coded item),
I will be using the following key for color of shirt: (r=Red, u=Blue, g=Green, w=White, b=Black, y=Yellow)
Sample Output - Show output for at least 4 of the 6 items in your inventory
Shirt Menu
Please Enter 1-8 to list the shirts
Please Enter 0 to list all shirts
Please Enter 99 to end the program
Selection: 2
You have chosen to display information on the Sears shirt:
Size: L
Long Sleeve
Color: Blue
Price: $21.95
Tax: $ 1.87
Total Cost: $23.82
Note that the output will depend upon the type of media (not shirt) and variables that you select.
Now, I've given a great deal of effort into the code you are going to be looking at so keep in mind 6 months ago I had never stroked one key of code.
I'm not sure I'm posting this in the right area either, if not someone please direct me to the C++ posting threads please.
//Assignment One CIS247 Joseph Matzke
#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
struct movie
{
string rating; //G,PG,PG13,R17,X,XXX
char title; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
bool releaseDate; //Still in theatre-released
char language;//English, Spanish, Japanese, Chinese, German, Swaheely
double cost [2];
double tax;
};
void playMovie (struct movie); //it will not compile beyond here
int main(void)
{
int choice = 0;
//movie anyMovie; //declaration-creates object?
struct movie1={"R17", "Oceans 13", true, 'E', 19.99}; //movie number 1
movie movie2={"R17", "Oceans 12", false, 'E', 9.99};
movie movie3={"R17", "Oceans 11", false, 'E', 9.99);
movie movie4={"R17", "Braveheart", false, 'E', 9.99};
movie movie5={"PG", "Harry Potter", false, 'E', 9.99};
movie movie6={"XXX", "Caligula", false, 'S', 1.99};
system ("pause");
return 0;
}
do
{
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
cout << "Selection: ";
There is a lot more code to this, my switch module, my array, and so on but they do me no good if I can't compile beyond where I've noted.
I've changed from --void main (void) to--int main()--to int main (void)-- and regardless of what I do, actually my original code did not have a return in the main but the compiler message seemed to want me to return an int. Can anyone spot the problem? Thanks
Try making the prototype this: -
void playMovie(movie movie_a);
-
And also in your struct you have title and language as a char, which means they can store one char (letter). Shouldn't they be char pointers?
Hey, I hadn't even noticed that and apparently the compiler didn't either. Your right, one is a required string that I declared wrong==I'm working on it. Been reading about structs and objects, basically they are a parent file and a child, or main and sub file creating a variable of definable attributes rather than simply a primitive variable such as int x.
Thank you for your help, I have 10 days left to finish this code and I am more than certain I'm going to run into more problems and will be asking again for a shove in the right direction.
Thank You
Joe
return 0;
}
do
{
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
cout << "Selection: ";
cin >> choice >> endl;
cout << endl; << endl;
}
while choice !=99);
{
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
}
playMovie (show movie);
cout << "Choose a movie by entering 1 thru 6" << endl;
cin >> choice;
switch (movie)
{
case '1': movie1 = "Oceans 13 / NEW";
OK, I think I have enough time in trying to figure out why other code I have written using a do while has worked like this, and this will not, whether I move the brace and include this in the main, or swap another module between this the compiler error keeps coming up
"unqualified id before do" or expected 'or' before 'do', what are they talking about expected >or< before do? I've never heard that-
If anyone knows where the syntax error is please feel free, it compiles through my do while now. I actually don't really see a whole lot of use for a do while other than it's a required part of the program, seems to me you can use a 'for' loop, an 'if' statement in any case avoiding these problems with this compiling. Unless I guess you for some reason had to have a post test or a pre-test loop that I can't think of. OK Here's my problem-
return 0;
}
do
{
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
cout << "Selection: ";
cin >> choice >> endl;
cout << endl; << endl;
}
while choice !=99);
{
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
}
playMovie (show movie);
cout << "Choose a movie by entering 1 thru 6" << endl;
cin >> choice;
switch (movie)
{
case '1': movie1 = "Oceans 13 / NEW";
OK, I think I have enough time in trying to figure out why other code I have written using a do while has worked like this, and this will not, whether I move the brace and include this in the main, or swap another module between this the compiler error keeps coming up
"unqualified id before do" or expected 'or' before 'do', what are they talking about expected >or< before do? I've never heard that-
If anyone knows where the syntax error is please feel free, it compiles through my do while now. I actually don't really see a whole lot of use for a do while other than it's a required part of the program, seems to me you can use a 'for' loop, an 'if' statement in any case avoiding these problems with this compiling. Unless I guess you for some reason had to have a post test or a pre-test loop that I can't think of. OK Here's my problem-
Is your do while in a function? If it is in the middle of a source file, the compiler will generate an error. If it isn't, check your braces. If you put an extra one the compiler will think the function has ended and give an error for the do while.
You can't include loops or ifs outside of functions. However, you can declare variables, as you probably have been doing.
Nope, actually I don't know what I'm doing. I thought it would be easiest for me to create an IPO chart and start writing out all the modules, then edit them as I compiled down the line. I've written most of them, my array I need to figure out yet but--nothing compiles. The change I made to my struct did get it to compile down several more lines, but I don't know why so that isn't doing me much good. Why,
void playMovie (movie) to void playMovie (movie movie_a) made the difference I don't have a clue.
I've also been changing my struct declarations from reading other posts in here and it's simply making it more confusing. Here's the whole code so far, changed 117 times mind you, but it is just the starting modules as I said--I thought I would be able to compile through the errors one at a time but it's really getting out of hand now.
//Assignment One CIS247 Joseph Matzke
#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
struct movie
{
char movie; //G,PG,PG13,R17,X
char title; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
bool releaseDate; //Still in theatre-released
char language[];//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
double cost;
double tax;
};
void playMovie (struct movie movie_a);
int main(void)
{
int choice = 0;
//movie anyMovie; //declaration-creates object?
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
movie movie4={'R', "Braveheart", false, 'E', 9.99};
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
movie movie6={'X', "Caligula", false, 'S', 1.99};
system ("pause");
return 0;
}
do
{
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
cout << "Selection: ";
cin >> choice >> endl;
cout << endl; << endl;
}
while choice !=99);
{
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
}
playMovie (show movie);
cout << "Choose a movie by entering 1 thru 6" << endl;
cin >> choice;
switch (movie)
{
case '1': movie1 = "Oceans 13 / NEW";
break;
case '2': movie2 = "Oceans 12 /released";
break;
case '3': movie3 = "Oceans 11 /released";
break;
case '4': movie4 = "Braveheart /released";
break;
case '5': movie5 = "Harry Potter /released";
break;
case '6': movie6 = "Caligula /released";
default: movie = "Invalid selection";
}
void playMovie (show movie)
{
double movie [] = {'19.99','9.99','9.99','9.99','9.99','1.99'};
double choice [] = {0,0,0,0,0,0};
cout << "Enter movie choice" << endl;
cin >> choice[];
}
{
if (choice == 1);
cout << "movie[0]" << endl;
else
if (choice =>2 && < 6);
cout << "movie[2]" << endl;
else cout << "movie[5]" << endl;
}
movie (cost)
{
if (movie == 1)
cout << "Cost is 19.99:" << endl;
else if (movie =>1 && < 6);
cout << "Cost is 9.99:" << endl;
else
cout << "Cost is 1.99:" << endl;
}
total (cost)
{
if (movie == 1)
cost = 19.99 * .08;
cout >> cost;
else if (movie =>2 && < 6);
cost = 9.99 * .08;
cout << cost;
else cost = 1.99 * .08;
cout << cost;
return cost;
}
cout << "You have picked movie " << movie << "your cost is " << cost << endl;
Any suggestions, scrap this entire thing, start over using a different approach? I'm getting truly frustrated HERE!!!!!
Nope, actually I don't know what I'm doing. I thought it would be easiest for me to create an IPO chart and start writing out all the modules, then edit them as I compiled down the line. I've written most of them, my array I need to figure out yet but--nothing compiles. The change I made to my struct did get it to compile down several more lines, but I don't know why so that isn't doing me much good. Why,
void playMovie (movie) to void playMovie (movie movie_a) made the difference I don't have a clue.
I've also been changing my struct declarations from reading other posts in here and it's simply making it more confusing. Here's the whole code so far, changed 117 times mind you, but it is just the starting modules as I said--I thought I would be able to compile through the errors one at a time but it's really getting out of hand now. - //Assignment One CIS247 Joseph Matzke
-
#include <cstdlib>
-
#include <iomanip>
-
#include <iostream>
-
#include <string>
-
using namespace std;
-
-
struct movie
-
{
-
char movie; //G,PG,PG13,R17,X
-
char title; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate; //Still in theatre-released
-
char language[];//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost;
-
double tax;
-
};
-
void playMovie (struct movie movie_a);
-
int main(void)
-
{
-
int choice = 0;
-
//movie anyMovie; //declaration-creates object?
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
movie movie6={'X', "Caligula", false, 'S', 1.99};
-
-
system ("pause");
-
return 0;
-
}
-
-
do
-
{
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
cout << "Selection: ";
-
cin >> choice >> endl;
-
cout << endl; << endl;
-
}
-
while choice !=99);
-
-
{
-
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
-
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
-
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
-
}
-
-
playMovie (show movie);
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cin >> choice;
-
-
switch (movie)
-
{
-
case '1': movie1 = "Oceans 13 / NEW";
-
break;
-
case '2': movie2 = "Oceans 12 /released";
-
break;
-
case '3': movie3 = "Oceans 11 /released";
-
break;
-
case '4': movie4 = "Braveheart /released";
-
break;
-
case '5': movie5 = "Harry Potter /released";
-
break;
-
case '6': movie6 = "Caligula /released";
-
default: movie = "Invalid selection";
-
}
-
-
-
-
void playMovie (show movie)
-
{
-
double movie [] = {'19.99','9.99','9.99','9.99','9.99','1.99'};
-
double choice [] = {0,0,0,0,0,0};
-
-
cout << "Enter movie choice" << endl;
-
cin >> choice[];
-
}
-
{
-
if (choice == 1);
-
cout << "movie[0]" << endl;
-
else
-
if (choice =>2 && < 6);
-
cout << "movie[2]" << endl;
-
else cout << "movie[5]" << endl;
-
}
-
-
movie (cost)
-
{
-
if (movie == 1)
-
cout << "Cost is 19.99:" << endl;
-
else if (movie =>1 && < 6);
-
cout << "Cost is 9.99:" << endl;
-
else
-
cout << "Cost is 1.99:" << endl;
-
}
-
total (cost)
-
{
-
if (movie == 1)
-
cost = 19.99 * .08;
-
cout >> cost;
-
else if (movie =>2 && < 6);
-
cost = 9.99 * .08;
-
cout << cost;
-
else cost = 1.99 * .08;
-
cout << cost;
-
return cost;
-
}
-
-
cout << "You have picked movie " << movie << "your cost is " << cost << endl;
Any suggestions, scrap this entire thing, start over using a different approach? I'm getting truly frustrated HERE!!!!!
Your forgot a ( in your while statement at the end of your do loop.
Nope, actually I don't know what I'm doing. I thought it would be easiest for me to create an IPO chart and start writing out all the modules, then edit them as I compiled down the line. I've written most of them, my array I need to figure out yet but--nothing compiles. The change I made to my struct did get it to compile down several more lines, but I don't know why so that isn't doing me much good. Why,
void playMovie (movie) to void playMovie (movie movie_a) made the difference I don't have a clue.
I've also been changing my struct declarations from reading other posts in here and it's simply making it more confusing. Here's the whole code so far, changed 117 times mind you, but it is just the starting modules as I said--I thought I would be able to compile through the errors one at a time but it's really getting out of hand now.
//Assignment One CIS247 Joseph Matzke
#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
struct movie
{
char movie; //G,PG,PG13,R17,X
char title; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
bool releaseDate; //Still in theatre-released
char language[];//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
double cost;
double tax;
};
void playMovie (struct movie movie_a);
int main(void)
{
int choice = 0;
//movie anyMovie; //declaration-creates object?
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
movie movie4={'R', "Braveheart", false, 'E', 9.99};
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
movie movie6={'X', "Caligula", false, 'S', 1.99};
system ("pause");
return 0;
}
do
{
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
cout << "Selection: ";
cin >> choice >> endl;
cout << endl; << endl;
}
while choice !=99);
{
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
}
playMovie (show movie);
cout << "Choose a movie by entering 1 thru 6" << endl;
cin >> choice;
switch (movie)
{
case '1': movie1 = "Oceans 13 / NEW";
break;
case '2': movie2 = "Oceans 12 /released";
break;
case '3': movie3 = "Oceans 11 /released";
break;
case '4': movie4 = "Braveheart /released";
break;
case '5': movie5 = "Harry Potter /released";
break;
case '6': movie6 = "Caligula /released";
default: movie = "Invalid selection";
}
void playMovie (show movie)
{
double movie [] = {'19.99','9.99','9.99','9.99','9.99','1.99'};
double choice [] = {0,0,0,0,0,0};
cout << "Enter movie choice" << endl;
cin >> choice[];
}
{
if (choice == 1);
cout << "movie[0]" << endl;
else
if (choice =>2 && < 6);
cout << "movie[2]" << endl;
else cout << "movie[5]" << endl;
}
movie (cost)
{
if (movie == 1)
cout << "Cost is 19.99:" << endl;
else if (movie =>1 && < 6);
cout << "Cost is 9.99:" << endl;
else
cout << "Cost is 1.99:" << endl;
}
total (cost)
{
if (movie == 1)
cost = 19.99 * .08;
cout >> cost;
else if (movie =>2 && < 6);
cost = 9.99 * .08;
cout << cost;
else cost = 1.99 * .08;
cout << cost;
return cost;
}
cout << "You have picked movie " << movie << "your cost is " << cost << endl;
Any suggestions, scrap this entire thing, start over using a different approach? I'm getting truly frustrated HERE!!!!!
Ok, first of all you need to relax, don't get so frustrated.
First of all, you don't need to write struct in front of the struct name in the prototype:
should work. -
int main(void)
-
{
-
int choice = 0;
-
//movie anyMovie; //declaration-creates object?
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
movie movie6={'X', "Caligula", false, 'S', 1.99};
-
-
system ("pause");
-
return 0;
-
}
-
Ok, so you declared your movies, but you ended main and continued writing the program outside a function! That's probably the cause of most of your errors.
continuing main... -
do
-
{
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
cout << "Selection: ";
-
cin >> choice >> endl;
-
cout << endl; << endl;
-
}
-
while choice !=99);
-
-
{
-
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
-
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
-
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
-
}
-
Your do while loop is a bit confusing. Is this what you were looking for: -
do
-
{
-
cout << "Please enter 0 to list all movies" << endl;
-
cout << "Please enter 99 to exit program" << endl;
-
cout << "Selection: ";
-
cin >> choice;
-
}
-
while( choice != 0 && choice != 99); // go back if choice not 0 or 99
-
-
if (choice == 99)
-
{
-
return 0; // exit prgoram
-
}
-
-
if (choice == 0)
-
{
-
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
-
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
-
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
-
}
-
So far so good. -
playMovie (show movie); // invalid syntax
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cin >> choice;
-
-
switch (movie)
-
{
-
case '1': movie1 = "Oceans 13 / NEW";
-
break;
-
case '2': movie2 = "Oceans 12 /released";
-
break;
-
case '3': movie3 = "Oceans 11 /released";
-
break;
-
case '4': movie4 = "Braveheart /released";
-
break;
-
case '5': movie5 = "Harry Potter /released";
-
break;
-
case '6': movie6 = "Caligula /released";
-
default: movie = "Invalid selection";
-
}
-
You never declared movie. Did you mean to put choice in the switch? Is play movie supposed to display everything about the movie (all the variables in the struct)? Try something like this: -
cout << "Choose a movie be entering 1 - 6" << endl;
-
cout << "Selection: ";
-
cin >> choice;
-
-
movie *pmovie; = NULL; // pointer to movie that user chooses
-
-
switch (choice)
-
{
-
case 1:
-
pmovie = &movie1;
-
break;
-
case 2:
-
pmovie = &movie2;
-
break;
-
case 3:
-
pmovie = &movie3;
-
break;
-
case 4:
-
pmovie = &movie4;
-
break;
-
case 5:
-
pmovie = &movie5;
-
break;
-
case 6:
-
pmovie = &movie6;
-
break;
-
}
-
-
if (pmovie != NULL)
-
{
-
playMovie(*pmovie);
-
}
-
Try to correct playMovie yourself and come here if you have any questions. Also, if you don't understand anything just ask.
PS. Please use code tags, it makes your code easier to read and understand.
OK, thank you for taking the time to explain that all to me!! It is making sense now and is a bit embarrassing some of the glaring errors such as writing outside of the function...........I know that much at least. I am reading all I can on pointers, in here and my text book and it's fairly deep and a bit hard to wrap your head around, but-I am determined to get this thing nailed down and understood.
I was wondering why he was giving us two weeks instead of last terms usual two hours, or two days, and I now know why it is taking me that long!
Thanks again python, that was very cool of you to take the time to explain for what I am sure are obvious C++ for DUMMIES mistakes to you.
Joe
Well just to get some things settled I thought I would give it a go to compile and get through just main once to get that great feeling of accomplishment, yet to the detriment of my pc and a bit of abuse to the defenseless mouse I see that very familiar "EXCESS ELEMENTS IN AGGREGATE INITIALIZER"...
I have the same amount of elements in my struct initialized as I have declared which puzzles me, even makes me think it may be my using Dev, rather than that wonderfully helpful VS edition I've installed that came with our software bundle. However nobody uses it, because it is such a crappy environment with incomprehensible error messages in keeping with that great Microsoft tradition of over complication. Simplification is the ultimate sophistication should be their corporate mission statement but it's not. Does anyone believe some of my problems would go away if I were to use Visual Studio? Why would it be that an equally amount of declared sub sets in a struct, which is 6, along with the initialized six produces the error message above in upper case?? There is obviously some logic I am not aware of when attempting to create an OOP. I didn't have quite this much trouble with first attempts at any other type of brand new introductions I was given, anyone have some compiler knowledge that can interpret this message for me it would be greatly appreciated.
Joe - //Assignment One CIS247 Joseph Matzke
-
#include <cstdlib>
-
#include <iomanip>
-
#include <iostream>
-
#include <string>
-
using namespace std;
-
-
struct movie
-
{
-
char rating; //G,PG,PG13,R17,X
-
string movie; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate[]; //Still in theatre-released
-
char language;//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost;
-
double tax;
-
};
-
void playMovie (movie);
-
int main(void)
-
{
-
int choice = 0;
-
//movie anyMovie; //declaration-creates object?
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
movie movie6={'X', "Caligula", false, 'S', 1.99};
-
-
//system ("pause");
-
//return 0;
-
//}
-
-
do
-
{
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
cout << "Selection: ";
-
cin >> choice >> endl;
-
cout << endl; << endl;
-
}
-
while (choice != 0 && choice !=99);//repeat if choice not 0 or 99
-
-
if (choice == 99)
-
{
-
system ("pause");
-
return 0;
-
}
-
if (choice == 0)
-
-
{
-
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
-
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
-
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
-
}
-
-
playMovie (movie);
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
-
movie *pmovie; = NULL; //pointer to movie that user chooses
-
-
switch (choice)
-
{
-
case 1:
-
pmovie = &movie1;
-
break;
-
case 2:
-
pmovie = &movie2;
-
break;
-
case 3:
-
pmovie = &movie3;
-
break;
-
case 4:
-
pmovie = &movie4;
-
break;
-
case 5:
-
pmovie = &movie5;
-
break;
-
case 6:
-
pmovie = &movie6;
-
break;
-
}
-
if (pmovie != NULL)
-
{
-
playMovie (*pmovie);
-
}
-
-
-
void playMovie (releaseDate[])
-
{
-
double movie [] = {'19.99','9.99','9.99','9.99','9.99','1.99'};
-
double choice [] = {0,0,0,0,0,0};
-
-
cout << "Enter movie choice" << endl;
-
cin >> choice[];
-
//}
-
//{
-
if (choice == 1);
-
cout << "movie[0]" << endl;
-
else
-
if (choice =>2 && < 6);
-
cout << "movie[2]" << endl;
-
else cout << "movie[5]" << endl;
-
}
-
-
void playMovie (cost)
-
{
-
if (movie == 1)
-
cout << "Cost is 19.99:" << endl;
-
else if (movie =>1 && < 6);
-
cout << "Cost is 9.99:" << endl;
-
else
-
cout << "Cost is 1.99:" << endl;
-
}
-
total (cost)
-
{
-
if (movie == 1)
-
cost = 19.99 * .08;
-
cout >> cost;
-
else if (movie =>2 && < 6);
-
cost = 9.99 * .08;
-
cout << cost;
-
else cost = 1.99 * .08;
-
cout << cost;
-
return cost;
-
}
-
-
cout << "You have chosen movie " << *pmovie << "your cost is " << cost << endl;
Oh, now that I'm catching on to how to post correctly here for ease of discussion it is line 22 that the compiler is spitting out that message to me on.
Who wrote this shell? Very cool-
Well just to get some things settled I thought I would give it a go to compile and get through just main once to get that great feeling of accomplishment, yet to the detriment of my pc and a bit of abuse to the defenseless mouse I see that very familiar "EXCESS ELEMENTS IN AGGREGATE INITIALIZER"...
I have the same amount of elements in my struct initialized as I have declared which puzzles me, even makes me think it may be my using Dev, rather than that wonderfully helpful VS edition I've installed that came with our software bundle. However nobody uses it, because it is such a crappy environment with incomprehensible error messages in keeping with that great Microsoft tradition of over complication. Simplification is the ultimate sophistication should be their corporate mission statement but it's not. Does anyone believe some of my problems would go away if I were to use Visual Studio? Why would it be that an equally amount of declared sub sets in a struct, which is 6, along with the initialized six produces the error message above in upper case?? There is obviously some logic I am not aware of when attempting to create an OOP. I didn't have quite this much trouble with first attempts at any other type of brand new introductions I was given, anyone have some compiler knowledge that can interpret this message for me it would be greatly appreciated.
Joe - //Assignment One CIS247 Joseph Matzke
-
#include <cstdlib>
-
#include <iomanip>
-
#include <iostream>
-
#include <string>
-
using namespace std;
-
-
struct movie
-
{
-
char rating; //G,PG,PG13,R17,X
-
string movie; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate[]; //Still in theatre-released
-
char language;//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost;
-
double tax;
-
};
-
void playMovie (movie);
-
int main(void)
-
{
-
int choice = 0;
-
//movie anyMovie; //declaration-creates object?
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
movie movie6={'X', "Caligula", false, 'S', 1.99};
-
-
//system ("pause");
-
//return 0;
-
//}
-
-
do
-
{
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
cout << "Selection: ";
-
cin >> choice >> endl;
-
cout << endl; << endl;
-
}
-
while (choice != 0 && choice !=99);//repeat if choice not 0 or 99
-
-
if (choice == 99)
-
{
-
system ("pause");
-
return 0;
-
}
-
if (choice == 0)
-
-
{
-
cout << setw(12) << "Oceans 13" << endl; << "Oceans 12" << endl; "Oceans 11" << endl;
-
cout << "Braveheart" << endl; << "Harry Potter" << endl; << "Caligula" << endl;
-
cout << setw(12) << "movie1" << "movie2" << "movie3" << "movie4" << "movie5" << "movie6" << endl;
-
}
-
-
playMovie (movie);
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
-
movie *pmovie; = NULL; //pointer to movie that user chooses
-
-
switch (choice)
-
{
-
case 1:
-
pmovie = &movie1;
-
break;
-
case 2:
-
pmovie = &movie2;
-
break;
-
case 3:
-
pmovie = &movie3;
-
break;
-
case 4:
-
pmovie = &movie4;
-
break;
-
case 5:
-
pmovie = &movie5;
-
break;
-
case 6:
-
pmovie = &movie6;
-
break;
-
}
-
if (pmovie != NULL)
-
{
-
playMovie (*pmovie);
-
}
-
-
-
void playMovie (releaseDate[])
-
{
-
double movie [] = {'19.99','9.99','9.99','9.99','9.99','1.99'};
-
double choice [] = {0,0,0,0,0,0};
-
-
cout << "Enter movie choice" << endl;
-
cin >> choice[];
-
//}
-
//{
-
if (choice == 1);
-
cout << "movie[0]" << endl;
-
else
-
if (choice =>2 && < 6);
-
cout << "movie[2]" << endl;
-
else cout << "movie[5]" << endl;
-
}
-
-
void playMovie (cost)
-
{
-
if (movie == 1)
-
cout << "Cost is 19.99:" << endl;
-
else if (movie =>1 && < 6);
-
cout << "Cost is 9.99:" << endl;
-
else
-
cout << "Cost is 1.99:" << endl;
-
}
-
total (cost)
-
{
-
if (movie == 1)
-
cost = 19.99 * .08;
-
cout >> cost;
-
else if (movie =>2 && < 6);
-
cost = 9.99 * .08;
-
cout << cost;
-
else cost = 1.99 * .08;
-
cout << cost;
-
return cost;
-
}
-
-
cout << "You have chosen movie " << *pmovie << "your cost is " << cost << endl;
Let's sse your struct: -
struct movie
-
{
-
char rating; //G,PG,PG13,R17,X
-
string movie; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate[]; //Still in theatre-released
-
char language;//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost;
-
double tax;
-
};
-
releaseDate is an array of bools, you are giving it a bool when declaring your movies. I assume you only need 1 bool, so take off the square brackets, and those errors will dissapear (I tried it).
If you want an array you have to put a number in the brackets.
Let's sse your struct: -
struct movie
-
{
-
char rating; //G,PG,PG13,R17,X
-
string movie; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate[]; //Still in theatre-released
-
char language;//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost;
-
double tax;
-
};
-
releaseDate is an array of bools, you are giving it a bool when declaring your movies. I assume you only need 1 bool, so take off the square brackets, and those errors will dissapear (I tried it).
If you want an array you have to put a number in the brackets.
Well, apperantly my post didn't show up but if you click reply you can see what I wrote.
Edit: Well, it shows up in the quotes so that's kind of wierd. I've seen it happen to other people too.
Got it, I'm down to line beyond main now and it's exciting. I found some pages where you can get some explanation of compiler error messages at
http://www.csee.umbc.edu/courses/undergraduate/341/misc/CommonErrors.shtml
but it doesn't contain what I am looking for. In particular I am looking for "expected primary-expression before '<<' token", and am going to keep on looking!
The pointers I have some questions on but from what I've read, and what is contained in the program once the syntax errors are gone and I can see the output I'm sure I'll be able to play with it and get a much better feel for what I do understand and what I don't understand--so for now I'll not ask redundant questions that may or may not be answered once I get this thing to compile.
Using an array for a bool is, pretty dumb now that I'm looking at it. It was really a short cut to get my required array in the program, but if I'm going to use an array I might as well use it for what it's intended for as in my movie titles or some other menu type deal, that way I think I could use a char memory allocation for my string titles and cut down on memory use. I'm actually going to change a bunch of things if I could get some output to dislike.
Thank you for your help, when I get truly stuck again I'll be back, which means to say probably in a few hours-).
Thanks Python
Ahh, I am soo used to the error being on the line prior this is truly embarrassing. After changing every ; << and { in the first 50 lines I realized the line itself contained the error.
This will cause an error: cout << setw(12) << "Money" << endl; << "Braveheart" << endl; cout << "..." << endl;
I can see that running your code in one big long line is very dangerous for the chance of having errors that are not very obvious, such as missing a cout.
Unbelievable. OK, I'm getting there.
Alright, I'm progressing slowly. My output is not quite what I thought it was going to be. I was looking to justify right the title and on the same line right justify the equivalent movie number.
"Oceans 13" movie1
"Oceans 12" movie2
and so on.......How do you do this, I must need to create a tab inline or something. This isn't required, nor have I ever seen it done, actually the setw() was something I saw in some code here. Do I need to move the output all on one cout like this if I want the output to appear as it does above?
cout << setw(4) << "Oceans 13" << setw(12) << movie1 << endl;
Would I need to rewrite it all something like this to create this or is there some other way to tab 'movie1' on to the same line. I might be getting a little out of my league since this is really my first sort of real program. I don't know, getting tired though.
Is there any short cut commands to make this occur? Thanks - //Assignment One CIS247 Joseph Matzke
-
#include <cstdlib>
-
#include <iomanip>
-
#include <iostream>
-
#include <string>
-
using namespace std;
-
-
struct movie
-
{
-
char rating; //G,PG,PG13,R17,X
-
string movie; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate; //Still in theatre-released
-
char language;//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost[5];
-
double tax;
-
};
-
void playMovie (movie);
-
int main(void)
-
{
-
int choice = 0;
-
//movie anyMovie; //declaration-creates object?
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
movie movie6={'X', "Caligula", false, 'S', 1.99};
-
-
-
do
-
{
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
cout << "Selection: ";
-
cin >> choice;
-
//cout << endl; << endl;
-
}
-
while (choice != 0 && choice !=99);//repeat if choice not 0 or 99
-
-
if (choice == 99)
-
{
-
system ("pause");
-
return 0;
-
}
-
-
-
if (choice == 0)
-
-
-
{
-
cout << setw(4) << "Oceans 13" << endl;
-
cout << setw(4) << "Oceans 12" << endl;
-
cout << setw(4) << "Oceans 11" << endl;
-
cout << setw(4) << "Braveheart" << endl;
-
cout << setw(4) <<"Harry Potter" << endl;
-
cout << setw(4) << "Caligula" << endl;
-
cout << setw(12) << "movie1" << endl;
-
cout << setw(12) << "movie2" << endl;
-
cout << setw(12) << "movie3" << endl;
-
cout << setw(12) << "movie4" << endl;
-
cout << setw(12) << "movie5" << endl;
-
cout << setw(12) << "movie6" << endl;
-
}
-
system ("pause");
-
return 0;
-
}
As you can see I had to change it ALL, I didn't like the way it looked, at all.
If there's anyway I'd appreciate it.
Joe
Alright, I'm progressing slowly. My output is not quite what I thought it was going to be. I was looking to justify right the title and on the same line right justify the equivalent movie number.
"Oceans 13" movie1
"Oceans 12" movie2
and so on.......How do you do this, I must need to create a tab inline or something. This isn't required, nor have I ever seen it done, actually the setw() was something I saw in some code here. Do I need to move the output all on one cout like this if I want the output to appear as it does above?
cout << setw(4) << "Oceans 13" << setw(12) << movie1 << endl;
Would I need to rewrite it all something like this to create this or is there some other way to tab 'movie1' on to the same line. I might be getting a little out of my league since this is really my first sort of real program. I don't know, getting tired though.
Is there any short cut commands to make this occur? Thanks
As you can see I had to change it ALL, I didn't like the way it looked, at all.
If there's anyway I'd appreciate it.
Joe
Maybe "\t" (tab) could do what you need: -
cout << movie1.movie << "\t" << "movie1" << endl; // not good to have literal, use the actual variable
-
cout << movie2.movie << "\t" << "movie2" << endl;
-
etc...
-
Does that work for you?
VRX, if you think I would know how to write that code assignment you're crazy! This is the first 'real' program I have ever tried to write myself. If you wrote some code I might see some things wrong? I have 6 days left to finish this one and I'm going backwards. I thought you were explaining to me how to approach writing a program when I started reading your posting-)
No, I wrote "Hello World" 3 months ago so I'm not the one to ask. If you thought you were posting your own thread, you were not: You simply tagged on to mine. Good luck, I know the feeling.
On to my little project that is getting there, slowly but getting there. I've decided it's easier to just write out my initial cout's as this:
cout << "Braveheart" << movie4 << endl; in order to bring the variable name to the same line as the title. The console manipulation is too advanced and I don't have the time.
I do have a question that someone may know the answer to: I can compile to line, I can't say which line until I post the code, but it's this line
switch (choice)
and the compiler is telling me 'expected unqulified-id before "switch"
which I had the same message in the prior line were I had this
movie *pmovie;=NULL;
and needed to remove ; before the = operator.
Now, I don't see anything wrong with the code, and even if I // that line out it will not compile any further. Any ideas what is wrong?
Thank You!
Joe -
-
-
//Assignment One CIS247 Joseph Matzke
-
#include <cstdlib>
-
#include <iomanip>
-
#include <iostream>
-
#include <string>
-
using namespace std;
-
-
struct movie
-
{
-
char rating; //G,PG,PG13,R17,X
-
string movie; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate; //Still in theatre-released
-
char language;//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost[5];
-
double tax;
-
};
-
void playMovie (movie);
-
int main(void)
-
{
-
int choice = 0;
-
//movie anyMovie; //declaration-creates object?
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
movie movie6={'X', "Caligula", false, 'S', 1.99};
-
-
-
do
-
{
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
cout << "Selection: ";
-
cin >> choice;
-
cout << endl; cout << endl; cout << endl;
-
}
-
while (choice != 0 && choice !=99);//repeat if choice not 0 or 99
-
-
if (choice == 99)
-
{
-
system ("pause");
-
return 0;
-
}
-
-
-
if (choice == 0)
-
-
-
{
-
cout << setw(8) << "Oceans 13 = Movie 1" << endl << endl;
-
cout << setw(8) << "Oceans 12 = Movie 2" << endl << endl;
-
cout << setw(8) << "Oceans 11 = Movie 3" << endl << endl;
-
cout << setw(8) << "Braveheart = Movie 4" << endl << endl;
-
cout << setw(8) << "Harry Potter = Movie 5" << endl << endl;
-
cout << setw(8) << "Caligula = Movie 6" << endl << endl << endl;
-
cout << setw(2) << "movie1" << endl;
-
cout << setw(2) << "movie2" << endl;
-
cout << setw(2) << "movie3" << endl;
-
cout << setw(2) << "movie4" << endl;
-
cout << setw(2) << "movie5" << endl;
-
cout << setw(2) << "movie6" << endl;
-
}
-
system ("pause");
-
return 0;
-
}
-
void playMovie (movie)
-
-
-
{
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}
-
-
movie *pmovie = NULL; //pointer to movie that user chooses
-
-
switch (choice)
-
{
-
case 1:
-
pmovie = &movie1;
-
break;
-
case 2:
-
pmovie = &movie2;
-
break;
-
case 3:
-
pmovie = &movie3;
-
break;
-
case 4:
-
pmovie = &movie4;
-
break;
-
case 5:
-
pmovie = &movie5;
-
break;
-
case 6:
-
pmovie = &movie6;
-
break;
-
}
-
// if (pmovie != NULL)
-
//{
-
// playMovie (*pmovie);
-
//}
-
-
-
// void playMovie (cost[])
-
// {
-
// double movie [] = {'19.99','9.99','9.99','9.99','9.99','1.99'};
-
// int choice [] = {0,0,0,0,0,0};
-
-
// cout << "Enter movie choice" << endl;
-
// cin >> choice[];
-
//}
-
//{
-
// if (choice == 1);
-
// cout << "movie[0]" << endl;
-
// else
-
// if (choice =>2 && < 6);
-
// cout << "movie[2]" << endl;
-
// else cout << "movie[5]" << endl;
-
// }
-
-
// void playMovie (cost)
-
// {
-
// if (movie == 1)
-
// cout << "Cost is 19.99:" << endl;
-
// else if (movie =>1 && < 6);
-
// cout << "Cost is 9.99:" << endl;
-
// else
-
// cout << "Cost is 1.99:" << endl;
-
// }
-
// total (cost)
-
// {
-
// if (movie == 1)
-
// cost = (19.99 * .08) + 19.99;
-
// cout >> cost;
-
// else if (movie =>2 && < 6);
-
// cost = (9.99 * .08) + 9.99;
-
// cout << cost;
-
// else cost = (1.99 * .08) + 1.99;
-
// cout << cost;
-
// return cost;
-
// }
-
-
// cout << "You have chosen movie " << *pmovie << "your cost is " << cost << endl;
-
-
-
-
-
I believe once I get past this switch the real problems are going to occur, the output I've changed around so far, and have compiled it to this point. Now, will it work, and I also need to rearrange some code also towards the end but I'd like to see how it outputs first. Anyway, thanks again. Later
Line 79 is where the message occurs, error!.
Python, there's a contributor listed under the name Python at the O'Reilly site we visited in class today while searching through different code help, would that be you?
VRX, if you think I would know how to write that code assignment you're crazy! This is the first 'real' program I have ever tried to write myself. If you wrote some code I might see some things wrong? I have 6 days left to finish this one and I'm going backwards. I thought you were explaining to me how to approach writing a program when I started reading your posting-)
No, I wrote "Hello World" 3 months ago so I'm not the one to ask. If you thought you were posting your own thread, you were not: You simply tagged on to mine. Good luck, I know the feeling.
On to my little project that is getting there, slowly but getting there. I've decided it's easier to just write out my initial cout's as this:
cout << "Braveheart" << movie4 << endl; in order to bring the variable name to the same line as the title. The console manipulation is too advanced and I don't have the time.
I do have a question that someone may know the answer to: I can compile to line, I can't say which line until I post the code, but it's this line
switch (choice)
and the compiler is telling me 'expected unqulified-id before "switch"
which I had the same message in the prior line were I had this
movie *pmovie;=NULL;
and needed to remove ; before the = operator.
Now, I don't see anything wrong with the code, and even if I // that line out it will not compile any further. Any ideas what is wrong?
Thank You!
Joe -
-
<I had to snip your code otherwise my post wouldn't show>
-
-
void playMovie (movie)
-
-
-
{
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}
-
-
movie *pmovie = NULL; //pointer to movie that user chooses
-
-
switch (choice)
-
{
-
case 1:
-
pmovie = &movie1;
-
break;
-
case 2:
-
pmovie = &movie2;
-
break;
-
case 3:
-
pmovie = &movie3;
-
break;
-
case 4:
-
pmovie = &movie4;
-
break;
-
case 5:
-
pmovie = &movie5;
-
break;
-
case 6:
-
pmovie = &movie6;
-
break;
-
}
-
I believe once I get past this switch the real problems are going to occur, the output I've changed around so far, and have compiled it to this point. Now, will it work, and I also need to rearrange some code also towards the end but I'd like to see how it outputs first. Anyway, thanks again. Later
You ended the function again. Look at line 75. You added the closing brace to playMovie().
Shouldn't the code with the switch appear in main, if your playMovie is supposed to display the variables in a movie object? If not, what is playMovie supposed to do. I imagined playMovie like this: -
void playMovie(movie myMovie)
-
{
-
cout << "Movie name: " << myMovie.movie << endl;
-
cout << "Movie cost: " << myMovie.cost << endl;
-
cout << "Movie rating: " << myMovie.rating << endl;
-
cout << "Movie tax: " << myMovie.tax << endl;
-
// other members of a movie
-
}
-
Then in main you would prompt the user for a movie and then call playMovie with that movie.
Python, there's a contributor listed under the name Python at the O'Reilly site we visited in class today while searching through different code help, would that be you?
That's probably not me, I'm not that good (lol). I haven't contributed to anything so, probably not me. Plus, I've barely been programming for 6 months.
I thought you always needed a brace around any statement block? I've never written more than one statement block before. Now, it does compile down to the first break in the switch and says I haven't declared movie1 yet, I guess I closed main up at line where I have return 0; following all those couts, but if I don't put a brace there it won't compile. I need to move some blocks of code up higher in main first, this is going to take a while. Thanks.......again. Joe
No I didn't either, I have one open and one closed brace running now that I've removed the one at line 75. I don't know how I keep doing that. Now, the compiler hangs up at the first break in switch as it was. So, I haven't declared the variables correctly, or elements since I am using a struct. I don't understand how the pointers work I guess. I think if I change my switch to a regular switch it will work, I'm going to try it.
I know how a switch works, and I can't turn it in if I don't understand what everything in it is doing. I appreciate the jump start in pointers, but I think I'll wait until we get there. He'll be wondering how I knew about pointers anyway if I used them, which wouldn't matter if I understood them, but I don't.
Let me try changing the switch. Thanks again. Joe
OK, I'm back to abusing my defenseless mouse. Apparently there is something I don't understand about passing the value in a struct.
Why won't my switch compile??
I've tried using numerous variables in the
switch (rightHerePart)
and it's not compiling, and driving me nuts. What would the proper call be in this instance, I think and thought it would be simply
switch (myMovie.choice)
but apparently not! Do you have any ideas for me to try? Anyone/?
It compiles through the first 100 lines down to line 17 above with the following error message: struct has no member named choice--I know that, that's the cin>> I am switching. OMG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Bye
Thank You - cout << setw(2) << "movie6" << endl;
-
}
-
//system ("pause");
-
//return 0;
-
}
-
void playMovie ( struct movie myMovie)
-
-
{
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
-
-
//movie *pmovie = NULL; //pointer to movie that user chooses
-
-
switch (myMovie.choice)
-
{
-
case 1:
-
movie1 = "Oceans 13";
-
break;
-
case 2:
-
movie2 = "Oceans 12";
-
break;
-
case 3:
-
movie3 = "Oceans 11";
-
break;
-
case 4:
-
movie4 = "Braveheart";
-
break;
-
case 5:
-
movie5 = "Harry Potter";
-
break;
-
case 6:
-
movie6 = "Caligula";
-
default: "Invalid entry";
-
}
I'm done for the night, I won't have any computers left if I keep trying on this *&%^* program.
Joe
OK, I'm back to abusing my defenseless mouse. Apparently there is something I don't understand about passing the value in a struct.
Why won't my switch compile??
I've tried using numerous variables in the
switch (rightHerePart)
and it's not compiling, and driving me nuts. What would the proper call be in this instance, I think and thought it would be simply
switch (myMovie.choice)
but apparently not! Do you have any ideas for me to try? Anyone/?
It compiles through the first 100 lines down to line 17 above with the following error message: struct has no member named choice--I know that, that's the cin>> I am switching. OMG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Bye
Thank You - cout << setw(2) << "movie6" << endl;
-
}
-
//system ("pause");
-
//return 0;
-
}
-
void playMovie ( struct movie myMovie)
-
-
{
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
-
-
//movie *pmovie = NULL; //pointer to movie that user chooses
-
-
switch (myMovie.choice)
-
{
-
case 1:
-
movie1 = "Oceans 13";
-
break;
-
case 2:
-
movie2 = "Oceans 12";
-
break;
-
case 3:
-
movie3 = "Oceans 11";
-
break;
-
case 4:
-
movie4 = "Braveheart";
-
break;
-
case 5:
-
movie5 = "Harry Potter";
-
break;
-
case 6:
-
movie6 = "Caligula";
-
default: "Invalid entry";
-
}
I'm done for the night, I won't have any computers left if I keep trying on this *&%^* program.
Joe
You have all of that code in playMovie. I think it should be in main. What do you want playMovie to do?
Second, why would you put "myMovie.choice" if the variable "choice" has nothing to do with movie objects. A switch performs different actions depending on the value of the variable in the parenthesis. In your case, the variable you want to check is "choice". Here is the switch rewritten without using pointers: -
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
-
movie myMovie;
-
switch (choice)
-
{
-
case 1:
-
myMovie = movie1;
-
break;
-
case 2:
-
myMovie = movie2;
-
break;
-
case 3:
-
myMovie = movie3;
-
break;
-
case 4:
-
myMovie = movie4;
-
break;
-
case 5:
-
myMovie = movie5;
-
break;
-
case 6:
-
myMovie = movie6;
-
break;
-
default: // could be avoided if we used a do while as we used previously
-
cout << "Invalid movie number" << endl;
-
return 1;
-
break;
-
}
-
playMovie(myMovie); // would display the movie's member variables
-
Just as a note, playMovie shoudn't care what movie it is being passed, it only cares that you pass a movie. It should know nothing of the actual program, only that it should print out the variables of a movie object. Hope that helps.
Yes you are right, I am not thinking how the values are being passed using 'struct'.
This compiles but does not break, the code falls through to the default when choosing either 1 thru 6 to "Invalid movie number, why? I compared this switch to several I have written last term and see nothing that would allow the case to be ignored and program to drop through all breaks.
How do you know so much in 6 months? You've been coding longer than that?
Where is my logical error now, I thought syntax errors would make logical easy to find, I don't see it, maybe I should stop for a while, I've rewritten this code several dozen times tonight alone. Yikes.
Thanks You
- {
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}
-
-
movie myMovie;
-
switch (choice)
-
{
-
case 1:
-
myMovie = movie1;
-
break;
-
case 2:
-
myMovie = movie2;
-
break;
-
case 3:
-
myMovie = movie3;
-
break;
-
case 4:
-
myMovie = movie4;
-
break;
-
case 5:
-
myMovie = movie5;
-
break;
-
case 6:
-
myMovie = movie6;
-
break;
-
default: cout << "Invalid movie number" << endl;
-
system ("pause");
-
return 1;
-
break;
-
-
}
It falls through all breaks no matter which case number you choose, why?
- {
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}
-
-
movie myMovie;
-
switch (choice)
-
{
-
case 1:
-
myMovie = movie1;
-
break;
-
case 2:
-
myMovie = movie2;
-
break;
-
case 3:
-
myMovie = movie3;
-
break;
-
case 4:
-
myMovie = movie4;
-
break;
-
case 5:
-
myMovie = movie5;
-
break;
-
case 6:
-
myMovie = movie6;
-
break;
-
default: cout << "Invalid movie number" << endl;
-
system ("pause");
-
return 1;
-
break;
-
-
}
It falls through all breaks no matter which case number you choose, why?
You could try printing choice right before the switch to see what value it has, or you can use this loop: -
do
-
{
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 choice != 6);
-
// at this point choice will be 1 - 6
-
It would be much easier to use an array of movies than all those movie variables. That would eliminate the need for a switch.
After you declare the movies you just write this: -
movie movies[6] = {movie1, movie2, movie3, movie4, movie5, movie6};
-
Now you don't need a switch, you just call playMovie lke this: -
playMovie[movies[choice-1]);
-
- /*{
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}*/
-
//playMovie [movies[choice - 1]);
-
do
-
-
{
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
-
cout << "Selection :";
-
-
cin >> choice;
-
}
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6);
-
{
-
system ("pause");
-
return 0;
-
-
}
-
// playMovie (movies [choice - 1];
-
-
/*
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6);
-
movie myMovie;
-
switch (choice)
-
{
-
case 1:
-
myMovie = movie1;
-
break;
-
case 2:
-
myMovie = movie2;
-
break;
-
case 3:
-
myMovie = movie3;
-
break;
I've tried this every way I can imagine, many more than shown here and regardless something is not right and I don't know what it is my friend. I have to get to class, I'll try some others tonight.
So when I declared the elements in my struct, all of the elements are basically the same thing as a variable, why given they've been declared than do they not act in the code as if they are declared variables?
I know how the prototype works, but, now I'm not using a prototype like I have in the past such as movie(&char, &int, &double, &string), now I'm using the prototype from the struct such as
movie (choice = movie1) or how does the value pass in the struct?
This is the whole problem trying to figure out where the value is, how it is passed with the proper syntax.
Thanks Joe
- /*{
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}*/
-
//playMovie [movies[choice - 1]);
-
do
-
-
{
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
-
cout << "Selection :";
-
-
cin >> choice;
-
}
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6);
-
{
-
system ("pause");
-
return 0;
-
-
}
-
// playMovie (movies [choice - 1];
-
-
/*
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6);
-
movie myMovie;
-
switch (choice)
-
{
-
case 1:
-
myMovie = movie1;
-
break;
-
case 2:
-
myMovie = movie2;
-
break;
-
case 3:
-
myMovie = movie3;
-
break;
I've tried this every way I can imagine, many more than shown here and regardless something is not right and I don't know what it is my friend. I have to get to class, I'll try some others tonight.
- /*{
-
int choice = 0;
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
}*/
-
//playMovie [movies[choice - 1]);
-
do
-
-
{
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
-
cout << "Selection :";
-
-
cin >> choice;
-
}
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6);
-
{ // what's this?
-
system ("pause"); //
-
return 0; //
-
-
} //
-
// playMovie (movies [choice - 1]); // that should work
-
-
/*
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6);
-
movie myMovie;
-
switch (choice)
-
{
-
case 1:
-
myMovie = movie1;
-
break;
-
case 2:
-
myMovie = movie2;
-
break;
-
case 3:
-
myMovie = movie3;
-
break;
You almost have it. I don't know why you had that code with the system call and the return statement. This should work: -
int main()
-
{
-
int choice = 0;
-
//movie anyMovie; //declaration-creates object?
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
movie movie6={'X', "Caligula", false, 'S', 1.99};\
-
-
movie movies[6] = {movie1, movie2, movie3, movie4, movie5, movie6};
-
-
-
do
-
{
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
cout << "Selection: ";
-
cin >> choice;
-
cout << endl; cout << endl; cout << endl;
-
}
-
while (choice != 0 && choice !=99); //repeat if choice not 0 or 99
-
-
if (choice == 99)
-
{
-
system ("pause");
-
return 0;
-
}
-
-
if (choice == 0)
-
{
-
cout << "Movie 1:\t" << movies[0].movie << endl; // avoid hard coding literals
-
cout << "Movie 2:\t" << movies[1].movie << endl;
-
cout << "Movie 3:\t" << movies[2].movie << endl;
-
cout << "Movie 4:\t" << movies[3].movie << endl;
-
cout << "Movie 5:\t" << movies[4].movie << endl;
-
cout << "Movie 6:\t" << movies[5].movie << endl << endl;
-
}
-
-
do
-
{
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
cout << "Selection :";
-
cin >> choice;
-
} while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6); // make sure choice is 1 through 6
-
-
playMovie(movies[choice-1]); // display correct movie; note: indexing starts at 0
-
-
system ("pause");
-
return 0;
-
}
-
If you don't understand any of it just ask and I will help you. Don't use something if you don't understand it.
So when I declared the elements in my struct, all of the elements are basically the same thing as a variable, why given they've been declared than do they not act in the code as if they are declared variables?
I know how the prototype works, but, now I'm not using a prototype like I have in the past such as movie(&char, &int, &double, &string), now I'm using the prototype from the struct such as
movie (choice = movie1) or how does the value pass in the struct?
This is the whole problem trying to figure out where the value is, how it is passed with the proper syntax.
Thanks Joe
I don't really understand what you are talking about. Member of a struct can only be accesed by objects of that struct using the '.' operator. What do you mean by prototype? If you want to write a function that takes a movie struct object as a parameter, write this: -
void funcName(movie testMovie);
-
1 2 3 4
-
1 = return type of function
-
2 = name of function
-
3 = type of parameter, in your case movie
-
4 = name of parameter (optional in prototype)
-
What don't you understand?
OK, few questions - #include <iostream>
-
#include <iomanip>
-
#include <cstdlib>
-
#include <string>
-
using namespace std;
-
struct movie
-
{
-
char rating; //G,PG,PG13,R17,X
-
string movie; //Oceans 13, Oceans 12, Oceans 11, Braveheart, Harry Potter, Caligula
-
bool releaseDate;//released-inTheatre
-
char language;//English E, Spanish S, Japanese J, Chinese C, German G, Swaheely S
-
double cost;
-
double tax;
-
};
-
void playMovie (movie);
-
-
int main()
-
-
{
-
-
int choice = 0;
-
-
// movie anyMovie; //declaration-creates object?
-
-
movie movie1={'R', "Oceans 13", true, 'E', 19.99, .08}; //movie number 1
-
-
movie movie2={'R', "Oceans 12", false, 'E', 9.99};
-
-
movie movie3={'R', "Oceans 11", false, 'E', 9.99};
-
-
movie movie4={'R', "Braveheart", false, 'E', 9.99};
-
-
movie movie5={'G', "Harry Potter", false, 'E', 9.99};
-
-
movie movie6={'X', "Caligula", false, 'S', 1.99};\
-
-
-
-
movie movies[6] = {movie1, movie2, movie3, movie4, movie5, movie6};
-
-
-
-
-
-
do
-
-
{
-
-
cout << "Please enter 0 to list all movies" << endl; //makes sense to display the menu for choice
-
-
cout << "Pleae enter 99 to end the program" << endl; //either display the menu or stop the program
-
-
cout << "Selection: ";
-
-
cin >> choice;
-
-
cout << endl; cout << endl; cout << endl;
-
-
}
-
-
while (choice != 0 && choice !=99); //repeat if choice not 0 or 99
-
-
-
-
if (choice == 99)
-
-
{
-
-
system ("pause");
-
-
return 0;
-
-
}
-
-
-
-
if (choice == 0)
-
-
{
-
-
cout << "Movie 1:\t" << movies[0].movie << endl; // avoid hard coding literals
-
-
cout << "Movie 2:\t" << movies[1].movie << endl;
-
-
cout << "Movie 3:\t" << movies[2].movie << endl;
-
-
cout << "Movie 4:\t" << movies[3].movie << endl;
-
-
cout << "Movie 5:\t" << movies[4].movie << endl;
-
-
cout << "Movie 6:\t" << movies[5].movie << endl << endl;
-
-
}
-
-
-
-
do
-
-
{
-
-
cout << "Choose a movie by entering 1 thru 6" << endl;
-
-
cout << "Selection :";
-
-
cin >> choice;
-
-
}
-
while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6); // make sure choice is 1 through 6
-
-
-
-
playMovie(movies[choice-1]); // display correct movie; note: indexing starts at 0
-
-
-
-
system ("pause");
-
-
return 0;
-
-
}
-
This compiles, but does not link. Produces the error message
Linker error. undefined reference to 'playMovie(movie)' and I have not clue one what this means.
I need only to add some very basic modules now adding final output with cost, tax, title, in correct format.
As for a few coding questions it will be easier if I post them with code snippets one at a time. I thank you for your indulgence. Joe
I don't access any members of struct per say using the '.' operator in the above code, which I need to do. The entire thing is this supposedly is an EASIER way to begin to understand OOP, which I'm not too sure about. Using a struct for your first program that is kind of object oriented as movie has sub sets of itself which makes it an object, correct? movie has, title, rating, et cetera so it has attributes making it an object, even though it is a struct! See this may not be confusing to you, but it is very confusing to me. I could get this desired output in 20 minutes if I could use primitive variables and simply write the program.
I n the code: - while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6); // make sure choice is 1 through 6
-
-
-
-
playMovie(movies[choice-1]);
Wouldn't this, or shouldn't this be less the !?
like while(choice ==1 || choice ==2||choice==3 ........)
playMovie(movies[choice-1]; so that whatever the user enters it is minus one thereby displaying the correct array value?? Why would it be while choice is not equal to 1? I don't understand that one. If it's && the user is going to have to enter 1,2,3,4,5,6 to get anything, correct? If it would compile I would know, but I think this is right. You have to remember last term we wrote ONE if loop, ONE while loop, ONE for loop, ONE switch statement, ONE prototype program, ONE getline program, so it's not like I've written a hundred while loops using these operands. Just makes sense to me this would not work.
Here's another: - if (choice == 0)
-
-
{
-
-
cout << "Movie 1:\t" << movies[0].movie << endl; // avoid hard coding literals
-
What does "avoid hard coding literals mean? I understand the concept of hard coding as in -- int i = 10; ,, it's the literal I don't understand. The other - cout << "Movie 6:\t" << movies[5].movie << endl << endl;
The >movies[5].movie<< I understand this, the "Movie 6:/t << I do not.
/t must be a short cut like /n for endl; is that I have not seen before.
Other than that I do understand every line, what it is doing, why, and just need to figure out the best place to put the calc, and display modules and hopefully it will compile. Thanks for your patience and help Python, I am struggling with this but my professor continues to tell me one day the light simply turns on and poof, you're a programmer. Ha, we'll see.
OK, I've got to start thinking about this, and try and google that compiler message which I doubt I'll find anything on as it is referring to playMovie. I've never encountered a program that compiles but does not link.
Thanks Joe
OK, few questions
<Sorry, I had to snip your code again>
This compiles, but does not link. Produces the error message
Linker error. undefined reference to 'playMovie(movie)' and I have not clue one what this means.
I need only to add some very basic modules now adding final output with cost, tax, title, in correct format.
As for a few coding questions it will be easier if I post them with code snippets one at a time. I thank you for your indulgence. Joe
That linker error usually means that you have a prototype of a function that you never defined. So you have your playMovie prototype but you never define it. All you have to do is include the actual body of the playMovie() function.
I don't access any members of struct per say using the '.' operator in the above code, which I need to do. The entire thing is this supposedly is an EASIER way to begin to understand OOP, which I'm not too sure about. Using a struct for your first program that is kind of object oriented as movie has sub sets of itself which makes it an object, correct? movie has, title, rating, et cetera so it has attributes making it an object, even though it is a struct! See this may not be confusing to you, but it is very confusing to me. I could get this desired output in 20 minutes if I could use primitive variables and simply write the program.
You are not accesing any members because you don't need to. All you need to do, is display the variables, which you will do in playMovie (you pass the desired movie to the function). You could probably get the output easier but it would not be a very flexible program. RIght now, you have six movies, it's also very easy to add more movies or change one of the movies's attributes.
In the code: - while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6); // make sure choice is 1 through 6
-
-
-
-
playMovie(movies[choice-1]);
Wouldn't this, or shouldn't this be less the !?
like while(choice ==1 || choice ==2||choice==3 ........)
playMovie(movies[choice-1]; so that whatever the user enters it is minus one thereby displaying the correct array value?? Why would it be while choice is not equal to 1? I don't understand that one. If it's && the user is going to have to enter 1,2,3,4,5,6 to get anything, correct? If it would compile I would know, but I think this is right. You have to remember last term we wrote ONE if loop, ONE while loop, ONE for loop, ONE switch statement, ONE prototype program, ONE getline program, so it's not like I've written a hundred while loops using these operands. Just makes sense to me this would not work.
The type of condition in the while loop can be confusing lots of times. What it says is, loop throught the loop again if choice is not 1, and choice is not 2, and choice is not 3, etc... So if choice is either 1, 2, 3, 4, 5, or 6 it will go past the loop. You want to loop again if choice is not 1 through 6. Does that make sense? Tell me if it doesn't.
To play the correct movie, you simply call the function with variable at array offset choice - 1. The array is in order. So if user picks, 4 for example, you need to call movies[3] (the 4th movie). Remember, arrays start counting at zero.
Here's another: - if (choice == 0)
-
-
{
-
-
cout << "Movie 1:\t" << movies[0].movie << endl; // avoid hard coding literals
-
What does "avoid hard coding literals mean? I understand the concept of hard coding as in -- int i = 10; ,, it's the literal I don't understand. The other - cout << "Movie 6:\t" << movies[5].movie << endl << endl;
The >movies[5].movie<< I understand this, the "Movie 6:/t << I do not.
/t must be a short cut like /n for endl; is that I have not seen before.
By not hard coding, literals, I mean don't say "cout << "Ocean's 12" << endl;" If you want to print the name of the movie Ocean's 12. Let's say you want to change the name of that movie. You have to change it in two places, possibly more (declaration and literals). You can avoid that by just using the struct variable. "movies[0].movie. The "\t" just means tab. It's like "\n" except "\n" is a newline and "\t" is a tab.
Other than that I do understand every line, what it is doing, why, and just need to figure out the best place to put the calc, and display modules and hopefully it will compile. Thanks for your patience and help Python, I am struggling with this but my professor continues to tell me one day the light simply turns on and poof, you're a programmer. Ha, we'll see.
The professor might be right :) Just don't give up, and ask questions if you need to.
Python you've helped me through my first two weeks and I can't thank you enough. I now, have an understanding of structs and how they work, hard coding and why it is not good to do, much easier to change one attribute than it is to comb through code looking for every instance of your hard coded crap. I understand the while loop much deeper than I did, I picked up several new short cuts such as /n and /t which are handy.
Biggest thing is I've been up since 11am yesterday, left class at 6 and stayed up all night writing this program. I dumped the whole damn bowl of spaghetti and started over. I made an IPO chart, I made a visio flowchart, I used real movies with their directors, time et cetera and started coding.
I wrote each module by itself first, compiled along the way, fixed along the way, and viola a program, and it works.
I'm the happiest C++ guy in North America, or was until I looked in our doc share bin and found this weeks assignment sitting there. Yikes, I can't keep up...
Well, looks like I get to learn how to write a program that pulls from a file, and writes to the file, and updates and sorts the file for stock exchange symbols and their prices. Insanity to think I can write that! But I'm gonna try-
First, look at this - // Assignment 1 CIS 247
-
// Joseph L Matzke
-
-
-
#include <iostream>
-
#include <iomanip>
-
-
using namespace std;
-
-
struct Movie {
-
char title[256];//Max her out
-
char director[30];//Give me enough room
-
int minutes; //Just to come up with some other element
-
char genre; // Technical, Fantasy, History, Classics gives me another attribute
-
double price; //Seems technical books out cost classics by far, it's insane
-
-
};
-
-
void showItem(Movie );
-
-
int main()
-
{
-
-
Movie movie[8] = //might as well be eight or eighty just more typing once you get it
-
{
-
{"Harry Potter and the Deathly Hallows", "J. K. Rowling ",159, 'F',17.99},
-
{"Armed America: Documentary of Gun Owners in Their Homes", "Kyle Cassidy",94,'H',19.80},
-
{"The Old Man and The Sea","Ernest Hemingway",112,'C', 9.80},
-
{"Adventures of Huckleberry Finn (Mark Twain Library)","Mark Twain",129,'C',10.17},
-
{"A Christmas Carol","Charles Dickens",145,'C',4.49},//lists them in order like a prototype
-
{"C++ Programming (THIRD EDITION)", "D S MALIK",71,'T',127.30},
-
{"Legacy of Ashes: The History of the CIA", "Tim Weiner", 120, 'H', 15.12},
-
{"Introduction to Programming with C++", "Diane Zuk", 50, 'T', 123.79}//lists object elements,attributes
-
-
};
-
-
-
-
-
bool exit = false;//assign false to exit, gonna change that down the line
-
do {
-
cout << "Type item no. to display info; 0 to display all the items, 99 to exit" << endl << endl;
-
int choice;
-
cin >> choice;
-
-
switch (choice) {
-
case 1:
-
case 2:
-
case 3:
-
case 4:
-
case 5:
-
case 6:
-
case 7:
-
case 8:
-
-
showItem(movie[choice-1]);//using my array to display, it starts at 0 so I less one -)
-
break;
-
case 0:
-
cout << "Here are all the movies available :" << endl;
-
for (int i=0; i < 8; i++) //here's my array loop
-
{
-
showItem(movie[i]);
-
}
-
break;
-
-
case 99:
-
exit = true;
-
break;
-
default:
-
cout << "Incorrect value entered; try again" << endl;
-
-
}
-
} while (!exit);//while we are not exiting
-
-
-
return 0;
-
}
-
-
void showItem(Movie b) {
-
-
-
-
cout << endl << "*************************************" << endl;//stole this idea from Zeschke
-
cout << "Information on " << "\""<<b.title<<"\":" << endl;
-
cout << "Director: " << b.director << endl;
-
cout << "Title: " << b.title << endl;
-
cout << "Number of minutes: " << b.minutes << endl;
-
-
cout << "Genre: ";//calling my struct attributes with the '.' operator for my switch statement
-
switch (b.genre) {
-
case 'T' : cout << "Technical";
-
break;
-
case 'F' : cout << "Fantasy";
-
break;
-
case 'H' : cout << "History";
-
break;
-
case 'C' : cout << "Classics";
-
break;
-
default : cout << "!!Wrong Genre";
-
-
}
-
-
cout << endl; //usually you don't need std:: except when using setprecision i think
-
-
cout << std::fixed << std::setprecision(2) << "Price: " << b.price << endl;//i knew there was something missing
-
cout << "Tax: "<< b.price * 0.085 << endl; // using namespace std takes care of std::
-
cout << "Total Cost: "<< b.price * 1.085 << endl; //calling all elements with the '.' operand
-
cout << "*************************************" << endl; //i spent, ahhhhhh, about 40 hrs writing this prgm
-
//trashed about 9 builds resulting in perfection
-
//later JL Matzke
-
}
-
Hope your around in a few days when my program writing from file doesn't work. If you ever need anything. Joe
Python you've helped me through my first two weeks and I can't thank you enough. I now, have an understanding of structs and how they work, hard coding and why it is not good to do, much easier to change one attribute than it is to comb through code looking for every instance of your hard coded crap. I understand the while loop much deeper than I did, I picked up several new short cuts such as /n and /t which are handy.
Biggest thing is I've been up since 11am yesterday, left class at 6 and stayed up all night writing this program. I dumped the whole damn bowl of spaghetti and started over. I made an IPO chart, I made a visio flowchart, I used real movies with their directors, time et cetera and started coding.
I wrote each module by itself first, compiled along the way, fixed along the way, and viola a program, and it works.
I'm the happiest C++ guy in North America, or was until I looked in our doc share bin and found this weeks assignment sitting there. Yikes, I can't keep up...
Well, looks like I get to learn how to write a program that pulls from a file, and writes to the file, and updates and sorts the file for stock exchange symbols and their prices. Insanity to think I can write that! But I'm gonna try-
<That's the third time, I think I might start a thread in the feedback forum>
Hope your around in a few days when my program writing from file doesn't work. If you ever need anything. Joe
Congrats, good work Joe!!. That program is a big improvement over your others. I really liked what you did. Good luck, on your next assignement. It will surely be easier now that you have a written some programs and gained more experience. Also, when you get stuck, don't forget to use Google. I use it all the time and it can help you find what you need. And don't get frustrated, keep trying. Wish you good luck ;-)
Sign in to post your reply or Sign up for a free account.
Similar topics
by: stephen henry |
last post by:
Hi all,
I have a question that I'm having difficulty answering. If I have a
struct:
typedef struct my_struct_tag{
struct my_other_struct *other;
} my_struct_tag
|
by: Bilgehan.Balban |
last post by:
Hi,
I am currently brushing up my c++ knowledge and I would like to ask you
about the differences between classes and C structs, in the
function/method perspective.
1) Is it correct to say...
|
by: pinkfloydhomer |
last post by:
Is it well-defined and portable to do something like:
typedef struct
{
int type;
char c;
} S1;
typedef struct
{
|
by: Marty |
last post by:
I am new to C# and to structs so this could be easy or just not
possible.
I have a struct defined called Branch
If I use Branch myBranch = new Branch(i); // everything works
If I use Branch...
|
by: Johan Tibell |
last post by:
Could someone outline the pros and cons of typedefing pointers to
structs like this?
typedef struct exp_ {
int val;
struct exp_ *child;
} *exp;
(This is straight from memory so it might not...
|
by: Daniele M. |
last post by:
Hi folks!
I'm almost newbie in c++ programming, so please don't blame me :)
I have a little (i hope) problem with following code and i really can't
understand what i'm missing :(
Hope you can...
|
by: radskate360 |
last post by:
Hi I am newer to programming and need a bit of help with this program.
OK, heres the directions.
The distance between two places on earth can be calculated by using their latitudes and...
|
by: robert |
last post by:
Hi all,
I'm trying to understand some code - u-boot 1.3rc3 - that reads data
from an ethernet phy. A struct is defined as:
struct mii_dev {
struct list_head link;
char *name;
int (*...
|
by: mdh |
last post by:
Quick question.
In the code below, omitting the word "word", as in char *word,
produces an error of syntax.
In similar "non-struct" declarations, the expression "char *" should
suffice. ( I...
|
by: DolphinDB |
last post by:
Tired of spending countless mintues downsampling your data? Look no further!
In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
|
by: ryjfgjl |
last post by:
ExcelToDatabase: batch import excel into database automatically...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: ArrayDB |
last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: Shællîpôpï 09 |
last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
| |