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

Kilka pytań do projektu w c++

Ostatnio zmodyfikowano 2017-01-11 06:29
Autor Wiadomość
Whiren
Temat założony przez niniejszego użytkownika
Kilka pytań do projektu w c++
» 2017-01-07 21:35:26
Witam
Piszę projekt na studia z programowania i mam kilka problemów:
1. Jak porównać ze sobą słowa? Dokładnie chciałbym porównać odznaczenia i jeśli będą takie same to wypiszę mi dane żołnierza na ekranie. Nigdy mi to nie wychodziło i próbowałem tu pójść na łatwiznę ale kompilator krzyczy:
C/C++
void Zestawienie()
{
    if( i != 0 )
    {
       
       
        char odz;
        cout << "Podaj nazwe odznaczenia" << endl;
        cin >> odz;
        for( short l = 0; l < i; l++ ) {
            if( odz == spis[ l ].odznaczenie )
            {
               
                cout << "x     zolnierz nr " << l + 1 << ": " << endl;
                cout << "x     Imie: " << spis[ l ].imie << endl;
                cout << "x     Nazwisko: " << spis[ l ].nazwisko << endl;
                cout << "x     Wiek: " << spis[ l ].wiek << endl;
                cout << "x     Stopien: " << spis[ l ].stopien << endl;
                cout << "x     odznaczenie: " << spis[ l ].odznaczenie << endl;
                cout << "x     nazwa misji: " << spis[ l ].nazwa_misji << endl;
                cout << "x     zold: " << spis[ l ].zold << endl;
                cout << "x     czy na misji: " << spis[ l ].czy_znajduje_sie_na_misji << endl;
                cout << "x     czy w jednostce: " << spis[ l ].czy_stacjonuje_w_jednostce << endl;
               
            }
            else
            {
                cout << "Nie ma zolnierza w bazie!! Wcisnij ENTER!";
                getchar();
            }
        }

2.  Mam w menu switch i wszystko śmiga aż do wyboru 8 , 9 i 0 nie działają :/
C/C++
int main()
{
    char wybor;
   
    do
    {
        cout << "Aktualnie posiadasz " << i << " zolnierzy w bazie" << endl;
        cout << "Aktualnie posiadasz " << m << " misji w bazie" << endl;
        cout << endl;
        cout << "1.Dodanie informacji na temat zolnierza\n" << endl;
        cout << "2.Edycja informacji o zolnierzu\n" << endl;
        cout << "3.Przegladanie informacji na temat zolnierza \n" << endl;
        cout << "4.Usuwanie informacji na temat zolnierza\n" << endl;
        cout << "5.Dodanie informacji na temat misji\n" << endl;
        cout << "6.Edycja informacji o misji\n" << endl;
        cout << "7.Przegladanie informacji na temat misji \n" << endl;
        cout << "8.Usuwanie informacji o misji\n" << endl;
        cout << "9.Generowanie zestawien zolnierzy z konkretnym odznaczeniem\n" << endl;
        cout << "0.Generowanie zestawienia danej misji bojowej\n" << endl;
       
        cout << "ESC - Koniec programu " << endl << endl;
       
        wybor = getch();
        system( "cls" );
        switch( wybor )
        {
        case 49:
            Dodaj();
            system( "cls" );
            break;
           
        case 50:
            Edytuj();
            Zapisz();
            system( "cls" );
            break;
           
        case 51: Zobacz();
            system( "cls" );
            break;
           
        case 52: Usun();
            Zapisz();
            system( "cls" );
            break;
           
        case 53: Dodaj1();
            system( "cls" );
            break;
           
        case 54: Edytuj1();
            Zapisz1();
            system( "cls" );
            break;
           
        case 55: Zobacz1();
            system( "cls" );
            break;
           
        case 56: Usun1();
            Zapisz1();
            system( "cls" );
            break;
           
        case 57:
            cout << "bla";
            break;
        case 0:
            cout << "blabla";
            break;
        }
       
       
    } while( wybor != 27 );
   
   
   
   
    return 0;
}

3. Czy jak zapisuję dane w pliku  to czy da się je zapisać na stałe? Chodzi o to,że mam tą bazę żołnierzy, włączam konsolę dodaje żołnierza patrzę czy śmiga, zamykam i zaraz włączam jeszcze raz i muszę znowu wpisywać dane żołnierza. Da się to jakoś zapisać żeby nie znikały mi dane po wyłączeniu konsoli?
P-156188
karambaHZP
» 2017-01-07 23:42:06
1.
odz
 to nie słowo tylko jeden znak.
2. prześledź debuggerem.
3. Zapisuj dane do pliku, a przy uruchomieniu wczytuj dane.
P-156194
Whiren
Temat założony przez niniejszego użytkownika
» 2017-01-08 03:18:08
Dzięki wielkie, błędy wynikające z mojej nieuwagi. Miałem napisaną funkcję wczytującą ale jej nie użyłem, a o tym odz to nie będę komentował nawet.
Co do case to jak wkleiłem funkcję w 9 to działa normalnie,problem nadal jest z case 0. Debugger milczy. Ktoś jakieś pomysły?
P-156197
karambaHZP
» 2017-01-08 09:55:29
'0' == 48
P-156198
Whiren
Temat założony przez niniejszego użytkownika
» 2017-01-08 15:35:50
Śmiga wszystko cacy,dzięki wielkie.
P-156203
Whiren
Temat założony przez niniejszego użytkownika
» 2017-01-11 03:32:50
Jeszcze jedno, mógłby mi ktoś wyjaśnić funkcję "new"? Najlepiej rozumiem jak mam zrobione coś i sam to rozkminiam jak to działa. Znalazłem na funkcję char i śmiga, a jak zamieniam na int albo string to już krzyczy kompilator.

C/C++
cout << "Imie: ";
gets( bufor );
imie = new char[ strlen( bufor ) + 1 ];
strcpy( imie, bufor );

cout << "Nazwisko: ";
gets( bufor );
nazwisko = new char[ strlen( bufor ) + 1 ];
strcpy( nazwisko, bufor );

cout << "wiek: ";
gets( bufor );
wiek = new int[ strlen( bufor ) + 1 ];
strcpy( wiek, bufor );

Czym w tym wypadku różni się char od inta/stringa? Jak to zmienić by śmigało? Szukałem na necie ale ciężko mi idzie zrozumienie tego i jakąś sensowną modyfikację, więc jakby ktoś to przekształcił i napisał kilka słów łopatologicznego wyjaśnienia byłoby miło.
P-156320
karambaHZP
» 2017-01-11 06:29:30
Operator
new
 alokuje pamięć.
Operator
delete
, który musi być w parze, zwalnia tą pamięć.
int
,
char
,
std::string
 to zupełnie różne typy (o rożnym rozmiarze). Nie można przypisać pamięci alokowanej na typ
int
 do wskaźnika pokazującego na typ char, bo nie będzie umiał wykonać arytmetyki.

Dlaczego katujesz się
char *
 zamiast używać
std::string
?

» Kurs C++Dynamiczne zarządzanie pamięcią new i delete lekcja
P-156321
« 1 »
  Strona 1 z 1