Ciao,
scusami se ti faccio questa domanda, ma è da poco che scrivi codice in C?
Permettimi un consiglio: la prima cosa è scrivere il codice in maniera più "ordinata", ovvero indentata, io lo leggo molto meglio così:
- Codice: Seleziona tutto
#include<stdio.h>
typedef struct{
char destinazione[21];
char tipologia;
float costo;
int data;
}viaggio;
typedef viaggio viaggi[100];
int carica(viaggi v, int dim)
{
char risp='s';
while(risp=='s')
{
printf("IInserire destinazione: ");
scanf("%s", v[dim].destinazione);
printf("Inserire tipologia (A: all inclusive H: Hotel V: Viaggio): ");
scanf("%1s", &v[dim].tipologia);
printf("Inserire costo: ");
scanf("%f", &v[dim].costo);
printf("Inserisci data (gg/mm/aa): ");
scanf("%d", &v[dim].data);
printf("Inserire altro viaggio?(s/n): ");
scanf("%1s", &risp);
dim++;
}
return (dim);
}
void stampa(viaggi v, int dim)
{
int i;
for( i=0; i<dim; i++)
printf("/n %s %c %f %d", v[i].destinazione, v[i].tipologia, v[i].costo, v[i].data);
}
int main()
{
viaggi v;
int dim=0, i;
dim=carica(v, dim);
stampa(v, dim);
return 0;
}
Anzitutto all'interno del main hai dichiarato la variabile i e poi non la usi... Cerca inoltre di evitare i nomi di variabili con un solo carattere, personalmente li uso solo negli indici.
Non ricordo bene la parola chiave typedef, ma mi sembra che tu abbia dichiarato un vettore come variabile globale del tipo della tua struttura, se così perché effttuare un passaggio di variabili alle funzioni?
Utilizzando un vecchissimo C++ della Borland, io dichiarerei così la tua struttura:
- Codice: Seleziona tutto
struct viaggio
{
char destinazione[21];
char tipologia;
float costo;
int data;
};
viaggio viaggi[100];
Inoltre dovresti testare nella tua funzione di inserimento anche la condizione di non aver raggiunto il limite dei 100, con una and (&&).
Per quanto riguarda la chiusura del programma è normalissimo: inserisci nel main() l'attesa della digitazione di un carattere da tastiera, altrimenti il PC esegue il programma e poi lo termina, non è dato per scontato l'attesa che l'utente legga i risultati. Includi anche la libreria "conio.h" e dopo la funzione di stampa del main inserisci un richiamo alla funzione "getch()".
Spero di non averti incasinato di più le idee, non ho un compilatore sottomano da qualche anno e sto leggendo mentre sono in treno (con tutto il caos annesso
)il tuo codice, comunque dovresti testarlo con qualche ambiente IDE ed introducendo dei breakepoint, in modo da seguire passo passo anche i valori delle variabili... fammi sapere se posso esserti di aiuto in qualcosa.
Ciao.
Ciao Eddie.