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

string
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
Gost






PostPostano: 18:58 uto, 31. 8. 2004    Naslov: string Citirajte i odgovorite

imam problema s programom koji treba unutar funkcije koja prima string sva mala slova zamjeniti velikim, velika malim, a sve druge znakove praznim mjestom. treba vratiti taj string...Ja sam to rjesila ovako, ali ne radi...ne znam koja je greska, pa bih voljela da mi netko ispravi...

char *promjeni(char *string){

while(*string){

if(*string>='A' && *string<='Z')
*string= *string+'a'-'A';
else if(*string>='a' && *string<='z')
*string= *string-'a'+'A';
else
*string=' ';

(*string)++;
}
return string;
}


int main(){

char s[256];
char *str;
int d;

printf("Unesite string: ");
gets(s);
d=strlen(s);
printf("Duljina unesenog stringa je: %d", d);

str=(char*)malloc((d+1)*sizeof(char));
if(str==NULL){
printf("GReska pri alokaciji memorije!");
exit(1);
}

str=promjeni(s);
printf("\nNovi string je: ");
puts(str);
return 0;
}
imam problema s programom koji treba unutar funkcije koja prima string sva mala slova zamjeniti velikim, velika malim, a sve druge znakove praznim mjestom. treba vratiti taj string...Ja sam to rjesila ovako, ali ne radi...ne znam koja je greska, pa bih voljela da mi netko ispravi...

char *promjeni(char *string){

while(*string){

if(*string>='A' && *string⇐'Z')
*string= *string+'a'-'A';
else if(*string>='a' && *string⇐'z')
*string= *string-'a'+'A';
else
*string=' ';

(*string)++;
}
return string;
}


int main(){

char s[256];
char *str;
int d;

printf("Unesite string: ");
gets(s);
d=strlen(s);
printf("Duljina unesenog stringa je: %d", d);

str=(char*)malloc((d+1)*sizeof(char));
if(str==NULL){
printf("GReska pri alokaciji memorije!");
exit(1);
}

str=promjeni(s);
printf("\nNovi string je: ");
puts(str);
return 0;
}


[Vrh]
Crni
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 12. 2003. (01:20:43)
Postovi: (23C)16
Spol: muško
Sarma = la pohva - posuda
= 29 - 25
Lokacija: Zagreb

PostPostano: 20:16 uto, 31. 8. 2004    Naslov: Citirajte i odgovorite

[code:1]char zamjeni (char c)
{
if (c>='a' && c<='z')
return c-('a'-'A');
else
return c+('a'-'A');
}

void CONVERT (char *s)
{
int i;
for (i=0; i<strlen(s); i++)
s[i]=zamjeni(s[i]);
}[/code:1]

Prva funkcija vraća malo za veliko i obratno, a druga konvertira string.

Uživaj mala! 8)
Kod:
char zamjeni (char c)
{
 if (c>='a' && c<='z')
  return c-('a'-'A');
 else
  return c+('a'-'A');
}

void CONVERT (char *s)
{
 int i;
 for (i=0; i<strlen(s); i++)
  s[i]=zamjeni(s[i]);
}


Prva funkcija vraća malo za veliko i obratno, a druga konvertira string.

Uživaj mala! Cool


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


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

PostPostano: 23:31 uto, 31. 8. 2004    Naslov: Re: string Citirajte i odgovorite

Mani Crnog, njemu je vaznije kolegici dobacivati "[i]mala[/i]" i pisati (na drugom topicu) o "[i]gaborima[/i]", :evil: nego da procita zadatak kako spada. :roll: Dakle, fali mu onaj dio s razmacima... :roll:

Takodjer, oj Viteze Ulicne Kulture, :roll: pitanje je bilo [color=red]sto ne valja u prikazanom rjesenju[/color]... :evil:

Dakle...

