Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

problem sa stringovima (objasnjenje gradiva)
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
ivek imudaš
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 11. 2007. (18:41:02)
Postovi: (67)16
Spol: muško
Sarma = la pohva - posuda
12 = 14 - 2

PostPostano: 12:41 sub, 28. 6. 2008    Naslov: problem sa stringovima Citirajte i odgovorite

1.zašto ne mogu učitati nešto tipa char s pa nakon toga nešto tipa char c[broj] ?
kad to pokušam i pokrenem program učitam željeni znak pa nakon toga string program mi ne izvrši što bi trebao a ako inicijaliziram npr s='a' onda obavi što treba
u skripti za vježbe se u svim riješenim primjerima napravi ovo drugo ali ne vidim razliku,tj ne kužim zašto ovo prvo ne valja
sličan problem mi se javlja kad to napravim sa upisom int-a ili drugog stringa
pomozite molim vas
2.kod goto naredbe npr goto kraj; kraj se inicijalizira kao int ili neka druga varijabla............. da ili ne?
3.kako se upiše polje stringova, je li to npr.char *s[broj] ?
ako je kako se onda vrši alokacija memorije za to?
1.zašto ne mogu učitati nešto tipa char s pa nakon toga nešto tipa char c[broj] ?
kad to pokušam i pokrenem program učitam željeni znak pa nakon toga string program mi ne izvrši što bi trebao a ako inicijaliziram npr s='a' onda obavi što treba
u skripti za vježbe se u svim riješenim primjerima napravi ovo drugo ali ne vidim razliku,tj ne kužim zašto ovo prvo ne valja
sličan problem mi se javlja kad to napravim sa upisom int-a ili drugog stringa
pomozite molim vas
2.kod goto naredbe npr goto kraj; kraj se inicijalizira kao int ili neka druga varijabla............. da ili ne?
3.kako se upiše polje stringova, je li to npr.char *s[broj] ?
ako je kako se onda vrši alokacija memorije za to?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 12:57 sub, 28. 6. 2008    Naslov: Re: problem sa stringovima Citirajte i odgovorite

[quote="ivek imudaš"]1.zašto ne mogu učitati nešto tipa char s pa nakon toga nešto tipa char c[broj] ?kad to pokušam i pokrenem program učitam željeni znak pa nakon toga string program mi ne izvrši što bi trebao a ako inicijaliziram npr s='a' onda obavi što treba[/quote]

Probaj nakon učitavanja znaka stavit [tt]scanf("%*c");[/tt], to će zanemarit onaj \n kojeg lupiš nakon chara :)

[quote="ivek imudaš"]
3.kako se upiše polje stringova, je li to npr.char *s[broj] ?
ako je kako se onda vrši alokacija memorije za to?[/quote]

Za polje stringova može se pisat recimo char s[10][20], a to će biti polje od 20 stringova duljine 10. Tu nije loše napravit recimo

[code:1]typedef MojString char[10];
MojString s[20]; [/code:1]
(nisam ziher za sintaxu, al mislim da se kuži kaj hoću reć)

Napraviš neki svoj string, koji je duljine maximalno 10, i onda polje od 20 elemenata tih TvojihStringova. ;)
ivek imudaš (napisa):
1.zašto ne mogu učitati nešto tipa char s pa nakon toga nešto tipa char c[broj] ?kad to pokušam i pokrenem program učitam željeni znak pa nakon toga string program mi ne izvrši što bi trebao a ako inicijaliziram npr s='a' onda obavi što treba


Probaj nakon učitavanja znaka stavit scanf("%*c");, to će zanemarit onaj \n kojeg lupiš nakon chara Smile

ivek imudaš (napisa):

3.kako se upiše polje stringova, je li to npr.char *s[broj] ?
ako je kako se onda vrši alokacija memorije za to?


Za polje stringova može se pisat recimo char s[10][20], a to će biti polje od 20 stringova duljine 10. Tu nije loše napravit recimo

Kod:
typedef MojString char[10];
MojString s[20];

(nisam ziher za sintaxu, al mislim da se kuži kaj hoću reć)

Napraviš neki svoj string, koji je duljine maximalno 10, i onda polje od 20 elemenata tih TvojihStringova. Wink



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
ivek imudaš
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 11. 2007. (18:41:02)
Postovi: (67)16
Spol: muško
Sarma = la pohva - posuda
12 = 14 - 2

