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

funkcije isalpha, isdigit... (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
malena
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 27. 03. 2009. (16:43:42)
Postovi: (62)16
Spol: žensko
Sarma = la pohva - posuda
= 9 - 8
Lokacija: ...

PostPostano: 16:40 sri, 27. 5. 2009    Naslov: funkcije isalpha, isdigit... Citirajte i odgovorite

pozz. imam jedno pitanje, tice se onih funkcija isdigit isalpha i ostale.
kad zelimo iz stringa izbaciti recimo trece slovo, kako deklarirati string? ako stavim int *string nece prihvatiti slova a ako stavim char *string uopce nece biti brojeva.
ako netko ima volje da mi to objasni bila bih jako zahvalna
pozz. imam jedno pitanje, tice se onih funkcija isdigit isalpha i ostale.
kad zelimo iz stringa izbaciti recimo trece slovo, kako deklarirati string? ako stavim int *string nece prihvatiti slova a ako stavim char *string uopce nece biti brojeva.
ako netko ima volje da mi to objasni bila bih jako zahvalna


[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: 17:02 sri, 27. 5. 2009    Naslov: Citirajte i odgovorite

Zasto u necemu tipa [tt]char*[/tt] ne bi bilo znamenaka? :grebgreb:

Taj ili jako slican zadatak rijesen je u skripti i na vjezbama, pa baci oko tamo. 8)
Zasto u necemu tipa char* ne bi bilo znamenaka? Kotacici rade 100 na sat

Taj ili jako slican zadatak rijesen je u skripti i na vjezbama, pa baci oko tamo. 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
malena
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 27. 03. 2009. (16:43:42)
Postovi: (62)16
Spol: žensko
Sarma = la pohva - posuda
= 9 - 8
Lokacija: ...

PostPostano: 17:35 sri, 27. 5. 2009    Naslov: Citirajte i odgovorite

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]
hvala vsego jos me samo zanima radi li ovaj kod ono sto treba, mislim da brise kriva slova pa ako mozes baciti oko...

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]
Korisnički profil Pošaljite privatnu poruku
Gino
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 17:49 sri, 27. 5. 2009    Naslov: Citirajte i odgovorite

da tebi to brise 1. slovo, pa 4. ...
a valjda bi trebalo 3. pa 6. ...
ja sam to ovako
[code:1]#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void zadatak54(char *string){
int i=0,j,k=0,brisani=0;
while(string[i]){
if(isalpha(string[i]))
{
if((k+brisani)%3==2){
j=i;
while(string[j])
string[j]=string[++j];
brisani++;
}
k++;
}
i++;
}
}
int main(){
char string[20];
gets(string);
zadatak54(string);
puts(string);
}[/code:1]
da tebi to brise 1. slovo, pa 4. ...
a valjda bi trebalo 3. pa 6. ...
ja sam to ovako
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void zadatak54(char *string){
     int i=0,j,k=0,brisani=0;
     while(string[i]){
                      if(isalpha(string[i]))
                      {
                      if((k+brisani)%3==2){
                                 j=i;
                                 while(string[j])
                                 string[j]=string[++j];
                                 brisani++;
                                 }
                      k++;
                      }
                      i++;
                     }
     }
int main(){
    char string[20];
    gets(string);
    zadatak54(string);
    puts(string);
}



_________________
Mario Berljafa
[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: 22:33 sri, 27. 5. 2009    Naslov: Citirajte i odgovorite

@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:

@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?). ;)
@Gino: Cini mi se ispravno, ali kvadratna slozenost je stvarno nepotrebna. Smile Takodjer, ne razumijem cemu sluze i i k... meni djeluje da imaju stalno isto vrijednost, tj. da je za to dosta jedna varijabla. Kotacici rade 100 na sat

@malena: Cemu sluzi da prvo prebrojis slova? Think 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';
}
Question

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

Posto ne pise "sdesna", ocito se misli na brisanje "slijeva" (redom kojim citamo, ne?). Wink



_________________
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
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 22:06 pet, 5. 6. 2009    Naslov: Citirajte i odgovorite

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]
zašto program ne radi ako umjesto if( isalpha(a[i])) napišem if( isalpha(a[i]) ==1 ) Question

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]
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: 0:25 sub, 6. 6. 2009    Naslov: Citirajte i odgovorite

