Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa prebrojavanjem malih i velikih slova unutar stringa :S

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa prebrojavanjem malih i velikih slova unutar stringa :S

[ Pregleda: 1618 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Chojba

Član broj: 238529
Poruke: 200
*.adsl.eunet.rs.



+75 Profil

icon Problem sa prebrojavanjem malih i velikih slova unutar stringa :S17.06.2012. u 17:24 - pre 144 meseci
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.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa prebrojavanjem malih i velikih slova unutar stringa :S17.06.2012. u 17:43 - pre 144 meseci
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.
 
Odgovor na temu

Chojba

Član broj: 238529
Poruke: 200
*.adsl.eunet.rs.



+75 Profil

icon Re: Problem sa prebrojavanjem malih i velikih slova unutar stringa :S17.06.2012. u 19:30 - pre 144 meseci
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!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa prebrojavanjem malih i velikih slova unutar stringa :S

[ Pregleda: 1618 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.