Forum » Programiranje » Zakaj mi ne šteje presledkov ?
Zakaj mi ne šteje presledkov ?
lukalukov ::
Pozdravljeni!
Sem nov v programiranju in sem našel kodo, ki sem jo malo predelal. Rezultat je spodaj. Kode na deluje. Njen namen je štetje besed tako, da šteje presledke. Prosim še če mi razložite kaj pomeni /0 in cin. pred getline. Program je v c++ narejen z Dev c++.
Vnaprej se vam zahvaljujem za pomoč.
Sem nov v programiranju in sem našel kodo, ki sem jo malo predelal. Rezultat je spodaj. Kode na deluje. Njen namen je štetje besed tako, da šteje presledke. Prosim še če mi razložite kaj pomeni /0 in cin. pred getline. Program je v c++ narejen z Dev c++.
Vnaprej se vam zahvaljujem za pomoč.
- spremenilo: lukalukov ()
shadeX ::
Za C ne vem, ampak pri Javi moraš uporabiti "Equals" metodo, ki vrne boolean. "==" v Javi vrne boolean, ki pove ali se objekt nahaja v istem "predalčku" - memory, kot drugi objekt katerega primerjaš.
Predvidevam da je pri C podobno, mogoče se motim.
Predvidevam da je pri C podobno, mogoče se motim.
Yacked2 ::
Tisti cout je samo izpis teksta v terminal,
cin.getline prebere vrstico,
tisti \0 je pa v pomnilniku nakoncu besedila, da program ve, kdaj je prišel do konca (npr: 's','l','o','\0')
cin.getline prebere vrstico,
tisti \0 je pa v pomnilniku nakoncu besedila, da program ve, kdaj je prišel do konca (npr: 's','l','o','\0')
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
c-lox ::
" " != ' ' in C
if(*(" ") == besedilo[i]) ti že spelje (samo prosim, ne reši tako!)
prav tako if(0x20 == besedilo[i]) (0x20 je ascii za ' ')
Vprašaj se raje kako je string hranjen v spominu.
"" je bližnjica do char[] --- tip kazalca (char*)
'' pa do ascii kode --- char
Problem je, ker si med seboj primerjal napačana tipa (pointer in integer)
if(*(" ") == besedilo[i]) ti že spelje (samo prosim, ne reši tako!)
prav tako if(0x20 == besedilo[i]) (0x20 je ascii za ' ')
Vprašaj se raje kako je string hranjen v spominu.
"" je bližnjica do char[] --- tip kazalca (char*)
'' pa do ascii kode --- char
Problem je, ker si med seboj primerjal napačana tipa (pointer in integer)
!not my imagination.
drola ::
Poskusi zamenjati dvojne narekovanje v if-stavku z enojnimi.
Razlaga:
Če v C++-u napišeš " ", si naredil niz (string). Stringi v C/C++ so sestavljeni iz vsebine in bajta z vrednostjo nič. Niz " " je torej dolg dva bajta, prvi ima vrednost 32 (presledek) in drugi 0 (oznaka za konec niza). Na drugi strani imaš besedilo[i], ki pa je le en znak (podatkovni tip char). V if stavku torej primerjaš različne stvari, zato nikoli ne detektiraš presledka.
Če pa zapišeš ' ', dobiš točno znak presledek, brez dodatne oznake za konec niza.
Razlaga:
Če v C++-u napišeš " ", si naredil niz (string). Stringi v C/C++ so sestavljeni iz vsebine in bajta z vrednostjo nič. Niz " " je torej dolg dva bajta, prvi ima vrednost 32 (presledek) in drugi 0 (oznaka za konec niza). Na drugi strani imaš besedilo[i], ki pa je le en znak (podatkovni tip char). V if stavku torej primerjaš različne stvari, zato nikoli ne detektiraš presledka.
Če pa zapišeš ' ', dobiš točno znak presledek, brez dodatne oznake za konec niza.
https://drola.si
pimplek ::
int count = 0; char bes[1000]; cin.getline(bes,1000); for(int i=0; i<cin.gcount(); i++) if(bes[i] == ' ') count++; cout << count;
Ciklamen ::
Isto kot zgoraj, preverjaš ali je string[i] == 'k' ali 'r' in temu ustrezno counter povečuješ :)
- End of the Post ->
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++] vprašanja (strani: 1 2 3 4 5 6 7 8 9 )Oddelek: Programiranje | 27410 (11956) | aljazko1995 |
» | velike male besede c++Oddelek: Programiranje | 2584 (2200) | PoPon2 |
» | [C++]Brisanje struktureOddelek: Programiranje | 1428 (1359) | jernejf |
» | [c++] uporaba char*Oddelek: Programiranje | 1005 (882) | zavger |
» | C problemčekOddelek: Programiranje | 1073 (876) | OwcA |