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

ciągi znaków - część VII

Ostatnio zmodyfikowano 2009-11-08 19:58
Autor Wiadomość
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:
C/C++
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ć?
P-11380
DejaVu
» 2009-11-07 23:20:01
Skąd Wy wszyscy tego get'a bierzecie na końcu getline'a...
C/C++
char tablica[ 5 ][ 50 ];
cout << "Podaj nazwisko";
cin.getline( tablica[ 0 ], 50 );
cout << "nazwisko:" << tablica[ 0 ];
P-11388
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.
C/C++
#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.
P-11392
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.
P-11396
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.
P-11398
DejaVu
» 2009-11-08 17:53:58
Przed każdym wczytywaniem osoby napisz:
C/C++
cin.clear();
cin.sync();
P-11402
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ć?
P-11420
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ą.
P-11422
« 1 »
  Strona 1 z 1