[ Chojba @ 17.06.2012. 17:24 ] @
Ovako... Citao sam danas o stringovima u C++-u(do sad sam koristio *char), medjutim naleteo sam na problem pri testiranju najjednostavnijeg programa koji mi je pao na pamet. Ili void funkcija ne moze da ima ovakve argumente(valjda bi se bunio kompajler da je to problem ? :confused: ) ili je u pitanju neka jos veca glupost sa moje strane. Ko vidi gresku neka napise :)

Code:
#include <iostream>
#include <string>
using namespace std;

void Prebroji(string s, int *velikaslova, int *malaslova);

void main()
{
    string imeiprezime;
    int velikaslova, malaslova;

    cout << "Unesite ime i prezime:" << endl;
    getline(cin, imeiprezime);

    Prebroji(imeiprezime, &velikaslova, &malaslova);
    cout << "Velikih slova u imenu i prezimenu ima " << velikaslova << " a malih " << malaslova << endl;
}

void Prebroji(string s, int *velikaslova, int *malaslova)
{
    for(int i = 0;i<s.size();i++)
    {
        if(islower(s[i]))
            *malaslova++;
        if(isupper(s[i]))
            *velikaslova++;
    }
}


Output koji dobijam je:

Citat:
Velikih slova u imenu i prezimenu ima -858993458 a malih 858993450


Pozdrav!

Izvinjavam se, problem je u tome sto nisam inicijalizovao brojace. Trebao sam da malaslova i velikaslova postavim na 0. Molim moderatora da obrise post.
[ X Files @ 17.06.2012. 17:43 ] @
Treba inicijalizovati promenljive koje cuvaju podatak o broju velikih i malih slova, jer C/C++ jezici ne garantuju koja ce biti pocetna vrednost deklarisane promenljive. Dakle:
int velikaslova=0, malaslova=0;

Takođe, moguće da će trebati i zagrade kod brojača:
// ...
(*malaslova)++;
// ...
(*velikaslova)++;
// ...
Dakle, vrednost na koju pokazuje pokazivac treba uvecati, a ne treba uvecati adresu, pa uzeti vrednost (koju i ne koristimo dalje). Valjda. Probaj.
[ Chojba @ 17.06.2012. 19:30 ] @
Hvala na odgovoru. Editovao sam poruku par minuta nakon postovanja, problem je bio kao sto ste i vi primetili -u inicijalizaciji.

Sto se pokazivaca tice, to je u redu. Isto je i sa zagradama i bez.

Pozdrav!