Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 21. 01. 2012 21:40

milwoukee
Příspěvky: 158
Reputace:   
 

otocenie pola v C

Ahoj, chcem sa spytat na to kde presne robim chyby. Malo by to otacat pole , viem ze tam budu isto chyby v pointroch , memory leak asi tiez.
Dik

char * otoc(char *arrays ){           //funkcia na otocenie pola
    int a = 0;
    char *pole;
    pole = malloc(sizeof(char)*strlen(arrays));
for (int i = strlen(arrays); i>0; i++){

     pole[i] = arrays[a];
     a++;
      }
}

char* main(){                               // ma vratit otocene pole
char * arrays = "retazec";
return otoc(arrays);
}

Offline

 

#2 21. 01. 2012 21:50 — Editoval jindra (21. 01. 2012 21:52)

jindra
Příspěvky: 78
Reputace:   
 

Re: otocenie pola v C

Nezkoušel jsem to přepsat, ale co tam vidím od oka za problémy:

1) main nevím proč by měla mít návratovou hodnotu typu char* když jako vrací číslo výsledku (succes, errory..).

2)  (int i = strlen(arrays); i>0; i++) ..nastavíš i velikost pole a pak to ještě zvětšuješ? Tím přetečeš mimo to pole hned prvním průchodem smičkou.
Buď i = 0 a přičítáš nebo i = velikost a odčítáš. Dle tvého zdrojáku or (int i = strlen(arrays); i>=0; i--)

Velikost alokovaná se zdá být v pořádku, ale jistý si nejsem. mohl bys to vytvořit bez pointeru jako pole charů o té velikosti:
char pole [strlen(arrays)]

Edit: úprava pro čitelnost.

Offline

 

#3 21. 01. 2012 22:11 — Editoval milwoukee (21. 01. 2012 22:11)

milwoukee
Příspěvky: 158
Reputace:   
 

Re: otocenie pola v C

↑ jindra:
ok dakujem po tvojich radach som to nejako zlatal :) ale prekvapilo ma ze main nemoze mat inu navratovu hodnotu ako int (0,1) edit: resp ine cislo

Offline

 

#4 22. 01. 2012 17:56

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: otocenie pola v C

a co bys chtěl operačnímu systému vracet? bajku?

Návratová hodnota main() slouží k vrácení chybového kódu, zda se program provedl nebo neprovedl správně, a pokud neprovedl, tak případně proč (resp. co se stalo)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#5 23. 01. 2012 03:43

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: otocenie pola v C

Zdravím,
co se týče otočení řetězce, může se hned použít funkce strrev().

Pokud si budeme chtít udělat vlastní funkci, tak nebude vlastně ani nic vracet - (pouze předáme pole), mohlo by se jednat o něco podobného:

Code:

void reverse(char s[])
{
      int c, i, j;

      for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
         c = s[i];
         s[i] = s[j];
         s[j] = c;
      }
}

Nesmíme zapomenout vložit knihovnu #include <string.h>, která pracuje s funkcí jako je třeba strlen().


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson