switch function

This is a discussion on switch function within the C++ Programming forums, part of the General Programming Boards category; hi my program keeps skiping my switch function any ideas?? Code: int main (void) { people datab; store tdata; char ...

  1. #1
    Registered User
    Join Date
    Nov 2006
    Posts
    38

    Unhappy switch function

    hi my program keeps skiping my switch function any ideas??

    Code:
    int main (void)
    {
      people datab;
      store tdata;
      char any;
      
      char choice;
      char choice2;
      float count = 0;
      float count2 = 0;
      int c; 
      
      tdata.clearary();
      
      cout<<"\nThis program will allow the user to create and then control a database. \n";
      
       
      cout<<"what would you like to do? \n To enter a new record press n \nTo delete a record press d \nTo view a full list of the users with details press f \nTo view serch options press s\n to quit press q :- ";
      cin>>choice;
       
    
     while(count == 0) 
     {
          choice = getchar ();
    	  switch(choice)
    	   {
    	    case 'n':
    		 {    
    		      system("cls");
    			  tdata.load();
    		      tdata.enter(1);
    			  tdata.save();
    		  count = 1;
    		  break;
    		 } 
    		 
        	case 'd':
    		 {
    		  //delete a record ??
    		  count = 1;
    		  break;
    		 }
    		 
    		 case 'f':
    		 {
    		  system("cls");
    		  tdata.list();
    		  count = 1;
    		  break;
    		 }
    p.s this is just a snipit also using quincy

  2. #2
    ZuK
    ZuK is offline
    Registered User
    Join Date
    Aug 2005
    Location
    Austria
    Posts
    1,990
    Choice will be '\n' the first time in the loop. You're not handling that case.
    Kurt

  3. #3
    Registered User
    Join Date
    Nov 2006
    Posts
    38
    could you explain how

  4. #4
    ZuK
    ZuK is offline
    Registered User
    Join Date
    Aug 2005
    Location
    Austria
    Posts
    1,990
    Code:
      cin>>choice;
    will read a char and leave '\n' in the buffer.
    Code:
    choice = getchar ();
    getchar will return '\n'.
    Kurt

  5. #5
    Registered User
    Join Date
    Nov 2006
    Posts
    38
    so how do i fix that

  6. #6
    ZuK
    ZuK is offline
    Registered User
    Join Date
    Aug 2005
    Location
    Austria
    Posts
    1,990
    I would remove the
    Code:
    cin>>choice;
    Kurt

  7. #7
    Registered User
    Join Date
    Nov 2006
    Posts
    38
    but wouldnt that stop me getting the users answer

  8. #8
    ZuK
    ZuK is offline
    Registered User
    Join Date
    Aug 2005
    Location
    Austria
    Posts
    1,990
    Code:
    choice = getchar ();
    Should reads the users choice as well.

    BTW it is never a good idea to mix c-style with c++ style IO.

    Kurt

  9. #9
    Registered User
    Join Date
    Nov 2006
    Posts
    38

    Question

    could you fix this for me as well as that worked fine

    Code:
     char k = 'y'; 
    	 while (k == "y");

  10. #10
    Deathray Engineer MacGyver's Avatar
    Join Date
    Mar 2007
    Posts
    3,211
    If you use doublequotes, the char inside will be treated as a C-style string. That's wrong, although the compiler might be extra smart about it. Use single quotes for single chars.

  11. #11
    Registered User
    Join Date
    May 2007
    Posts
    88
    Code:
    while (k == 'y') {

  12. #12
    ZuK
    ZuK is offline
    Registered User
    Join Date
    Aug 2005
    Location
    Austria
    Posts
    1,990
    That shouldn't compile.
    try
    Code:
    	 char k = 'y'; 
    	 while (k == 'y'); // this would be an infinite loop. Do you really want the ;
    Kurt

  13. #13
    Registered User
    Join Date
    Nov 2006
    Posts
    38
    thanks i didnt notice that

  14. #14
    Registered User
    Join Date
    Nov 2006
    Posts
    38

    Question

    k i got it mostly working but for some reason the first two questions print in a single line
    Code:
     void people::enter(int i) 
       {
        char k = 'y'; 
    	 while (k == 'y') 
    	   { 
    	    cout << "Enter the name of the person ";
    	     gets(np[i].name);
            cout << "Enter the phone number of the person ";
    	     gets(np[i].phone);
    		cout << "Enter the full address of the person ";
    		 gets(np[i].address); 
    		cout << "Enter the Email address of the person";
    		 gets(np[i].email);
    		cout << "enter the name of the party that the person belongs to ( conservative, labour, liberal, other)";
    		 gets(np[i].party);
    		cout << "Do you wish to enter another member ? (y/n)";
    		cin  >> k;
    		}
    	}
    any idea

  15. #15
    ZuK
    ZuK is offline
    Registered User
    Join Date
    Aug 2005
    Location
    Austria
    Posts
    1,990
    Let me guess. Before calling that function you are using getchar() to read a character.
    You will have to get rid of a leftover '\n' in the input buffer.
    cin.ignore() could help.
    Kurt

Page 1 of 2 12 LastLast
Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Beginner Needs help in Dev-C++
    By Korrupt Lawz in forum C++ Programming
    Replies: 20
    Last Post: 09-28-2010, 01:17 AM
  2. Getting an error with OpenGL: collect2: ld returned 1 exit status
    By Lorgon Jortle in forum C++ Programming
    Replies: 6
    Last Post: 05-08-2009, 08:18 PM
  3. In over my head
    By Shelnutt2 in forum C Programming
    Replies: 1
    Last Post: 07-08-2008, 06:54 PM
  4. Undefined Reference Compiling Error
    By AlakaAlaki in forum C++ Programming
    Replies: 1
    Last Post: 06-27-2008, 11:45 AM
  5. c++ linking problem for x11
    By kron in forum Linux Programming
    Replies: 1
    Last Post: 11-19-2004, 09:18 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21