» »

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č.

  • 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.

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')
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

lukalukov ::

Kako bi popravil kodo?

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)
!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.
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;

lukalukov ::

Hvala vsem :)

lukalukov ::

Kako bi pa preveril v stringu:krompir kolikokrat se ponovi crka k in r?

Ciklamen ::

Isto kot zgoraj, preverjaš ali je string[i] == 'k' ali 'r' in temu ustrezno counter povečuješ :)
- End of the Post ->


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] vprašanja (strani: 1 2 3 4 5 6 7 8 9 )

Oddelek: Programiranje
44726449 (10995) aljazko1995
»

velike male besede c++

Oddelek: Programiranje
152452 (2068) PoPon2
»

[C++]Brisanje strukture

Oddelek: Programiranje
71353 (1284) jernejf
»

[c++] uporaba char*

Oddelek: Programiranje
11941 (818) zavger
»

C problemček

Oddelek: Programiranje
13988 (791) OwcA

Več podobnih tem