| Prethodna tema :: Sljedeća tema | 
	
	
		| Autor/ica | Poruka | 
	
		| malena Forumaš(ica)
 
  
 
 Pridružen/a: 27. 03. 2009. (16:43:42)
 Postovi: (62)16
 Spol:
  Lokacija: ...
 
 |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 |  | 
	
		| [Vrh] |  | 
	
		| malena Forumaš(ica)
 
  
 
 Pridružen/a: 27. 03. 2009. (16:43:42)
 Postovi: (62)16
 Spol:
  Lokacija: ...
 
 | 
			
				|  Postano: 17:35 sri, 27. 5. 2009    Naslov: |         |  
				| 
 |  
				| hvala vsego jos me samo zanima radi li ovaj kod ono sto treba, mislim da brise kriva slova pa ako mozes baciti oko... hvala vsego jos me samo zanima radi li ovaj kod ono sto treba, mislim da brise kriva slova pa ako mozes baciti oko...
 [size=9][color=#999999]Added after 55 seconds:[/color][/size]
 
 [code:1]#include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
 
 /*5.4.*/
 
 void b3_slovo(char *s){
 int i, j=0, c, br=0;
 for(i=0; s[i]!='\0'; i++){
 c=isalpha(s[i]);
 if(c) br++;
 }
 for(i=0; s[i]!='\0'; i++){
 c=isalpha(s[i]);
 if(c==0 || (br--)%3){
 s[j++]=s[i];
 }
 }
 s[j]='\0';
 }
 
 int main(){
 char s[19];
 
 printf("Upisi string: ");
 scanf("%[^\n]", s);
 b3_slovo(s);
 printf("%s ", s);
 system("PAUSE");
 return 0;
 }
 [/code:1]
 
 Added after 55 seconds:
 
 
  	  | Kod: |  	  | #include <stdio.h> #include <stdlib.h>
 #include <ctype.h>
 
 /*5.4.*/
 
 void b3_slovo(char *s){
 int i, j=0, c, br=0;
 for(i=0; s[i]!='\0'; i++){
 c=isalpha(s[i]);
 if(c) br++;
 }
 for(i=0; s[i]!='\0'; i++){
 c=isalpha(s[i]);
 if(c==0 || (br--)%3){
 s[j++]=s[i];
 }
 }
 s[j]='\0';
 }
 
 int main(){
 char s[19];
 
 printf("Upisi string: ");
 scanf("%[^\n]", s);
 b3_slovo(s);
 printf("%s ", s);
 system("PAUSE");
 return 0;
 }
 
 | 
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| Gino Forumaš(ica)
 
  
 
 Pridružen/a: 11. 09. 2008. (10:54:06)
 Postovi: (370)16
 Lokacija: Pula
 
 |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 | 
			
				|  Postano: 22:33 sri, 27. 5. 2009    Naslov: |         |  
				| 
 |  
				| @Gino: Cini mi se ispravno, ali kvadratna slozenost je stvarno nepotrebna. :) Takodjer, ne razumijem cemu sluze [tt]i[/tt]  i [tt]k[/tt]... meni djeluje da imaju stalno isto vrijednost, tj. da je za to dosta jedna varijabla. :grebgreb:
