Forum Apl Inf
Would you like to react to this message? Create an account in a few clicks or log in to continue.

porovnani retezcu

2 posters

Goto down

porovnani retezcu Empty porovnani retezcu

Příspěvek pro Labonek Karel 6/12/2014, 10:56

hele borci kde dělám chybu ???

/*ukazatele porovnani textu*/
#include <stdio.h>
#include <stdlib.h>

int porovnej(char*t1,char*t2);
int main()
{
char *a = "ahoj", *b = "ahojj";
porovnej (a, b);

if (porovnej == -1)
printf("slovo %s je vetsi nez slovo %s\n", a, b);
else if (porovnej == 1)
printf("slovo %s je mensi nez slovo %s\n", a, b);
else
printf("slovo %s je stejne jako slovo %s\n", a, b);
return 0 ;
}
int porovnej(char*t1,char*t2)
{
do {
if (t1 > t2)
return (-1);
else if (t1 < t2)
return (1);
else continue;
} while(t1++ != 0 && t2++ != 0);

return (0);
}

Labonek Karel

Poèet pøíspìvkù : 27
Join date : 06. 12. 14

Návrat nahoru Goto down

porovnani retezcu Empty Re: porovnani retezcu

Příspěvek pro adam.korinek 7/12/2014, 21:49

Zdar, takto by to mohlo vypadat. Mel jsi problem v dereferencovani ukazetelu a zaroven si pletes pojem adresa(ukazatel) a promena...
kód:

/*ukazatele porovnani textu*/
#include <stdio.h>
#include <stdlib.h>

int porovnej(char*t1,char*t2);

int main()
{
   char *a = "ahooj", *b = "ahoojj";
   int vysledek = porovnej (a, b);

   if (vysledek == 1)
      printf("slovo %s je vetsi nez slovo %s\n", a, b);
   else if (vysledek == -1)
      printf("slovo %s je mensi nez slovo %s\n", a, b);
   else
      printf("slovo %s je stejne jako slovo %s\n", a, b);
   getchar();
   return 0 ;
}

int porovnej(char*t1,char*t2)
{
   while (*t1 != 0 || *t2 != 0) {
      if (*t1 > *t2)
         return 1;
      else if (*t1 < *t2)
         return -1;
      else {
         t1++;
         t2++;
      }
   }
   return 0;
}

adam.korinek

Poèet pøíspìvkù : 25
Join date : 18. 11. 14

Návrat nahoru Goto down

porovnani retezcu Empty Re: porovnani retezcu

Příspěvek pro Labonek Karel 8/12/2014, 05:14

Děkuju, mrknu se nato. Smile

Labonek Karel

Poèet pøíspìvkù : 27
Join date : 06. 12. 14

Návrat nahoru Goto down

porovnani retezcu Empty Re: porovnani retezcu

Příspěvek pro Labonek Karel 8/12/2014, 15:28

děkuji, už mi to chodí. Hele držel jsem se své varianty a jen jsem ji obohatil o pár hvězdiček Very Happy . Jo a s tím že je potřeba používat přímo projekty jsi měl pravdu dík už mi to tak neblbne Smile
no přeci jen jestli budeš mít čas a chuť skus mi napsat proč musím použít ještě neznámou vysledek a nemůžu rovnou psát volání funkce (porovnej == 1)
/*ukazatele porovnani textu*/
#include <stdio.h>
#include <stdlib.h>

int porovnej(char*t1,char*t2);
int main()
{
char *a = "ahoj", *b = "ahojj";
int vysledek = porovnej (a, b);
if (vysledek == -1)
printf("slovo %s je vetsi nez slovo %s\n", a, b);
else if (vysledek == 1)
printf("slovo %s je mensi nez slovo %s\n", a, b);
else
printf("slovo %s je stejne jako slovo %s\n", a, b);
return 0 ;
}
int porovnej(char*t1,char*t2)
{
do {
if (*t1 > *t2)
return (-1);
else if (*t1 < *t2)
return (1);
else continue;
} while(*t1++ != 0 && *t2++ != 0);
return (0);
}



PS: soráč, ale k čemu přesně máš v tom tvém kódu ten getchar(); ??????

Labonek Karel

Poèet pøíspìvkù : 27
Join date : 06. 12. 14

Návrat nahoru Goto down

porovnani retezcu Empty Re: porovnani retezcu

Příspěvek pro adam.korinek 8/12/2014, 15:56

Za prve, nemusis pouzivat docasnou promenou vysledek, nicmene si musis uvedomit ze toto neni scheme, a pracujes s prirazovanim. Takze kdyz volas fuknci(musis se zavorkama vzdy) tak ona ti vrati vysledek a ten si muzes ulozit...muzes pouzit i konstrukci: "porovnej (a, b) == 1" apod. ale zase si zeber ze pri kazdem porovanvani tuto funkci musis volat, takze neefektivni...proto si to radeji ulozim do promene. A co se tyce getchar() tak ten se pouziva proto ze kdyz ses v debagovacim rezimu, tak se ti pri ukonceni programu stane tom, ze ti konzole hned skonci a ty neuvidis zadny vysledek. Zkus si to kdyztak....jinak getchar() pouzivam kvuli tomu ze je multiplatformi, jinak muzes pouzit jeste windows funkci system("pause");

Ok doufam ze si chytrejsi.
Zdar

adam.korinek

Poèet pøíspìvkù : 25
Join date : 18. 11. 14

Návrat nahoru Goto down

porovnani retezcu Empty Re: porovnani retezcu

Příspěvek pro Labonek Karel 10/12/2014, 12:27

Děkuji tvé rady jsou super. Nevím jestli jsem chytřejší, ale jsem rád, že je s kým se poradit.

PS: Soráč že jsem se neozval dřív. Ale nestíhám. Very Happy

Labonek Karel

Poèet pøíspìvkù : 27
Join date : 06. 12. 14

Návrat nahoru Goto down

porovnani retezcu Empty Re: porovnani retezcu

Příspěvek pro adam.korinek 10/12/2014, 12:37

Tak jasne no, ja myslim ze chytrejsi budes :-). Vsak se ptej...

adam.korinek

Poèet pøíspìvkù : 25
Join date : 18. 11. 14

Návrat nahoru Goto down

porovnani retezcu Empty Re: porovnani retezcu

Příspěvek pro Sponsored content


Sponsored content


Návrat nahoru Goto down

Návrat nahoru

- Similar topics

 
Povolení tohoto fóra:
Nemůžete odpovídat na témata v tomto fóru