[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. Smile Naravno, za ne-slova ispise nulu, ali za slova ispise 1024, a ne 1. Cool Jednostavno, tebe samo zanima je l' nula ili nije; ne zanima te koliko je ako nije nula. Wink

Zasto bas tako... ostavimo pricu za neku drugu priliku... ili barem drugog asistenta. Wink

Poanta: ako ti se bas komplicira, onda umjesto isalpha(a[i]) stavi isalpha(a[i]) != 0, sto je stvarni ekvivalent tog logickog izraza. Cool

P.S. Znam da u pozivu isalpha() ne treba castanje... stavih to iz pedagoskih razloga. Wink



_________________
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
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 1:08 sub, 6. 6. 2009    Naslov: Citirajte i odgovorite

aha...
a u skripti piše da fje iz biblioteke ctype vraćaju 1 ili 0, ovisno o tome da li je odgovor da ili ne, al ok, očito je to onda napisano radi pojednostavljenja.
ugl, hvala :)
[size=9]PS: sljedeći put nebum komplicirala [/size] :wink:
aha...
a u skripti piše da fje iz biblioteke ctype vraćaju 1 ili 0, ovisno o tome da li je odgovor da ili ne, al ok, očito je to onda napisano radi pojednostavljenja.
ugl, hvala Smile
PS: sljedeći put nebum komplicirala Wink


[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: 8:47 sub, 6. 6. 2009    Naslov: Citirajte i odgovorite

Ah, vidi stvarno... :oops: Ispravih, hvala... bit ce on-line jednom... 8)
Ah, vidi stvarno... Embarassed Ispravih, hvala... bit ce on-line jednom... 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
komaPMF
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (10:23:41)
Postovi: (E6)16
Spol: žensko
Sarma = la pohva - posuda
-5 = 8 - 13
Lokacija: Over the roof

PostPostano: 14:44 pon, 8. 6. 2009    Naslov: Citirajte i odgovorite

[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]
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: 15:46 pon, 8. 6. 2009    Naslov: Citirajte i odgovorite

Fali ti razmak ispred [tt]%c[/tt], pa onda u varijabli [tt]blj[/tt] zavrsi [tt]'\n'[/tt] (enter od prethodnog unosa). 8) I rijec je o zadatku [b]5[/b].6. :)
Fali ti razmak ispred %c, pa onda u varijabli blj zavrsi '\n' (enter od prethodnog unosa). Cool I rijec je o zadatku 5.6. Smile



_________________
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
__fox
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 28. 11. 2008. (20:00:38)
Postovi: (35)16
Spol: žensko
Sarma = la pohva - posuda
= 7 - 4

PostPostano: 15:47 pon, 8. 6. 2009    Naslov: Citirajte i odgovorite

gle koma, nisam bas neki programer ali ajd probaj stavit izmedju ta dva scanf-a scanf("%%"); hehehe pozz ;)


ahmm ipak poslusaj vsegu :D XD XD
gle koma, nisam bas neki programer ali ajd probaj stavit izmedju ta dva scanf-a scanf("%%"); hehehe pozz Wink


ahmm ipak poslusaj vsegu Very Happy XD XD


[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: 15:48 pon, 8. 6. 2009    Naslov: Citirajte i odgovorite

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.

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 ;)
Rekao bih da je problem u novom redu Wink 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:
Kod:
getchar();

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 Wink

edit: vsego brži i pametniji, skroz sam zaboravio te fore s charovima 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
komaPMF
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (10:23:41)
Postovi: (E6)16
Spol: žensko
Sarma = la pohva - posuda
-5 = 8 - 13
Lokacija: Over the roof

PostPostano: 13:04 uto, 9. 6. 2009    Naslov: Citirajte i odgovorite

[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 Confused


Razz 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]
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: 13:37 uto, 9. 6. 2009    Naslov: Citirajte i odgovorite

Zasto pise da funkcija vraca [tt]char[/tt], a onda nigdje prebitog [tt]return[/tt]-a? :-k

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:
Zasto pise da funkcija vraca char, a onda nigdje prebitog return-a? Think

Inace, u zadatku pise da nesto treba napraviti na stringu i da pretpostavis da imas dovoljno memorije. Confused Dakle, nema malloc()-a i nema dodatnog niza (stringa). Ccc.... Sram te bilo...



_________________
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
komaPMF
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (10:23:41)
Postovi: (E6)16
Spol: žensko
Sarma = la pohva - posuda
-5 = 8 - 13
Lokacija: Over the roof

PostPostano: 13:42 uto, 9. 6. 2009    Naslov: Citirajte i odgovorite

a taj char mi je ostao dok sam se igrala s programom, zaboravih vratiti na void. a rekoh, ipak se radi o realnom programu, nije na papiru, pa za svaki slučaj da se nađe dovoljno memorije xD evo popravit ću sve
a taj char mi je ostao dok sam se igrala s programom, zaboravih vratiti na void. a rekoh, ipak se radi o realnom programu, nije na papiru, pa za svaki slučaj da se nađe dovoljno memorije xD evo popravit ću sve



_________________
Granice mogućega možemo odrediti samo onda ako ih prijeđemo odlaskom u nemoguće
[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