-7

After I compile and run and pick no. 1 and y, it won't calculate the price? Please help. Also it won't let me select the seats. After further checking, price won't even load for the rest of the movies. Please help

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void printarray(const int[6][10]);
float price();
float seat();
int i,j;
int array[50][50]={1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,
                   2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,
                   3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,
                   4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,
                   5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,
                   6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,6,10};

float padult=12.00, pkids=8.00, total, adult, kids, tadult, tkids;
char choice1, y, n;
char decision1;
char decision2;


int main()
{
    printf("\n\t\t\t WELCOME \n\t\t\t\t\tTO\n\t\t\t THE CINEMAS \n");
    printf("\n\t\t Please choose your movie: \n");

    int choice;
    printf("\n\t\t1. Finding Nemo ");
    printf("\n\t\t2. Transformers ");
    printf("\n\t\t3. Don't Break My Heart");
    printf("\n\t\t4. Meet The Robinson");
    printf("\n\t\t5. Good Night!!");
    printf("\n\t\t6. Cancel");
    printf(" \n\n\n Please choose 1 of the option: ");
    scanf("%d", &choice);

    switch(choice) {
    case 1:
        printf("\nTitle: Finding Nemo\n");
        printf("Description:\n");
        printf("About a fish name Nemo caught by a human. And his father tries to save him by travelling around the world. ");
        printf("\nNemo is being caught and  unconciously being brought to Sydney, Australia..." );
        printf("\nWill his father who never leave their home save Nemo... Will his father survive the travelling around the world.. ");
        printf("\nGenre: Cartoon\n");
        printf("Do you want to watch this movie:[y][n]\n");
        scanf("%c",&choice1);
        scanf("%c",&choice1);

        if(choice1 == 'y'){
            price();
            break;
        } else {
            main();
        }
        break;                

    case 2:
        printf("\nTitle: Transformers\n");
        printf("Description:\n");
        printf("Story starts when 5 robots that call themselves Autobots arrive on Earth. They tried to protect human from Decepticon which are evil.\nThey fought the Decepticon clan with all their might. Will the earth be saved by the Autobots...\nOr will the Earth fall to the hand of the Decepticon and human race extinct...");
        printf("\nGenre: Scifi\n");
        printf("Do you want to watch this movie:[y][n]\n");
        scanf("%c",&choice1);
        scanf("%c",&choice1);

        if(choice1 == 'y'){
            float price();
            break;
        } else {
            main();
        }
        break;


    case 3:
        printf("\nTitle: Don't Break My Heart...\n ");
        printf("Description:\n");
        printf("Don't Break My Heart is a story about a young girl named Elizabeth that doesn't believe in love anymore. At the age of 16, she's being played by the most handsome boy in her school.\nThe boy broke up with her in front of the school assembly making her embarrased to go to school after that situation. Luckily, a boy named Samuel like her but never reveal his true feelings.\nHe than help the girl to realise the happiness of love. Will the girl realise the true feelings of Samuel...");
        printf("\nGenre: Romance\n");
        printf("Do you want to watch this movie:[y][n]\n");
        scanf("%c",&choice1);
        scanf("%c",&choice1);

        if(choice1 == 'y'){
            float price();
            break;
        } else {
            main();
        }
        break;


    case 4:
        printf("\nTitle: Meet The Robinson\n");
        printf("Description:\n");
        printf("Meet The Robinson is a Disney cartoon that tells us about a lonely orphan is being attacked by his enemy from the future. He is than help by his own son from the future.\nHe has to help his son so his enemy does not change the past. He help his son defeat his true enemy by time travelling.\nHis enemy who's actually his childhood friend realise that he is being used. He then switches sides and defeated their true enemy.\nThis movie shows you how friendship help us defeat anything eventhough they are far away.");
        printf("\nGenre: Cartoon\n");
        printf("Do you want to watch this movie:[y][n]\n");
        scanf("%c",&choice1);
        scanf("%c",&choice1);

        if(choice1 == 'y'){
            float price();
            break;
        } else {
            main();
        }
        break;


    case 5:
        printf("\nTitle: Good Night!!\n");
        printf("Description:\n");
        printf("Good Night!! is a horror story about a ghost who live in peoples dream. Once he entered the dream, it will come out until the dreamer died.\nYou cannot get out of the dream unless you are awake before the final sign. If you get to see this ghost what will you do?\nFind out how they defeat the ghost inside the dream..");
        printf("\nGenre: Horror\n");
        printf("Do you want to watch this movie:[y][n]\n");
        scanf("%c",&choice1);
        scanf("%c",&choice1);

        if(choice1 == 'y'){
            float price();
            break;
        } else {
            main();
        }
        break;


    case 6:
        printf("\nThank you!!\nGood bye\n");


    default:
        printf("Invalid choice...\n");
        printf("\n\n Do you wish to continue?[y][n]: ");
        scanf("%c", &decision1);

        if(decision1 == 'y'){
            main();
        } else {
            printf("\n\n Thank You!!\nGood bye\n");
            break;
        }
        break;
    }             
    system("pause");
    return 0;
}


float price(){
      printf("\n\tPrice:  Adult: RM12.00\n\tChildren: RM8.00\n");
      printf("How many adult: \n");
      scanf("%d", &adult);
      printf("How many kids: \n");
      scanf("%d", &kids);
      printf("You have %d adult and %d kids\n", adult, kids);
      total=(adult*padult)+(kids*pkids);
      printf("Select seats: \n");
      float seats();
      printf("Total= RM .2%f\n", total);
      return total;
}
zoska
  • 1,684
  • 11
  • 23
  • 2
    Debug code yourself. Bad coding!!. function call should be `price(); ` not `float price();`. Don't call `main ` from main. I think you are not familiar about [goto.](http://www.tutorialspoint.com/cprogramming/c_goto_statement.htm) – Jayesh Bhoi Sep 10 '14 at 11:37
  • Dont recursively call `main()` from within your code ... – Andreas Fester Sep 10 '14 at 11:38
  • 2
    why not? maybe he want to cause the name of the site , stack overflow... – Gil.I Sep 10 '14 at 11:39
  • you have too much `break;`, but nevertheless forgot one. – mch Sep 10 '14 at 11:42
  • @Gil.I Ah right, missed that ... BTW, as per the standard, it is undefined behaviour: http://stackoverflow.com/questions/18460912/main-function-calls-itself-in-c-what-will-happen – Andreas Fester Sep 10 '14 at 11:44
  • And, for the sake of completeness, calling main() itself **is** allowed in `C`, but not in `C++`: http://stackoverflow.com/a/4238188/1611055 – Andreas Fester Sep 10 '14 at 11:55

1 Answers1

1

There are many prblems in your code. To name a few:

  1. scanf("%c",&choice1); will consider the enter key press.

  2. case 5 float price(); --> not correct.

  3. if(decision1 == 'y'){ main(); }--> use a flag and do..while()

etc. etc.

Also, it is not a very good practive to put everything inside main. To clean up the code and enhance readability, how about creating separate functions for each case and calling them from switch case?

Sourav Ghosh
  • 133,132
  • 16
  • 183
  • 261