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

Pravljenje novog stringa od postojeceg

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pravljenje novog stringa od postojeceg

[ Pregleda: 2236 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zokirobi

Član broj: 331939
Poruke: 5
*.dynamic.isp.telekom.rs.



+2 Profil

icon Pravljenje novog stringa od postojeceg12.01.2016. u 22:41 - pre 53 meseci

Pozdrav, treba mi mala pomoc oko ovog malo cudnog zadatka.
Na indexe char texta treba da prekopiram string arg ali kad se
zavrsi string arg treba da krene iz pocetka do duzine stringa text.
/*
abcdeo rstaaads
123451234512345
*/
Ovako dobijam.
A treba mi da na mestu gde je razmak ostane razmak a dvojka da krene od
sledeceg indeksa.

/*
abcdeo rstaaads
123451 2345123
*/
Ovako mi treba.
Code:

char text[30] = "abcdeo rstaaads";
char arg[30] = "12345";

int j = 0;

for (int i = 0, c = strlen(text); i < c; i++)
{
    int n = strlen(arg);
    if (isblank(text[i]))
    {
        <------------------Ovaj deo mi fali, probao sam sa continue i svasta nesto ali ne ide.
    }
    
    if (i % n == 0)
    {
        j = 0;
        
        text[i] = arg[j];
        j++;
    }
    else
    {
        text[i] = arg[j];
        j++; 
    }
}

[Ovu poruku je menjao zokirobi dana 13.01.2016. u 12:08 GMT+1]

[Ovu poruku je menjao zokirobi dana 13.01.2016. u 12:12 GMT+1]

[Ovu poruku je menjao Mihajlo Cvetanović dana 13.01.2016. u 15:00 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1224



+92 Profil

icon Re: Pravljenje novog stringa od postojeceg13.01.2016. u 14:35 - pre 53 meseci
Testirao sam tvoj kod, tako što sam stavio continue tamo gde si i ti rekao da si probao. Dobio sam sadržaj promenljive text "123451 23412345". Isprva sam mislio da je to dobar rezultat. Ti si samo rekao da si probao sa continue, ali da "ne ide". Ubuduće molim te bolje izdetaljiši to "ne ide". Napiši šta si očekivao, i šta si dobio, da bi bilo lakše onima koji hoće da pomognu. Elem, ono gore nije dobar rezultat, nego ovo: "123451 23451234".

Problem je što resetuješ j kad je i % n == 0, ali to nije dobar uslov. Promenljiva j treba da se vrati na 0 onda kad prilikom inkrementa postane n. Promenljiva i tu nikako ne utiče. Probaj ovako:

Code:
    if (isblank(text[i]))
    {
        continue;
    }

    text[i] = arg[j];
    j = (j + 1) % n;


Takođe, int n = strlen(arg); treba da ide van petlje. Nema potrebe da se izvršava u svakoj iteraciji.
 
Odgovor na temu

zokirobi

Član broj: 331939
Poruke: 5
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Pravljenje novog stringa od postojeceg13.01.2016. u 16:32 - pre 53 meseci
Hvala na odgovoru i izvinjavam se sto nisam bio malo jasniji.
Ovo mi opet ne daje ono sto trazim.Ako ne stavim u tom prvom uslovu j=0, opet ne radi.
Ja necu da mi neko uradi zadatak, samo da mi objasni gde gresim :)
A ispravi me ako gresim.

Ako je i = 0 % 5(strlen) = 0 onda prvi uslov pokazuje na index broj 1 text[i ] = arg[j];
Kad je i % 5 != 0 onda na pokazuje na taj broj, 1,2,3,4 do 5
Kad dodje do 5 onda se J vrati na 0 i opet pokazuje na prvi clan i tako sve do duzine koje treba.

A zar j=(j+1)%n nije isto kao i j++ ?


[Ovu poruku je menjao X Files dana 13.01.2016. u 18:00 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1224



+92 Profil

icon Re: Pravljenje novog stringa od postojeceg13.01.2016. u 17:19 - pre 53 meseci
Opet nema dovoljno preciznih podataka. Zapravo, nije mi jasno šta želiš. Da li želiš da ti objasnim gde je greška u tvom kodu? Ili želiš da ti objasnim kako to da je moje rešenje ispravno? Ili želiš ispravno rešenje, a zaključio si da moje rešenje nije ispravno? Ili nešto četvrto?

j=(j+1)%n nije isto kao i j++. Ako je j=4 šta dobiješ u prvom, a šta u drugom slučaju kao novo j?
 
Odgovor na temu

zokirobi

Član broj: 331939
Poruke: 5
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Pravljenje novog stringa od postojeceg13.01.2016. u 22:17 - pre 53 meseci
U prvom slucaju je 0 a u drugom 5 . Zanima me jel tebi radilo kad si ubacio j = (j + 1) % n; i umesto cega si ga ubacio ?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1224



+92 Profil

icon Re: Pravljenje novog stringa od postojeceg13.01.2016. u 23:15 - pre 53 meseci
Zamenio sam ovo:

Code:
    if (i % n == 0)
    {
        j = 0;
        
        text[i] = arg[j];
        j++;
    }
    else
    {
        text[i] = arg[j];
        j++; 
    }


ovim:

Code:
    text[i] = arg[j];
    j = (j + 1) % n;


I radilo mi je. Promenljiva j ne treba da se menja kad naiđemo da razmak, i zbog continue neće se ni promeniti, ali promenljiva i hoće, jer se inkrementira u for petlji.
 
Odgovor na temu

zokirobi

Član broj: 331939
Poruke: 5
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Pravljenje novog stringa od postojeceg13.01.2016. u 23:36 - pre 53 meseci
Hvala na odgovorima.Shvatio sam u cemu je bio problem.Pokusacu da uradim na stari nacin ako ne uspem iskoristicu ovo tvoje.Mada je ovo tvoje resenje dosta prostije.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pravljenje novog stringa od postojeceg

[ Pregleda: 2236 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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