@Gino: Cini mi se ispravno, ali kvadratna slozenost je stvarno nepotrebna.
 @malena: Cemu sluzi da prvo prebrojis slova? :-k Sto fali ovome:
 [code:1]void f(const char s[]) {
 int j = 0, koje = 0;
 for(i = 0; s[i] != '\0'; ++i) {
 int slovo = isalpha(s[i]);
 if (slovo) ++koje;
 if (!slovo || koje % 3 == 1) /* moze i 0, ovisi kako interpretiras "svako trece" */
 s[j++] = s[i];
 }
 s[j] = '\0';
 }[/code:1]:?:
 
 Ovo tvoje ce brisati "svako trece", pocevsi sdesna. Tj.
 ako imas 7 slova, obrisat ce drugo i peto, no
 ako imas 6 slova, obrisat ce prvo i cetvrto, itd. :?
 
 Posto ne pise "sdesna", ocito se misli na brisanje "slijeva" (redom kojim citamo, ne?). ;)
  Takodjer, ne razumijem cemu sluze i  i k... meni djeluje da imaju stalno isto vrijednost, tj. da je za to dosta jedna varijabla.   
 @malena: Cemu sluzi da prvo prebrojis slova?
  Sto fali ovome: 
  	  | Kod: |  	  | void f(const char s[]) { int j = 0, koje = 0;
 for(i = 0; s[i] != '\0'; ++i) {
 int slovo = isalpha(s[i]);
 if (slovo) ++koje;
 if (!slovo || koje % 3 == 1) /* moze i 0, ovisi kako interpretiras "svako trece" */
 s[j++] = s[i];
 }
 s[j] = '\0';
 }
 | 
   
 Ovo tvoje ce brisati "svako trece", pocevsi sdesna. Tj.
 ako imas 7 slova, obrisat ce drugo i peto, no
 ako imas 6 slova, obrisat ce prvo i cetvrto, itd.
   
 Posto ne pise "sdesna", ocito se misli na brisanje "slijeva" (redom kojim citamo, ne?).
   _________________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.
  |  | 
	
		| [Vrh] |  | 
	
		| lucika Forumaš(ica)
 
  
  
 Pridružen/a: 22. 11. 2007. (17:52:27)
 Postovi: (12F)16
 Spol:
  
 
 | 
			
				|  Postano: 22:06 pet, 5. 6. 2009    Naslov: |         |  
				| 
 |  
				| zašto program ne radi ako umjesto  if( isalpha(a[i])) napišem  if( isalpha(a[i]) ==1 ) :?: 
zašto program ne radi ako umjesto  if( isalpha(a[i])) napišem  if( isalpha(a[i]) ==1 )
 [code:1]
 
 /*
 Zadatak 5.4. Napiˇsite funkciju koja kao argument prima jedan
 string, te iz njega briˇse svako tre´ce slovo. Napiˇsite i program koji po-
 kazuje kako se funkcija upotrebljava.
 */
 
 #include <stdio.h>
 #include <ctype.h>
 
 
 void brisi( char *s )
 {
 int i, kraj = 0, brojSlovaDosad = 0;
 
 for( i = 0; s[ i ] != '\0'; ++i )
 {
 int brisi = 0;
 
 //if( 'A' <= s[ i ] && s[ i ] <= 'Z' || 'a' <= s[ i ] && s[ i ] <= 'z' )
 if( isalpha( s[ i ] ) )
 
 {
 ++brojSlovaDosad;
 
 if( brojSlovaDosad % 3 == 0 )
 brisi = 1;
 }
 
 if( !brisi )
 {
 s[ kraj ] = s[ i ];
 ++kraj;
 }
 }
 
 s[ kraj ] = '\0';
 }
 
 int main( void )
 {
 char ime[ 100 ];
 
 scanf("%s", ime );
 brisi( ime );
 
 printf( "%s\n", ime );
 scanf("%%");
 return 0;
 }
 
 [/code:1]
   
 
  	  | Kod: |  	  | 
 /*
 Zadatak 5.4. Napiˇsite funkciju koja kao argument prima jedan
 string, te iz njega briˇse svako tre´ce slovo. Napiˇsite i program koji po-
 kazuje kako se funkcija upotrebljava.
 */
 
 #include <stdio.h>
 #include <ctype.h>
 
 
 void brisi( char *s )
 {
 int i, kraj = 0, brojSlovaDosad = 0;
 
 for( i = 0; s[ i ] != '\0'; ++i )
 {
 int brisi = 0;
 
 //if( 'A' <= s[ i ] && s[ i ] <= 'Z' || 'a' <= s[ i ] && s[ i ] <= 'z' )
 if( isalpha( s[ i ] ) )
 
 {
 ++brojSlovaDosad;
 
 if( brojSlovaDosad % 3 == 0 )
 brisi = 1;
 }
 
 if( !brisi )
 {
 s[ kraj ] = s[ i ];
 ++kraj;
 }
 }
 
 s[ kraj ] = '\0';
 }
 
 int main( void )
 {
 char ime[ 100 ];
 
 scanf("%s", ime );
 brisi( ime );
 
 printf( "%s\n", ime );
 scanf("%%");
 return 0;
 }
 
 
 | 
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 | 
			
				|  Postano: 0:25 sub, 6. 6. 2009    Naslov: |         |  
				| 
 |  
				| [quote="[tt]man isalpha[/tt]"]RETURN VALUE
