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

Problem z zadaniem z ksiazki, tablica char, liczenie słów

Ostatnio zmodyfikowano 2017-05-24 12:11
Autor Wiadomość
Bercik97
Temat założony przez niniejszego użytkownika
Problem z zadaniem z ksiazki, tablica char, liczenie słów
» 2017-05-23 22:42:52
Witam. Mam problem z przekształceniem kodu ze string na char. Link do zdj zadania => http://imgur.com/a/aA7Sq
Pokrótce, mam napisać program który korzysta z tablicy char, odczytuje podane słowa przez użytkownika, gdy użytkownik napisze " gotowe " program ma się skończyć i podać ile użytkownik podał słów.
Zadanie 9 zrobiłem, ale z 8 mam problem,  nie wiem jak to przekształcić na tablice char. Gdy podaje słowa program na końcu podaje mi ilość liter, i gdy napotka literę " e " ( ostatnia litera słowa " gotowe " ) to kończy mi program. Proszę o szybką odpowiedź. link => http://imgur.com/a/AG1Vv

Zadanie 8 kod :
C/C++
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

const char gotowe = 'gotowe';
char slowo;
int dlugosc = - 1;

int main()
{
    cout << "Podawaj slowa (kiedy skonczysz, napisz \" gotowe \"\n";
    do
    {
        cin >> slowo;
        ++dlugosc;
       
    } while( slowo != gotowe );
   
    if( dlugosc <= 4 )
    {
        cout << "Podano " << dlugosc << " slowa.";
    }
    else
         cout << "Podano " << dlugosc << " slow.";
   
    cout << endl;
    system( "PAUSE" );
   
    return 0;
}

Zadanie 9 kod ( ZROBIONE ) :
C/C++
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

const string gotowe = "gotowe";
string slowo;
int dlugosc = - 1;

int main()
{
    cout << "Podawaj slowa (kiedy skonczysz, napisz \" gotowe \"\n";
    do
    {
        cin >> slowo;
        ++dlugosc;
       
    } while( slowo != gotowe );
   
    if( dlugosc <= 4 )
    {
        cout << "Podano " << dlugosc << " slowa.";
    }
    else
         cout << "Podano " << dlugosc << " slow.";
   
    cout << endl;
    system( "PAUSE" );
   
    return 0;
}
link => http://imgur.com/a/fABYp


P-161488
latajacaryba
» 2017-05-24 00:22:11
C/C++
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

const char * gotowe = "gotowe";
char slowo[ 100 ]; // slowo ma max 100 znakow

int main()
{
    int dlugosc = 0;
    cout << "Podawaj slowa (kiedy skonczysz, napisz \" gotowe \")\n";
    while( 1 )
    {
        cin >> slowo;
        dlugosc++;
        if( strcmp( slowo, gotowe ) == 0 ) // wyjasnienie funkcji http://cpp0x.pl/dokumentacja/standard-C/strcmp/320
        {
            cout << "podano: \"gotowe\"\n";
            break;
        }
    }
   
    cout << "podano " << dlugosc << " slow/a\n";
   
    return 0;
}

Poznaj różnice między c-stringiem (zmienną tekstową) a znakiem, bo to:
const char gotowe = 'gotowe';
 Tak nie działa. Próbujesz przypisać tekst (który oznaczasz jako znak, bo '...' zamiast "...") do zmiennej char.

PS porównując dwa wskaźniki == porównujesz ich adresy. Używaj strcmp
PSS. co to za książka? :)
P-161499
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-05-24 00:49:45
Jutro jak wstane ogarne ten kodzik. Książka to " Jezyk C++ Szkoła programowania ( wydanie VI ) - Stephen Prata ".

EDIT: Jednak teraz ogarne ten kod :D
P-161500
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-05-24 01:05:07
O co chodzi z ta " 1 " w warunku pętli while ? I czym się różni  " dlugosc++ "   i   " ++dlugosc " ?
P-161502
karambaHZP
» 2017-05-24 01:31:06
O co chodzi z ta " 1 " w warunku pętli while ?
W warunku pętli wszystko inne niż 0, jest
true
, czyli
1
 jest równoważne
true
.

I czym się różni  " dlugosc++ "   i   " ++dlugosc " ?
Możesz przyjąć, że zapis z prefiksem jest szybszy.
Zapis z postfiksem musi dodatkowo utworzyć obiekt tymczasowy, aby móc przechować wartość sprzed inkrementacji.
Następnie inkrementuje wartość i zwraca wartość ze zmiennej tymczasowej.
P-161504
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-05-24 01:32:34
Dzięki ;)
P-161505
latajacaryba
» 2017-05-24 12:11:41
C/C++
int x = 0;
int tab[ 5 ] { 0, 1, 2, 3, 4 };
cout << tab[ ++x ]; // wypisze element 1, bo najpierw inkrementuje x, czyli 1, i wypisuje tab[1]

x = 0;

cout << tab[ x++ ]; // wypisze 0, bo najpierw wypisanie a potem inkrementacja
P-161513
« 1 »
  Strona 1 z 1