Ciao,
un grazie in anticipo a chi mi vorrà dare una mano…sto svolgendo il seguente esercizio:
Scrivete una funzione con prototipo
void smallest_largest (char *s[], int n, char **smallest, char **largest)
che, dato un array di stringhe s lungo n, trovi gli elementi minimo e massimo
nell’array (secondo l’ordine alfabetico).
Il mio codice è questo:
#include <stdio.h>
#include <string.h>
void smallest_largest (char *s[], int n, char **smallest, char **largest);
int main()
{
char *small = NULL;
char *large = NULL;
char *parole[] = {"val di fassa", "val gardena", "sole", "marte", "mercurio"};
smallest_largest (parole, 5, &small, &large);
printf ("Parola più lunga: %s\n", large);
printf ("Parola più corta: %s\n", small);
return 0;
}
void smallest_largest (char *s[], int n, char **smallest, char **largest) {
int i;
int lungSmall = strlen (s[0]);
int lungLarge = strlen (s[0]);
smallest = largest = s;
for (i = 1; i < n; i++) {
if (strlen (s[i]) > lungLarge) {
lungLarge = strlen (s[i]);
largest = &s[i];
}
else if (strlen (s[i]) < lungSmall) {
lungSmall = strlen (s[i]);
smallest = &s[i];
}
}
printf ("%s %d\n%s %d\n", *smallest, lungSmall, *largest, lungLarge); /* debug */
}
La funzione “smallest_largest” è corretta, quello che non va è la stampa delle due stringhe nel main e non riesco a capire il motivo…