PostPostano: 13:14 sub, 28. 6. 2008    Naslov: Citirajte i odgovorite

ovo prvo radi savršeno

ovo drugo još gledam

u svakom slučaju puno hvala!!! :D
ovo prvo radi savršeno

ovo drugo još gledam

u svakom slučaju puno hvala!!! Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 16:30 sub, 28. 6. 2008    Naslov: Re: problem sa stringovima Citirajte i odgovorite

[quote="Luuka"][quote="ivek imudaš"]1.zašto ne mogu učitati nešto tipa char s pa nakon toga nešto tipa char c[broj] ?kad to pokušam i pokrenem program učitam željeni znak pa nakon toga string program mi ne izvrši što bi trebao a ako inicijaliziram npr s='a' onda obavi što treba[/quote]
Probaj nakon učitavanja znaka stavit [tt]scanf("%*c");[/tt], to će zanemarit onaj \n kojeg lupiš nakon chara :)[/quote]

:ccc:

Treba samo drugi [tt]char[/tt] ucitati sa [tt]scanf(" %c", &c);[/tt] (dakle, razmak ispred [tt]%c[/tt]). :)

Ref. tocka 2: [tt]goto[/tt] je zlo i pozeljno je ne koristiti ga. :tso:
Luuka (napisa):
ivek imudaš (napisa):
1.zašto ne mogu učitati nešto tipa char s pa nakon toga nešto tipa char c[broj] ?kad to pokušam i pokrenem program učitam željeni znak pa nakon toga string program mi ne izvrši što bi trebao a ako inicijaliziram npr s='a' onda obavi što treba

Probaj nakon učitavanja znaka stavit scanf("%*c");, to će zanemarit onaj \n kojeg lupiš nakon chara Smile


Ccc.... Sram te bilo...

Treba samo drugi char ucitati sa scanf(" %c", &c); (dakle, razmak ispred %c). Smile

Ref. tocka 2: goto je zlo i pozeljno je ne koristiti ga. Trudim Se Objasniti...



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
ivek imudaš
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 11. 2007. (18:41:02)
Postovi: (67)16
Spol: muško
Sarma = la pohva - posuda
12 = 14 - 2

PostPostano: 16:41 sub, 28. 6. 2008    Naslov: Re: problem sa stringovima Citirajte i odgovorite

[quote="vsego"]
:ccc:

Treba samo drugi [tt]char[/tt] ucitati sa [tt]scanf(" %c", &c);[/tt] (dakle, razmak ispred [tt]%c[/tt]). :)

Ref. tocka 2: [tt]goto[/tt] je zlo i pozeljno je ne koristiti ga. :tso:[/quote]

