[ Fidelito_Castro @ 03.06.2008. 05:49 ] @
Da li bi neko mogao da mi pomogne oko ovog zadatka, nikako ne uspevam da ga resim.
Unapred zahvalan!

Code:

//Napisati program u C++ jeziku koji pita korisnika da ukuca niz reci odvojenih razmaknicom (space),
//a zatim program treba da odstampa na ekranu taj niz reci
//tako da prva rec bude odstampana u prvom redu, druga rec u drugom redu, itd.

#include <iostream>
#include <string>

using namespace std;

int main()
{
  
    string tekst;
    string rec;

    cout<<"Unesite tekst odvojen space-om!"<<endl<<endl;

    getline(cin,tekst);

    int pozicija = tekst.find(" ",0);


    if(pozicija == -1)
    {
        cout<<"Unesite karaktera razdvojene space-om!"<<endl;
        system("PAUSE");
        exit(1);
    }

    while(pozicija != -1)
    {
        rec = tekst.substr(0,pozicija);
        cout<<rec<<endl;
        tekst.erase(0,pozicija);
        pozicija = tekst.find(" ",0);
    }

 return 0;
}

[ karas @ 03.06.2008. 08:17 ] @
Sto radis
Code:

tekst.erase(0,pozicija);
?
Umesto
Code:

pozicija = tekst.find(" ", pozicija);

bi trebalo nesto tipa
Code:

pozicija = tekst.find(" ", pozicija + 1);

jer se pomeras dalje svaki put kad naletis na razmak.
Nemoj da poredis
Code:

if (pozicija == -1)

vec
Code:

if (pozicija == string::npos)

a za tip varijable pozicija koristi string::size_type.
[ Eurora3D Team @ 03.06.2008. 23:33 ] @
Mozes i nesto ovako ... prostije je.
Code:

#include <iostream>
using namespace std;

int main()
{
    char* text=new char[256]; int i=0;
    cout << "Unesite tekst odvojen space-om!"<<endl; cin.getline(text,256);

    while(text[i]!=0){
        cout << text[i];
        if(text[i]==(char)' ')
           cout << endl;
        i++;
    }

    cout << endl;
    system("PAUSE");
    return 0;
}

ili samo sa nizom
Code:

#include <iostream>
using namespace std;

int main()
{
    char* text=new char[256];
    cout << "Unesite tekst odvojen space-om!"<<endl; cin.getline(text,256);

    while((char)*text!=0){
        cout << (char)*text;
        if((char)*text==(char)' ')
           cout << endl;
        text ++;
    }

    cout << endl;
    system("PAUSE");
    return 0;
}
[ Eurora3D Team @ 04.06.2008. 09:41 ] @
Bolje ovako :) ... ovaj gore kod prelazi u novi red za svako space a teoretski korisnik moze da upise 10 space izmedju reci i onda to nije to sto se trazilo.
Malo razradjenije ...
Code:

#include <iostream>
using namespace std;

int main()
{
    char* text=new char[256]; // npr. 256 bajtni buffer
    cout << "Unesite tekst odvojen space-om!"<<endl; cin.getline(text,256); // IO

    while((char)*text!=0) // dok vrednost bajta koju pokazuje pointer nije 0 , sto znaci da smo stigli do kraja teksta
    { 
        if((char)*text==(char)' ' && (char)*(text-1)!=(char)' ') // ako je space i nije i prethodni space prelazimo u novi red
            cout << endl;
        else
            if((char)*text!=(char)' ') // ako trenutno slovo nije space
                cout << (char)*text; // ispisujemo trenutno slovo
        text ++; // i inkrementiramo pokazivac da bi pokazivao na sledeci bajt
    }

    cout << endl;
  //  system("PAUSE");
    return 0;
}


[Ovu poruku je menjao Eurora3D Team dana 04.06.2008. u 10:53 GMT+1]
[ Fidelito_Castro @ 06.06.2008. 16:12 ] @
Hvala vam,puno ste mi pomogli!
Sve najbolje...