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

cin.get() nie wczytuje znaków.

Ostatnio zmodyfikowano 2014-01-29 20:58
Autor Wiadomość
Tunik
Temat założony przez niniejszego użytkownika
cin.get() nie wczytuje znaków.
» 2014-01-29 17:49:22
Witam.
Napisałem program, w którym chcę wczytać znaki do tablicy za pomocą cin.get(), lecz niestety gdy dochodzi do momentu wczytania znaków, program przeskakuje dalej zamiast wczytać znaki. Oto kod:

C/C++
#include <iostream>
#include <conio.h>

using namespace std;

struct POCIAGI
{
    char miasto_docelowe[ 30 ];
    unsigned int dlugosc_trasy;
    float godzina_odjazdu;
    char rodzaj_pociagu;
};

void funkcja( POCIAGI tab[], int ilosc, char stacja[] )
{
    float srednia_odleglosc = 0, suma = 0;
    int ile_pociagow = 0;
   
    for( int j = 0; j < ilosc; j++ )
    {
        for( int i = 0; i < 30; i++ )
        {
            if( tab[ j ].rodzaj_pociagu == 'o' )
            {
                if( stacja[ i ] == tab[ j ].miasto_docelowe[ i ] )
                {
                    suma += tab[ i ].dlugosc_trasy;
                    ile_pociagow++;
                }
            }
        }
    }
   
    srednia_odleglosc = suma / ile_pociagow;
   
    if( ile_pociagow == 0 )
         cout << "Brak pociagow";
    else
         cout << "Srednia dlugosc trasy pociagow osobowych do zadanego miasta wynosi: " << srednia_odleglosc;
   
}

int main()
{
    POCIAGI tablica[ 50 ];
    int opcja, licznik = 0;
   
    for( int i = 0; i < 50; i++ )
    {
        cout << "Podaj stacje pociagu: ";
        cin >> tablica[ i ].miasto_docelowe;
        cout << "Podaj dlugosc trasy: ";
        cin >> tablica[ i ].dlugosc_trasy;
        cout << "Podaj godzine odjazdu: ";
        cin >> tablica[ i ].godzina_odjazdu;
        cout << "Podaj rodzaj pociagu(o,p lub e): ";
        cin >> tablica[ i ].rodzaj_pociagu;
        cout << endl;
       
        licznik++;
       
        cout << "Kontynuowac?" << endl;
        cout << "1.Tak" << endl;
        cout << "2.Nie" << endl;
        cin >> opcja;
       
        if( opcja == 2 )
             break;
       
    }
   
    cout << "Gdzie chcesz jechac?: ";
    char miasto[ 10 ];
    cin.get( miasto, 10 );
   
    funkcja( tablica, licznik, miasto );
    getch();
}
P-103533
leon_w
» 2014-01-29 19:46:25
Pewnie w buforze zostaje znak nowej lini.
Przed
C/C++
cin.get( miasto, 10 );
wpisz
cin.get();
, co "wyciągnie" znak nowego wiersza z buforu.
P-103543
Tunik
Temat założony przez niniejszego użytkownika
» 2014-01-29 20:58:02
Ok, dziękuję pomogło ;) Zmodyfikowałem trochę program i teraz w wyniku wyświetla mi jakieś brudy typu "2.000868e+008".

C/C++
#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;

struct POCIAGI
{
    char miasto_docelowe[ 30 ];
    unsigned int dlugosc_trasy;
    float godzina_odjazdu;
    char rodzaj_pociagu;
};

void funkcja( POCIAGI tab[], int ilosc, char stacja[] )
{
    float srednia_odleglosc = 0.0, suma = 0.0;
    int ile_pociagow = 0.0;
   
    for( int j = 0; j < ilosc; j++ )
    {
        for( int i = 0; i < 30; i++ )
        {
            if( tab[ j ].rodzaj_pociagu == 'o' )
            {
                if( strcmp( tab->miasto_docelowe, stacja ) == 0 )
                {
                    suma = suma + tab[ i ].dlugosc_trasy;
                    ile_pociagow = ile_pociagow + 1.0;
                }
            }
        }
    }
   
    srednia_odleglosc = suma / ile_pociagow;
   
    if( ile_pociagow == 0 )
         cout << "Brak pociagow";
    else
         cout << "Srednia dlugosc trasy pociagow osobowych do zadanego miasta wynosi: " << srednia_odleglosc;
   
}

int main()
{
    POCIAGI tablica[ 50 ];
    int opcja, licznik = 0;
   
    for( int i = 0; i < 50; i++ )
    {
        cout << "Podaj stacje pociagu: ";
        cin >> tablica[ i ].miasto_docelowe;
        cout << "Podaj dlugosc trasy: ";
        cin >> tablica[ i ].dlugosc_trasy;
        cout << "Podaj godzine odjazdu: ";
        cin >> tablica[ i ].godzina_odjazdu;
        cout << "Podaj rodzaj pociagu(o,p lub e): ";
        cin >> tablica[ i ].rodzaj_pociagu;
        cout << endl;
       
        licznik++;
       
        cout << "Kontynuowac?" << endl;
        cout << "1.Tak" << endl;
        cout << "2.Nie" << endl;
        cin >> opcja;
       
        if( opcja == 2 )
             break;
       
    }
   
    cout << "Gdzie chcesz jechac?: ";
    char miasto[ 10 ];
    cin.get();
    cin.get( miasto, 10 );
   
    funkcja( tablica, licznik, miasto );
    getch();
}
P-103548
« 1 »
  Strona 1 z 1