na kakve li ja trivijalnosti trošim vrijeme :(

ovo goto mi je trebalo za funkciju
(treba svako treće slovo izbaciti iz stringa)

[code:1]
void svakotrece(char s[]){
int kraj, i, j=0, l=0;
for(i=0;s[i]!='\0';i++){
if(isalpha(s[i])){
++j;
if(j%3==0) goto kraj;
}
s[l++]=s[i];
kraj:{
//*ovo je trece slovo pa ga preskacemo*//
}}
s[l]='\0';
printf("%s\n", s);
}
[/code:1]
mislim da radi ok, ali nisam bio siguran sa inicijalizacijom itd
vsego (napisa):

Ccc.... Sram te bilo...

Treba samo drugi char ucitati sa scanf(" %c", &c); (dakle, razmak ispred %c). Smile

Ref. tocka 2: goto je zlo i pozeljno je ne koristiti ga. Trudim Se Objasniti...


na kakve li ja trivijalnosti trošim vrijeme Sad

ovo goto mi je trebalo za funkciju
(treba svako treće slovo izbaciti iz stringa)

Kod:

void svakotrece(char s[]){
      int kraj, i, j=0, l=0;
      for(i=0;s[i]!='\0';i++){
      if(isalpha(s[i])){
                       ++j;
                       if(j%3==0) goto kraj;
                       }
      s[l++]=s[i];
      kraj:{
            //*ovo je trece slovo pa ga preskacemo*//
            }}
      s[l]='\0';
      printf("%s\n", s);
      }     

mislim da radi ok, ali nisam bio siguran sa inicijalizacijom itd




Zadnja promjena: ivek imudaš; 16:54 sub, 28. 6. 2008; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 16:52 sub, 28. 6. 2008    Naslov: Citirajte i odgovorite

Nije li lakse tvoj kod:
[code:1]void svakotrece(char s[]){
int kraj, i, j=0, l=0;
for (i = 0; s[i] != '\0'; i++) {
if (isalpha(s[i])) {
++j;
if(j%3 == 0) goto kraj;
}
s[l++] = s[i];
kraj:{
//*ovo je trece slovo pa ga preskacemo*//
}
}
s[l]='\0';
printf("%s\n", s);
}[/code:1]
zamijeniti s
[code:1]void svakotrece(char s[]){
int kraj, i, j=0, l=0;
for (i = 0; s[i] != '\0'; i++) {
if (isalpha(s[i])) {
++j;
if(j%3 != 0) s[l++] = s[i];
} else s[l++] = s[i];
}
s[l]='\0';
printf("%s\n", s);
}[/code:1]
ili s
[code:1]void svakotrece(char s[]){
int kraj, i, j=0, l=0;
for (i = 0; s[i] != '\0'; i++) {
if (isalpha(s[i])) {
++j;
if(j%3 == 0) continue;
}
s[l++] = s[i];
}
s[l]='\0';
printf("%s\n", s);
}[/code:1]
:?:
Nije li lakse tvoj kod:
Kod:
void svakotrece(char s[]){
  int kraj, i, j=0, l=0;
  for (i = 0; s[i] != '\0'; i++) {
    if (isalpha(s[i])) {
      ++j;
      if(j%3 == 0) goto kraj;
    }
    s[l++] = s[i];
    kraj:{
      //*ovo je trece slovo pa ga preskacemo*//
    }
  }
  s[l]='\0';
  printf("%s\n", s);
}

zamijeniti s
Kod:
void svakotrece(char s[]){
  int kraj, i, j=0, l=0;
  for (i = 0; s[i] != '\0'; i++) {
    if (isalpha(s[i])) {
      ++j;
      if(j%3 != 0) s[l++] = s[i];
    } else s[l++] = s[i];
  }
  s[l]='\0';
  printf("%s\n", s);
}

ili s
Kod:
void svakotrece(char s[]){
  int kraj, i, j=0, l=0;
  for (i = 0; s[i] != '\0'; i++) {
    if (isalpha(s[i])) {
      ++j;
      if(j%3 == 0) continue;
    }
    s[l++] = s[i];
  }
  s[l]='\0';
  printf("%s\n", s);
}

Question



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 16:57 sub, 28. 6. 2008    Naslov: Citirajte i odgovorite

Mogo si to puno jednostavnije...

Recimo moja ideja:

br=0; -> taj nam broji koje je slovo po redu

Ići po stringu, dok se ne dođe do \0
ako ( slovo & br%3==0) {izbaci slovo; br++;}
inače ako (slovo & br%3) br++;

printf( string);

EDIT vsegovo je bolje... ja inače izbjegavam continue, goto i sl... osim break, on mi je koristan :lol:

@vsego Što točno radi taj razmak ispred " %c" ? Za zvjezdicu znam da pročita nešto, pa zanemari (ne spremi nigdje).
Mogo si to puno jednostavnije...

Recimo moja ideja:

br=0; -> taj nam broji koje je slovo po redu

Ići po stringu, dok se ne dođe do \0
ako ( slovo & br%3==0) {izbaci slovo; br++;}
inače ako (slovo & br%3) br++;

printf( string);

EDIT vsegovo je bolje... ja inače izbjegavam continue, goto i sl... osim break, on mi je koristan Laughing

@vsego Što točno radi taj razmak ispred " %c" ? Za zvjezdicu znam da pročita nešto, pa zanemari (ne spremi nigdje).



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
ivek imudaš
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 11. 2007. (18:41:02)
Postovi: (67)16
Spol: muško
Sarma = la pohva - posuda
12 = 14 - 2

PostPostano: 17:04 sub, 28. 6. 2008    Naslov: Citirajte i odgovorite

pa pretpostavljam da je ali dobro dosta o mom autu
zanima me samo još rješenje trećeg pitanja
naime ne kužim još potpuno polja stringova
pošto me nitko ne ispravlja pretpostavit ću da se može na način *s[broj]
ali kako?(ako može)
usput je li to bitno baš sad za ovaj kolokvij ili da se zadržim na zadacima bez ovog, uostalom jedan je jedini takav u skripti
pa pretpostavljam da je ali dobro dosta o mom autu
zanima me samo još rješenje trećeg pitanja
naime ne kužim još potpuno polja stringova
pošto me nitko ne ispravlja pretpostavit ću da se može na način *s[broj]
ali kako?(ako može)
usput je li to bitno baš sad za ovaj kolokvij ili da se zadržim na zadacima bez ovog, uostalom jedan je jedini takav u skripti


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 17:14 sub, 28. 6. 2008    Naslov: Citirajte i odgovorite

Prvo da sam sebe ispravim, gore sam reko krivo... dakle, polje od 10 stringova duljine 20 bi bilo char s[10][20] (prvo koliko ih ima, onda kolko su maximalno dugi)

A uvijek si to polje stringova možeš zamislit kao neke kvazi matrice (što to ustvari i jest)
Dakle, po recima imaš stringove, a za svaki redak ti stupci idu od 0 do 19 i to su znakovi koji čine tvoj string. Jasno, ako je string manji od tog, jedan od tih znakova prije indexa 19 će bit \0 pa ustvari imaš neki "podskup" matrice... recimo:

BLABLA
BLABLABLABLA
BLABLABLA

bi deklarirao kao char s[3][13] (za drugi index uzmeš maximum od duljina stringova koje imaš u polju)

Za deklaracije oblika char *s[nešto] bolje nek se vsego izjasni, jer mislim da tu može doć do svega...
Prvo da sam sebe ispravim, gore sam reko krivo... dakle, polje od 10 stringova duljine 20 bi bilo char s[10][20] (prvo koliko ih ima, onda kolko su maximalno dugi)

A uvijek si to polje stringova možeš zamislit kao neke kvazi matrice (što to ustvari i jest)
Dakle, po recima imaš stringove, a za svaki redak ti stupci idu od 0 do 19 i to su znakovi koji čine tvoj string. Jasno, ako je string manji od tog, jedan od tih znakova prije indexa 19 će bit \0 pa ustvari imaš neki "podskup" matrice... recimo:

BLABLA
BLABLABLABLA
BLABLABLA

bi deklarirao kao char s[3][13] (za drugi index uzmeš maximum od duljina stringova koje imaš u polju)

Za deklaracije oblika char *s[nešto] bolje nek se vsego izjasni, jer mislim da tu može doć do svega...



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:33 sub, 28. 6. 2008    Naslov: Citirajte i odgovorite

[quote="Luuka"]@vsego Što točno radi taj razmak ispred " %c" ? Za zvjezdicu znam da pročita nešto, pa zanemari (ne spremi nigdje).[/quote]

Taj razmak kaze "odignoriraj sve whitespaceove (razmake, tabove, newlineove i carriage returnove). :)

Sto se tice polja stringova, to je raspisano u vjezbama. :) Ja ne volim mijesati staticke i dinamicke nizove (poput [tt]char *s[nesto][/tt]), jer je tu obicno jako konfuzno sto se dogadja. :| Ako zelite dinamicki, onda
[tt]char **s;[/tt]
i onda se napravi dinamicka alokacija svega; ako zelite staticki, onda ovako kako je Luuka napisao. 8)

