Composition86
20-12-2008, 21:53
Salve a tutti, sto svolgendo il seguente esercizio:
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#define DIMSTRINGA 25
#define DIM 50
typedef char Stringa[DIMSTRINGA];
typedef struct{
Stringa nome;
Stringa cognome;
int eta;
} Persona;
void init (Persona *);
void stampaDati (Persona *);
main()
{
Persona Dati[DIM];
int D;
char scelta;
do {
init (Dati);
stampaDati (Dati);
printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
scelta=getche();
} while (tolower(scelta) != 'n');
}
void init (Persona *dati)
{
int i, d;
printf ("Inserire il numero di persone che si vuole immagazzinare (inferiore a 50): ");
scanf ("%d", &d);
printf ("Digitare i nomi delle %d persone:\n", d);
for (i=0; i<= d-1; i++) {
printf ("Inserire nome: ");
scanf ("%s", dati[i].nome);
printf ("Inserire cognome: ");
scanf ("%s", dati[i].cognome);
printf ("Inserire eta': ");
scanf ("%d", &dati[i].eta);
printf ("********************\n");
}
}
void stampaDati (Persona *dati)
{
int i, d;
printf ("Ecco l'archivio con i dati delle %d persone memorizzate:\n", d);
for (i=0; i<= d-1; i++) {
printf ("Nome: %s\n", dati[i].nome);
printf ("Cognome: %s\n", dati[i].cognome);
printf ("Eta': %d\n", dati[i].eta);
printf ("********************\n");
}
}
Vorrei fare in modo di utilizzare d evitando di metterla come variabile globale o all'interno della funzione (come ho fatto io, ma questa cosa di solito da' problemi).
Dove la dovrei collocare per evitare malfunzionamenti? Grazie in anticipo.
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#define DIMSTRINGA 25
#define DIM 50
typedef char Stringa[DIMSTRINGA];
typedef struct{
Stringa nome;
Stringa cognome;
int eta;
} Persona;
void init (Persona *);
void stampaDati (Persona *);
main()
{
Persona Dati[DIM];
int D;
char scelta;
do {
init (Dati);
stampaDati (Dati);
printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
scelta=getche();
} while (tolower(scelta) != 'n');
}
void init (Persona *dati)
{
int i, d;
printf ("Inserire il numero di persone che si vuole immagazzinare (inferiore a 50): ");
scanf ("%d", &d);
printf ("Digitare i nomi delle %d persone:\n", d);
for (i=0; i<= d-1; i++) {
printf ("Inserire nome: ");
scanf ("%s", dati[i].nome);
printf ("Inserire cognome: ");
scanf ("%s", dati[i].cognome);
printf ("Inserire eta': ");
scanf ("%d", &dati[i].eta);
printf ("********************\n");
}
}
void stampaDati (Persona *dati)
{
int i, d;
printf ("Ecco l'archivio con i dati delle %d persone memorizzate:\n", d);
for (i=0; i<= d-1; i++) {
printf ("Nome: %s\n", dati[i].nome);
printf ("Cognome: %s\n", dati[i].cognome);
printf ("Eta': %d\n", dati[i].eta);
printf ("********************\n");
}
}
Vorrei fare in modo di utilizzare d evitando di metterla come variabile globale o all'interno della funzione (come ho fatto io, ma questa cosa di solito da' problemi).
Dove la dovrei collocare per evitare malfunzionamenti? Grazie in anticipo.