Salve, ho realizzato questo programma che funziona correttamente, però non so se ho scritto nel modo più opportuno le dichiarazioni di funzioni.
Ovvero, io so che quando devo passare un vettore ad una funzione gli devo passare l'indirizzo al primo elemento del vettore, e nella dichiarazione della funzione devo puntare a quell' indirizzo.
In questo programma invece ho utilizzato un vettore di stringhe ,e quindi penso che debba passare alla funzione l'indirizzo della prima striga del vettore di stringhe &Vett[0][0] (oppure Vett) e poi nella dichiarazione puntare alla prima stringa quindi char Vett[][], tuttavia se scrivo così la dichiarazione della funzione il compilatore mi segnala un errore , ho risolto scrivendo char Vett[DIM][LEN] ma non capisco il motivo.
/*Leggere da tastiera un vettore di n stringhe.
Calcolare la lunghezza della stringa piu’ piccola tra le stringhe inserite.
Stampare a video la stringa corrispondente.
Proporre una soluzione organizzata in almeno 4 funzioni inclusa la funzione main.*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DIM 5
#define LEN 15
void LeggereVettoreDiStringheDaTastiera(char Vett[DIM][LEN]);
void ScrivereLunghezzaStringhe(char Vett[DIM][LEN], int Lenght[DIM]);
int TrovaStringaPiuCorta(int Lenght[DIM]);
void StampaStringaPiuCorta(int i, char Vett[DIM][LEN]);
int main(void){
char Vett[DIM][LEN];
int Lenght[DIM];
int i;
LeggereVettoreDiStringheDaTastiera(Vett);
ScrivereLunghezzaStringhe(Vett, Lenght);
i = TrovaStringaPiuCorta(Lenght);
StampaStringaPiuCorta(i,Vett);
system("pause");
return 0;
}
void LeggereVettoreDiStringheDaTastiera(char Vett[DIM][LEN]){
int i = 0;
while (i < DIM){
printf("Inserisci %d-esimo elemento del Vettore di Stringhe: ",i);
scanf("%s",Vett[i]);
i++;
}
return;
}
void ScrivereLunghezzaStringhe(char Vett[DIM][LEN], int Lenght[DIM]){
int i = 0;
while(i < DIM){
Lenght[i] = strlen(Vett[i]);
i++;
}
return;
}
int TrovaStringaPiuCorta(int Lenght[DIM]){
int i = 0;
int pos;
int min = Lenght[i];
while (i < DIM){
if (min > Lenght[i]){
min = Lenght[i];
pos = i;
}
i++;
}
return pos;
}
void StampaStringaPiuCorta(int i, char Vett[DIM][LEN]){
printf("stringa piu' corta: %s\n",Vett[i]);
return;
}