porovnani retezcu
2 posters
Forum Apl Inf :: C
Strana 1 z 1
porovnani retezcu
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);
}
/*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
Re: porovnani retezcu
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
Re: porovnani retezcu
děkuji, už mi to chodí. Hele držel jsem se své varianty a jen jsem ji obohatil o pár hvězdiček . 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
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(); ??????
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
Re: porovnani retezcu
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
Ok doufam ze si chytrejsi.
Zdar
adam.korinek- Poèet pøíspìvkù : 25
Join date : 18. 11. 14
Re: porovnani retezcu
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.
PS: Soráč že jsem se neozval dřív. Ale nestíhám.
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: porovnani retezcu
Tak jasne no, ja myslim ze chytrejsi budes :-). Vsak se ptej...
adam.korinek- Poèet pøíspìvkù : 25
Join date : 18. 11. 14
Forum Apl Inf :: C
Strana 1 z 1
Povolení tohoto fóra:
Nemůžete odpovídat na témata v tomto fóru
|
|