Ako cemo mijesati sintaksu, onda je
[tt]char *s[nesto];[/tt]
ekvivalentno
[tt]char *(s[nesto]);[/tt]
tj. [tt]s[/tt] je niz od 10 pointera na [tt]char[/tt], sto znaci da treba dinamicki alocirati pojedine stringove, ali ne i sam niz. 8)
Luuka (napisa):
@vsego Što točno radi taj razmak ispred " %c" ? Za zvjezdicu znam da pročita nešto, pa zanemari (ne spremi nigdje).


Taj razmak kaze "odignoriraj sve whitespaceove (razmake, tabove, newlineove i carriage returnove). Smile

Sto se tice polja stringova, to je raspisano u vjezbama. Smile Ja ne volim mijesati staticke i dinamicke nizove (poput char *s[nesto]), jer je tu obicno jako konfuzno sto se dogadja. Neutral Ako zelite dinamicki, onda
char **s;
i onda se napravi dinamicka alokacija svega; ako zelite staticki, onda ovako kako je Luuka napisao. Cool

Ako cemo mijesati sintaksu, onda je
char *s[nesto];
ekvivalentno
char *(s[nesto]);
tj. s je niz od 10 pointera na char, sto znaci da treba dinamicki alocirati pojedine stringove, ali ne i sam niz. Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan