Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie stringów z konsoli

Ostatnio zmodyfikowano 2015-06-14 16:08
Autor Wiadomość
atub
Temat założony przez niniejszego użytkownika
Wczytywanie stringów z konsoli
» 2015-06-14 14:44:55
Witam!
Mam problem z wczytywaniem stringów z konsoli. Kiedy chce wczytać informacje o modelu to program wyświetla tylko "Model:" i nie mogę nic wpisać. Natomiast w firma i w typ działa wszystko normalnie. Gdzie tu jest problem skoro takiej samej składni użyłem do wczytywanie modelu firmy i typu a nie działa tylko wczytywanie modelu?



C/C++
#include <iostream>
#include <conio.h>
using namespace std;

class gitara {
public:
    string model;
    string firma;
    string typ;
    float cena;
    void wypisz()
    {
        cout << "Model: " << model << endl;
        cout << "Firma: " << firma << endl;
        cout << "Typ: " << typ << endl;
        cout << "Cena: " << cena << endl;
    }
    void zapisz()
    {
        cout << "Podaj firme: ";
        getline( cin, firma );
        cout << endl;
        cout << "Podaj model: ";
        getline( cin, model );
        cout << endl;
        cout << "Podaj typ gitary(akustyczna elektryczna czy basowa): ";
        getline( cin, typ );
        cout << endl;
        cout << "Podaj cene: ";
        cin >> cena;
        cout << endl;
    }
   
};
class sklep
{
public:
    gitara t[ 100 ];
    int ilosc;
    void wprowadz_wszystkie()
    {
        cout << "Podaj ilosc gitar ktore chcesz wprowadzic od 1 do 100" << endl;
        do {
            cin >> ilosc;
            if( ilosc < 1 && ilosc > 100 )
            {
                cout << "Podales zla liczbe . Podaj jeszcze raz" << endl;
            }
        } while( ilosc < 1 || ilosc > 100 );
       
        for( int i = 0; i < ilosc; i++ )
        {
            cout << "Podaj dane gitary nr " << i + 1 << endl;
            t[ i ].zapisz();
        }
    }
    void wypisz_wszystkie()
    {
        for( int i = 0; i < ilosc; i++ )
             t[ i ].wypisz();
       
        cout << endl;
    }
   
   
};

int main( int argc, char ** argv )
{
    int menu;
    sklep GitarMax;
    cout << "Witam w Bazie Danych " << endl;
    do {
        cout << "Nacisnij 1 by dodac gitary do bazy danych" << endl << "Nacisnij 2 by wyswietlic podane gitary" << endl << "Nacisnij 3 by zakonczyc" << endl;
        cin >> menu;
        switch( menu )
        {
        case 1:
            GitarMax.wprowadz_wszystkie();
            break;
        case 2:
            GitarMax.wypisz_wszystkie();
            break;
        case 3:
            cout << "Koniec programu" << endl;
            break;
        default:
            cout << "Podales zly znak";
        }
    } while( menu != 3 );
   
    system( "pause" );
    return 0;
}
P-133559
stevy
» 2015-06-14 15:46:59
Trochę trudno było ze zrozumieniem pytania, ale po odpaleniu programu wiem o co Ci chodzi. Problem jest chyba taki, że jak chcesz wczytać gitarę, to przeskakuje bezpośrednio do modelu, omijając jakby firmę, prawda?

leży on tu:
C/C++
cout << "Podaj firme: ";
getline( cin, firma );

cout zostawia w buforze klawiatury znak nowej linii, a cin kończy wczytywanie po napotkaniu biłego znaku.
Musisz ten znak złapać, używając np. cin.ignore();
P-133563
atub
Temat założony przez niniejszego użytkownika
» 2015-06-14 16:08:40
Tak dokładnie o to mi chodziło jakoś ciężko było mi to opisać. Dzięki za pomoc
P-133566
« 1 »
  Strona 1 z 1