ciągi znaków - część VII
Ostatnio zmodyfikowano 2009-11-08 19:58
jarek4700 Temat założony przez niniejszego użytkownika |
ciągi znaków - część VII » 2009-11-07 21:55:26 Mam pytanie odnośnie VII części kursu. Nie ma tam informacji jak wczytywać ciągi znaków do tablicy wielowymiarowej. Próbowałem tak: char tablica[ 5 ][ 50 ]; cout << "Podaj nazwisko"; cin.getline( tablica[ 0 ], 50 ).get(); cout << "nazwisko:" << tablica[ 0 ]; I program wyświetla jakieś dziwne rzeczy typu "nazwisko:0ffc00" O co więc chodzi? Jak te dane wprowadzać? |
|
DejaVu |
» 2009-11-07 23:20:01 Skąd Wy wszyscy tego get'a bierzecie na końcu getline'a... char tablica[ 5 ][ 50 ]; cout << "Podaj nazwisko"; cin.getline( tablica[ 0 ], 50 ); cout << "nazwisko:" << tablica[ 0 ]; |
|
jarek4700 Temat założony przez niniejszego użytkownika |
» 2009-11-08 12:34:35 Właśnie robię zadanie 2 z IX części kursu C++ i dlatego pytałem. Po wyrzuceniu tych get`ów część programu, którą napisałem działa niby poprawnie ale nie do końca. #include <iostream> #include <cstring> using namespace std;
int main() { int liczba_osob; int i = 0; cout << "Podaj liczbe osob: "; cin >> liczba_osob; cout << "Podano liczbe" << liczba_osob << endl; char tablica[ liczba_osob ][ 4 ][ 40 ]; while( i < liczba_osob ) { cout << "osoba - " << i + 1 << endl; cout << "Imie:"; cin.getline( tablica[ i ][ 0 ], 40 ); cout << "Nazwisko:"; cin.getline( tablica[ i ][ 1 ], 40 ); cout << "Numer telefonu:"; cin.getline( tablica[ i ][ 2 ], 40 ); cout << "Uwagi:"; cin.getline( tablica[ i ][ 3 ], 40 ); i++; } cout << tablica[ 1 ][ 2 ]; return 0; } Ta część wprowadza dane osób do tablicy. Robi to poprawnie bo numer telefonu 2 osoby wyświetla się na końcu programu. Problem jest tylko w tym że nijak nie da się wprowadzić imienia pierwszej osoby. |
|
DejaVu |
» 2009-11-08 16:08:47 (...) działa niby poprawnie ale nie do końca. |
Opisz co to znaczy - ja nie jestem testerem Twojej aplikacji i nie mam najmniejszego zamiaru poświęcać X czasu na to, by domyślić się kiedy Twój program nie zadziała zgodnie z Twoimi oczekiwaniami. |
|
jarek4700 Temat założony przez niniejszego użytkownika |
» 2009-11-08 16:45:53 Przecież napisałem na czym problem polega - niemożliwe jest wprowadzenie imienia pierwszej osoby. |
|
DejaVu |
» 2009-11-08 17:53:58 Przed każdym wczytywaniem osoby napisz: |
|
jarek4700 Temat założony przez niniejszego użytkownika |
» 2009-11-08 19:52:03 Teraz pomogło.
Apropo pytania: "skąd wy wszyscy bierzecie tego get`a" W kursie cz.VII są podane przykłady kiedy czasem nie da się wprowadzić pewnych danych jeśli nie dopiszemy get`a na końcu getline`a. Stwierdziłem więc że jak będę go zawsze dopisywał to nie będzie problemów. Właściwie to czemu nie można tak robić? |
|
DejaVu |
» 2009-11-08 19:58:52 To nie chodzi o to co można, a czego nie można tylko o to, żebyś rozumiał co się dzieje w programie. Obecny kurs tego nie wyjaśnia, ba nawet nie porusza zagadnienia tego. Nowy kurs, który piszę ma to wyjaśnione. Generalnie chodzi o to, że get() wczytuje jeden znak, więc wpisując: getline().get(), wczytujesz de'facto cały wiersz + 1 znak przez co później różne kwiatki wychodzą. |
|
« 1 » |