Problem z wprowadzaniem tekstu do pól klasy

0

To jeszcze raz.
Problem jest z prywatnymi polami klasy a,b,c,d,e. Kiedy wybieram opcję 3 z menu (wprowadzanie danych na temat komputera) do pola "a" nie mogę wprowadzić typu procesora ze spacją np.(intel pentium) wtedy program się zapętla.
Problem jest również z polem "e", ale tam nie można wpisywać nic oprócz cyfr, po wpisaniu liter i zaakceptowaniu enterem program się zapętla.
Jeśli wpisze w pole "a" łańcuch tekstowy bez spacji, a w polu "e" liczbe to program działa.
Proszę o pomoc. Co zrobić, żeby do pola klasy "a" można było wprowadzać tekst ze spacją i jak rozwiązać problem z polem "e"?

#include <cstdlib>
#include <iostream>

using namespace std;
class komputer
{ 
 private:     
 string a;  
 float b;
 int c;
 int d;
 string e;  
 public:
 void on_off();
 void pokaz(); 
 void konfig();
 void koniec(); 
};

int main(int argc, char *argv[])
{
    komputer x;
    int m;
    printf("=====MENU===== \n");
    printf("1.Wlancz / wylancz \n");
    printf("2.Wyswietl \n");
    printf("3.Konfiguruj \n");
    printf("4.KONIEC \n");
    do
    {
    printf("Wybierz jedna z opcji: ");
    scanf("%i",&m);
    
    switch(m)
    {
    	case 1: 
             x.on_off();
             break;
    	case 2: 
             x.pokaz();
             break;
        case 3:
             x.konfig();
             break;
        case 4:
             x.koniec();
             break;           
        default:
                break;
}
}
while(m<4);    

}
void komputer::on_off()
{
     cout<<"Komputer jest aktualnie: " <<e<<endl;
}
void komputer::pokaz()
{
   cout<<"Dane na temat komputera: "<<endl;
   cout<<"Typ procesora: "<<a<<endl;
   printf("Zegar procesora %.2f \n: ",b);
   cout<<"Ilosc RAM: "<<c<<endl;
   cout<<"Pojemnosc dysku: "<<d<<endl;
   cout<<"Status komputera: "<<e<<endl;
}
void komputer::konfig()
{
     cout<<"Wprowadz dane: "<<endl;
     cout<<"Podaj typ procesora: "<<endl;
     cin>>a;
     cout<<"Podaj zegar procesora: "<<endl;
     cin>>b;
     cout<<"Podaj ilosc RAM: "<<endl;
     cin>>c;
     cout<<"Podaj rozmiar dysku: "<<endl;
     cin>>d;
     cout<<"Podaj status komputera: "<<endl;
     cin>>e;
}
void komputer::koniec()
{
    
}
0

Poczytaj http://pl.wikibooks.org/wiki/C++/Strumienie jest Twój przykład tam opisany nawet dokładnie.

u mnie z polem e nie ma żadnych problemów, swoją drogą mógłbyś te pola trochę lepiej ponazywać :)

u mnie nie kompiluję się bez #include <string>

1 użytkowników online, w tym zalogowanych: 0, gości: 1