The values returned are nonzero if the character c falls into the tested class, and a zero value if not.[/quote]
 
 Probaj ovo:
 
 [code:1]#include <stdio.h>
 #include <ctype.h>
 
 int main(void) {
 int i;
 
 for (i = 0; i < 256; ++i) {
 printf("i = %d; isalpha((char)i) = %d", i, isalpha((char)i));
 printf(i % 4 == 3 ? "\n" : "\t");
 }
 
 return 0;
 }[/code:1]
 
 Ovo ti ispisuje [tt]isalpha()[/tt] za sve ASCII vrijednosti. :) Naravno, za ne-slova ispise nulu, ali za slova ispise 1024, a ne 1. 8) Jednostavno, tebe samo zanima je l' nula ili nije; ne zanima te koliko je ako nije nula. ;)
 
 Zasto bas tako... ostavimo pricu za neku drugu priliku... ili barem drugog asistenta. ;)
 
 [b]Poanta:[/b] ako ti se bas komplicira, onda umjesto [tt]isalpha(a[i])[/tt] stavi [tt]isalpha(a[i]) != 0[/tt], sto je stvarni ekvivalent tog logickog izraza. 8)
 
 P.S. Znam da u pozivu [tt]isalpha()[/tt] ne treba castanje... stavih to iz pedagoskih razloga. ;)
  	  | man isalpha (napisa): |  	  | RETURN VALUE The values returned are nonzero if the character c falls into the tested class, and a zero value if not.
 | 
 
 Probaj ovo:
 
 
  	  | Kod: |  	  | #include <stdio.h> #include <ctype.h>
 
 int main(void) {
 int i;
 
 for (i = 0; i < 256; ++i) {
 printf("i = %d; isalpha((char)i) = %d", i, isalpha((char)i));
 printf(i % 4 == 3 ? "\n" : "\t");
 }
 
 return 0;
 }
 | 
 
 Ovo ti ispisuje isalpha() za sve ASCII vrijednosti.
  Naravno, za ne-slova ispise nulu, ali za slova ispise 1024, a ne 1.  Jednostavno, tebe samo zanima je l' nula ili nije; ne zanima te koliko je ako nije nula.   
 Zasto bas tako... ostavimo pricu za neku drugu priliku... ili barem drugog asistenta.
   
 Poanta: ako ti se bas komplicira, onda umjesto isalpha(a[i]) stavi isalpha(a[i]) != 0, sto je stvarni ekvivalent tog logickog izraza.
   
 P.S. Znam da u pozivu isalpha() ne treba castanje... stavih to iz pedagoskih razloga.
   _________________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.
  |  | 
	
		| [Vrh] |  | 
	
		| lucika Forumaš(ica)
 
  
  
 Pridružen/a: 22. 11. 2007. (17:52:27)
 Postovi: (12F)16
 Spol:
  
 
 |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 |  | 
	
		| [Vrh] |  | 
	
		| komaPMF Forumaš(ica)
 
  
  
 Pridružen/a: 22. 11. 2007. (10:23:41)
 Postovi: (E6)16
 Spol:
  Lokacija: Over the roof
 
 | 
			
				|  Postano: 14:44 pon, 8. 6. 2009    Naslov: |         |  
				| 
 |  
				| [code:1]#include<stdio.h>