[quote="Anonymous"]char *promjeni(char *string){

while(*string){

if(*string>='A' && *string<='Z')
*string= *string+'a'-'A';
else if(*string>='a' && *string<='z')
*string= *string-'a'+'A';
else
*string=' ';

[color=#008000](*string)++;[/color]
}
[color=#ff0000]return string;[/color]
}


int main(){

char s[256];
char *str;
int d;

printf("Unesite string: ");
gets(s);
[color=#000080]d=strlen(s);
printf("Duljina unesenog stringa je: %d", d);

str=(char*)malloc((d+1)*sizeof(char));
if(str==NULL){
printf("GReska pri alokaciji memorije!");
exit(1);
}[/color]

str=promjeni(s);
printf("\nNovi string je: ");
puts(str);
return 0;
}[/quote]

Po redu...

[color=#008000]Zeleno:[/color] Mijenjas ono na sto pokazuje pokazivac string, umjesto da "skocis" na iduce slovo. :-s Treba ti samo:
string++

[color=#ff0000]Crveno:[/color] Sad ti je string NULL pointer (zbog promjena u "zelenoj" opaski. :-s Da bi mogla vratiti string, trebas nekako sacuvati pointer na njega. Dakle:[code:1]char *promjeni(char *string){
char *original = string;
while(*string){
...
}
return original;
}[/code:1]

[color=#000080]Plavo:[/color] Posto mijenjas originalni string, ne trebas alocirati memoriju za novi, pa ti je taj dio skroz suvisan. 8)

Kod koji bi trebao raditi:


[code:1]char *promjeni(char *string){

char *original = string;

while(*string){

if(*string>='A' && *string<='Z')
*string= *string+'a'-'A';
else if(*string>='a' && *string<='z')
*string= *string-'a'+'A';
else
*string=' ';
string++;
}
return original;
}


int main(){
char s[256];
int d;

printf("Unesite string: ");
gets(s);
s=promjeni(s);
printf("\nNovi string je: %s\n", s);
return 0;
}[/code:1]

Promijenih i ispis u mainu. ;)

Inace, ako zelis ostaviti originalni string netaknut, trebas alocirati memoriju za novi, ali to se onda radi u samoj funkciji. :) Realizaciju prepustam tebi... ;)
Mani Crnog, njemu je vaznije kolegici dobacivati "mala" i pisati (na drugom topicu) o "gaborima", Evil or Very Mad nego da procita zadatak kako spada. Rolling Eyes Dakle, fali mu onaj dio s razmacima... Rolling Eyes

Takodjer, oj Viteze Ulicne Kulture, Rolling Eyes pitanje je bilo sto ne valja u prikazanom rjesenju... Evil or Very Mad

Dakle...

Anonymous (napisa):
char *promjeni(char *string){

while(*string){

if(*string>='A' && *string⇐'Z')
*string= *string+'a'-'A';
else if(*string>='a' && *string⇐'z')
*string= *string-'a'+'A';
else
*string=' ';

(*string)++;
}
return string;
}


int main(){

char s[256];
char *str;
int d;

printf("Unesite string: ");
gets(s);
d=strlen(s);
printf("Duljina unesenog stringa je: %d", d);

str=(char*)malloc((d+1)*sizeof(char));
if(str==NULL){
printf("GReska pri alokaciji memorije!");
exit(1);
}


str=promjeni(s);
printf("\nNovi string je: ");
puts(str);
return 0;
}


Po redu...

Zeleno: Mijenjas ono na sto pokazuje pokazivac string, umjesto da "skocis" na iduce slovo. Eh? Treba ti samo:
string++

Crveno: Sad ti je string NULL pointer (zbog promjena u "zelenoj" opaski. Eh? Da bi mogla vratiti string, trebas nekako sacuvati pointer na njega. Dakle:
Kod:
char *promjeni(char *string){
char *original = string;
while(*string){
...
}
return original;
}


Plavo: Posto mijenjas originalni string, ne trebas alocirati memoriju za novi, pa ti je taj dio skroz suvisan. Cool

Kod koji bi trebao raditi:


Kod:
char *promjeni(char *string){

  char *original = string;

  while(*string){

    if(*string>='A' &&  *string<='Z')
      *string= *string+'a'-'A';
    else if(*string>='a' &&  *string<='z')
      *string= *string-'a'+'A';
    else
      *string=' ';
    string++;
  }
  return original;
}


int main(){
  char s[256];
  int d;

  printf("Unesite string: ");
  gets(s);
  s=promjeni(s);
  printf("\nNovi string je: %s\n", s);
  return 0;
}


Promijenih i ispis u mainu. Wink

Inace, ako zelis ostaviti originalni string netaknut, trebas alocirati memoriju za novi, ali to se onda radi u samoj funkciji. Smile Realizaciju prepustam tebi... 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
Crni
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 12. 2003. (01:20:43)
Postovi: (23C)16
Spol: muško
Sarma = la pohva - posuda
= 29 - 25
Lokacija: Zagreb

PostPostano: 0:07 sri, 1. 9. 2004    Naslov: Citirajte i odgovorite

[quote="na poticaj vsege; update za zamjeni"][code:1]char zamjeni (char c)
{
if (c>='a' && c<='z')
return c-('a'-'A');
if (c>='A' && c<='Z')
return c-('a'-'A');
if (c==' ')
return ' ';
else
return c;
}[/code:1][/quote]
na poticaj vsege; update za zamjeni (napisa):
Kod:
char zamjeni (char c)
{
   if (c>='a' && c<='z')
    return c-('a'-'A');
   if (c>='A' && c<='Z')
    return c-('a'-'A');
   if (c==' ')
    return ' ';
   else
    return c;
}


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


Pridružen/a: 29. 08. 2004. (20:59:52)
Postovi: (5)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 23:19 pon, 6. 9. 2004    Naslov: Citirajte i odgovorite

Sego, puno hvala...zbilja mi je ovo pojasnjavanje dosta toga objasnilo...a i sama fja od crnog koja je tipa void, pa me to sjetilo da uopce ne moram stvarati novi string...
Sto se tice ulicne kulture, hehe...takva dobacivanja su, nazalost u nasoj "kulturi" pozeljni kodeks ponasanja...tesko je naci sugovornika kojem je moguce objasniti da to nije i prihvatljivo 8)
Hvala za objasnjenja...pozdrav
Sego, puno hvala...zbilja mi je ovo pojasnjavanje dosta toga objasnilo...a i sama fja od crnog koja je tipa void, pa me to sjetilo da uopce ne moram stvarati novi string...
Sto se tice ulicne kulture, hehe...takva dobacivanja su, nazalost u nasoj "kulturi" pozeljni kodeks ponasanja...tesko je naci sugovornika kojem je moguce objasniti da to nije i prihvatljivo Cool
Hvala za objasnjenja...pozdrav



_________________
The world is an ugly, bad dream and all night long you can hear me scream...
[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