Ahojte, nevěděl by někdo, jak prosím napsat funkci char *najdi(char *zdroj, char prvni, char posledni), která v řetězci zdroj najde nejdelší podřetězec, který začíná znakem prvni a končí znakem posledni a vrátí jej jako svou návratovou hodnotu. V případě nenalezení takového řetězce vrátí funkce NULL?
Fórum › C / C++
Hledani nejdelsiho podretezce
Nevíte někdo, proč to prosím nejede?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
char *najdi(char *zdroj, char *prvni)
{
int i, i2, j;
for (i = (int)strlen(zdroj)-(int)strlen(prvni); i >= 0; i--) {
for (j = 0, i2 = i;prvni[j] != '\0'; j++, i2++) {
if (prvni[j] == zdroj[i2]) {
if (prvni[j+1] == '\0')
return &zdroj[i];
}
else break;
}
}
return NULL;
}
int main()
{
char *zdroj = "ababcbaa";
char *prvni = "a";
char *druhy = "b";
printf("Je dan textovy retezec: %s ", zdroj);
printf("\nHledame podretezec od %s do %s ", prvni, druhy);
printf("\n\nPrvni nejblizsi slovo odpovidajici hledanemu je: %s %s\n\n", najdi(zdroj, prvni));
return 0;
}
To musí pochopit každý, názorněji to asi nesvedu.
char *najdi(char *zdroj, char prvni, char posledni)
{
int zacatek = -1, konec = -1;
int delkazdroje = strlen(zdroj);
for (int i = 0; i < delkazdroje; i++)
{
if (zdroj[i] == prvni)
{
zacatek = i;
break;
}
}
if (zacatek == -1)
return NULL;
for (int i = delkazdroje - 1; i >= zacatek; i--)
{
if (zdroj[i] == posledni)
{
konec = i;
break;
}
}
if (konec == -1)
return NULL;
int delkapodretezce = konec - zacatek + 1;
char *podretezec = (char*) malloc(delkapodretezce + 1);
if (podretezec != NULL)
{
memcpy(podretezec, zdroj + zacatek, delkapodretezce);
podretezec[delkapodretezce] = 0;
}
return podretezec;
}
...
{
char *zdroj = "ababcbaa", prvni = 'a', posledni = 'b';
char *podretezec = najdi(zdroj, prvni, posledni);
printf("%s\n%s\n", zdroj, podretezec);
free(podretezec);
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Hledání podřetězce — založil Tom1234
Pseudokod - hledani podretezce — založil vas1l1j
Hledání podřetězce zprava — založil peacheass
Vyhledávání nejdelšího opakujícího se substringu v txt souboru — založil dreIx
Podřetězce — založil Deivson
Moderátoři diskuze