|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
[C]Collocazione variabile
Salve a tutti, sto svolgendo il seguente esercizio:
Codice:
#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");
}
}
Dove la dovrei collocare per evitare malfunzionamenti? Grazie in anticipo. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
Un up, non credo sia difficile.
Alla fine la mia domanda è: "Come posso fare per inserire un numero in una funzione e renderlo disponibile per tutte le altre funzioni?" |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Lo dichiari nella funzione principale e lo passi come argomento alle due funzioni.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
Avevo già provato a fare così:
Codice:
#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 *, int d);
void stampaDati (Persona *, int d);
main()
{
Persona Dati[DIM];
int D;
char scelta;
do {
init (Dati, D);
stampaDati (Dati, D);
printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
scelta=getche();
} while (tolower(scelta) != 'n');
}
void init (Persona *dati, int d)
{
int i;
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 d)
{
int i;
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");
}
}
Ultima modifica di Composition86 : 21-12-2008 alle 16:16. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
init deve leggere "d" e ritornarne il valore. non puoi quindi passare il parametro per valore. Devi passare il puntatore.
Codice:
void init (Persona *dati, int* d) Codice:
scanf ("%d", d);
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
Ho cambiato e funziona, potresti dare una controllata? Quando devo usare i puntatori ho sempre il timore di sbagliare ed accorgermene nelle funzioni successive.
Codice:
#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 *, int *);
void stampaDati (Persona *, int *);
main()
{
Persona Dati[DIM];
int D;
char scelta;
do {
init (Dati, &D);
stampaDati (Dati, &D);
printf ("\nVuoi ripetere il programma? (Digita 'n' per terminare) ");
scelta=getche();
} while (tolower(scelta) != 'n');
}
void init (Persona *dati, int *d)
{
int i;
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 *d)
{
int i;
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");
}
}
Ultima modifica di Composition86 : 21-12-2008 alle 22:20. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:45.



















