cin.get() nie wczytuje znaków.
Ostatnio zmodyfikowano 2014-01-29 20:58
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: #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(); } |
|
leon_w |
» 2014-01-29 19:46:25 Pewnie w buforze zostaje znak nowej lini. Przed wpisz cin.get(); , co "wyciągnie" znak nowego wiersza z buforu. |
|
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". #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(); } |
|
« 1 » |