#include<stdlib.h>
 
 
 
 void dupliciraj (char s[], char c)
 {
 int i, brojac=0, t;
 
 for (i=0; s[i]!='\0'; i++)
 {
 t=i+1;
 if(s[i]==c) brojac++;
 }
 printf ("String je dugacak: %d", t);
 printf ("\n Znak se ponavlja %d puta", brojac);
 
 
 }
 
 
 int main(){
 
 char s[20];
 char blj;
 
 // printf ("Unesite string: ");
 scanf("%[^\n]", s);
 // printf("Unesite znak: ");
 scanf ("%c", &blj);
 //printf ("Znak: %c\n", blj);
 
 dupliciraj(s, blj);
 printf("\n Trazeni ispis: %s \n", s);
 
 
 
 
 system ("PAUSE");
 return 0;
 }
 [/code:1]
 
 
 ne znam zašto mi ne da da unesem znak. upišem string i on ispiše sve ovo iz funkcije što sam mu zadala, ali preskoči mi scanf za znak. inače, ovo je dio zadatka 6.6. iz skripte (samo početak, i već ne radi kako treba). pa, ako netko zna u čemu je problem...
 isto tako, ako zamijenim scanf-ove, tj. da prvo unesem znak pa onda string, preskoči mi upis za string i stavi duljinu stringa proizvoljno na  7,uspijem samo znak upisati. više ne znam stvarno u čemu je fora, probala sam svašta.
  	  | Kod: |  	  | #include<stdio.h> #include<stdlib.h>
 
 
 
 void dupliciraj (char s[], char c)
 {
 int i, brojac=0, t;
 
 for (i=0; s[i]!='\0'; i++)
 {
 t=i+1;
 if(s[i]==c) brojac++;
 }
 printf ("String je dugacak: %d", t);
 printf ("\n Znak se ponavlja %d puta", brojac);
 
 
 }
 
 
 int main(){
 
 char s[20];
 char blj;
 
 // printf ("Unesite string: ");
 scanf("%[^\n]", s);
 // printf("Unesite znak: ");
 scanf ("%c", &blj);
 //printf ("Znak: %c\n", blj);
 
 dupliciraj(s, blj);
 printf("\n Trazeni ispis: %s \n", s);
 
 
 
 
 system ("PAUSE");
 return 0;
 }
 
 | 
 
 
 ne znam zašto mi ne da da unesem znak. upišem string i on ispiše sve ovo iz funkcije što sam mu zadala, ali preskoči mi scanf za znak. inače, ovo je dio zadatka 6.6. iz skripte (samo početak, i već ne radi kako treba). pa, ako netko zna u čemu je problem...
 isto tako, ako zamijenim scanf-ove, tj. da prvo unesem znak pa onda string, preskoči mi upis za string i stavi duljinu stringa proizvoljno na  7,uspijem samo znak upisati. više ne znam stvarno u čemu je fora, probala sam svašta.
 
 
 _________________
 Granice mogućega možemo odrediti samo onda ako ih prijeđemo odlaskom u nemoguće
 |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 |  | 
	
		| [Vrh] |  | 
	
		| __fox Forumaš(ica)
 
  
  
 Pridružen/a: 28. 11. 2008. (20:00:38)
 Postovi: (35)16
 Spol:
  
 
 |  | 
	
		| [Vrh] |  | 
	
		| Luuka Forumaš(ica)
 
  
  
 Pridružen/a: 13. 02. 2007. (20:34:54)
 Postovi: (925)16
 Spol:
  Lokacija: Hakuna Matata
 
 | 
			
				|  Postano: 15:48 pon, 8. 6. 2009    Naslov: |         |  
				| 
 |  
				| Rekao bih da je problem u novom redu ;) Naime, nakon što učitaš string, učitava se do novog reda (tj dok ne stisneš enter) i to se spremi u s, a onaj \n ostaje visjeti "u zraku". Na žalost njega pokupiš sa onim scanf("%c"), tj u tvoj znak blj se spremi \n. 
Rekao bih da je problem u novom redu
 Malo sam se igro, i siguran sam da ima bolji način da se ovo riješi, ali ovo je pomoglo:
 [code:1]getchar();[/code:1]
 nakon učitavanja stringa, a prije chara... taj getchar ubije onaj \n "iz zraka"
 
 Ovo je samo trenutna pomoć, siguran sam da vsego ima nešto pametnije u rukavu ;)
 
 edit: vsego brži i pametniji, skroz sam zaboravio te fore s charovima ;)
  Naime, nakon što učitaš string, učitava se do novog reda (tj dok ne stisneš enter) i to se spremi u s, a onaj \n ostaje visjeti "u zraku". Na žalost njega pokupiš sa onim scanf("%c"), tj u tvoj znak blj se spremi \n. 
 Malo sam se igro, i siguran sam da ima bolji način da se ovo riješi, ali ovo je pomoglo:
 
 nakon učitavanja stringa, a prije chara... taj getchar ubije onaj \n "iz zraka"
 
 Ovo je samo trenutna pomoć, siguran sam da vsego ima nešto pametnije u rukavu
   
 edit: vsego brži i pametniji, skroz sam zaboravio te fore s charovima
   _________________ "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   |  | 
	
		| [Vrh] |  | 
	
		| komaPMF Forumaš(ica)
 
  
  
 Pridružen/a: 22. 11. 2007. (10:23:41)
 Postovi: (E6)16
 Spol:
  Lokacija: Over the roof
 
 | 
			
				|  Postano: 13:04 uto, 9. 6. 2009    Naslov: |         |  
				| 
 |  
				| [code:1]#include<stdio.h>
#include<stdlib.h>
 
 
 
 char dupliciraj (char s[], char c)
 {
 int i, brojac=0, t,  dodatno=0;
 char *s1;
 
 for (i=0; s[i]!='\0'; i++)
 {
 t=i+1;
 if(s[i]==c) brojac++;
 }
 
 s1=(char*)malloc((t+1+brojac)*sizeof(char));
 
 for (i=0; i<t; i++)
 {
 if (s[i]==c)
 {
 s1[i+dodatno]=s[i];
 dodatno++;
 s1[i+dodatno]=s[i];
 }
 else s1[i+dodatno]=s[i];
 }
 s1[t+1+brojac]='\0';
 
 printf("\n Trazeni ispis: %s \n",  s1  );
 free (s1);
 
 }
 
 
 int main(){
 
 char s[20];
 char c;
 
 
 scanf("%[^\n]", s);
 scanf (" %c", &c);
 
 dupliciraj(s, c);
 
 
 
 
 
 system ("PAUSE");
 return 0;
 }
 [/code:1]
 
 kad smo već tu počeli stavljati zadatke...evo konačnog koda za zadatak [b]5[/b].6. bijah odsutna od jučer...sad mi nije jasno zašto za riječ "banana" i "n" ispiše na kraju "g". dobro podupla tražena slova ali zezne ovo.. negdje sam očito fulala s granicama za '\0'. za neke stringove mi dobro napiše  :?
 
 
 :P  samo trebam umjesto s1[t+1+brojac] staviti s1[[b]t+brojac[/b]]='\0'
 
 pitam se zašto mi je trebalo da prvo to stavim na forum pa skužim o čemu se radi
  	  | Kod: |  	  | #include<stdio.h> #include<stdlib.h>
 
 
 
 char dupliciraj (char s[], char c)
 {
 int i, brojac=0, t,  dodatno=0;
 char *s1;
 
 for (i=0; s[i]!='\0'; i++)
 {
 t=i+1;
 if(s[i]==c) brojac++;
 }
 
 s1=(char*)malloc((t+1+brojac)*sizeof(char));
 
 for (i=0; i<t; i++)
 {
 if (s[i]==c)
 {
 s1[i+dodatno]=s[i];
 dodatno++;
 s1[i+dodatno]=s[i];
 }
 else s1[i+dodatno]=s[i];
 }
 s1[t+1+brojac]='\0';
 
 printf("\n Trazeni ispis: %s \n",  s1  );
 free (s1);
 
 }
 
 
 int main(){
 
 char s[20];
 char c;
 
 
 scanf("%[^\n]", s);
 scanf (" %c", &c);
 
 dupliciraj(s, c);
 
 
 
 
 
 system ("PAUSE");
 return 0;
 }
 
 | 
 
 kad smo već tu počeli stavljati zadatke...evo konačnog koda za zadatak 5.6. bijah odsutna od jučer...sad mi nije jasno zašto za riječ "banana" i "n" ispiše na kraju "g". dobro podupla tražena slova ali zezne ovo.. negdje sam očito fulala s granicama za '\0'. za neke stringove mi dobro napiše
   
 
 
  samo trebam umjesto s1[t+1+brojac] staviti s1[t+brojac]='\0' 
 pitam se zašto mi je trebalo da prvo to stavim na forum pa skužim o čemu se radi
 
 
 _________________
 Granice mogućega možemo odrediti samo onda ako ih prijeđemo odlaskom u nemoguće
 |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 | 
			
				|  Postano: 13:37 uto, 9. 6. 2009    Naslov: |         |  
				| 
 |  
				| Zasto pise da funkcija vraca [tt]char[/tt], a onda nigdje prebitog [tt]return[/tt]-a? :-k
Zasto pise da funkcija vraca char, a onda nigdje prebitog return-a?
 Inace, u zadatku pise da nesto treba napraviti na stringu i da pretpostavis da imas dovoljno memorije. :? Dakle, nema [tt]malloc()[/tt]-a i nema dodatnog niza (stringa). :ccc:
   
 Inace, u zadatku pise da nesto treba napraviti na stringu i da pretpostavis da imas dovoljno memorije.
  Dakle, nema malloc()-a i nema dodatnog niza (stringa).   _________________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.
  |  | 
	
		| [Vrh] |  | 
	
		| komaPMF Forumaš(ica)
 
  
  
 Pridružen/a: 22. 11. 2007. (10:23:41)
 Postovi: (E6)16
 Spol:
  Lokacija: Over the roof
 
 |  | 
	
		| [Vrh] |  | 
	
		|  |