|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
[C] Struttura di strutture
Salve a tutti, sto utilizzando per la prima volta la struttura di strutture e ho qualche difficoltà:
Codice:
//Programma che gestisce l'assegnazione dei corsi #define DIMSTRINGA 25 #include <stdio.h> #include <conio.h> #include <ctype.h> typedef tipoStringa[DIMSTRINGA]; //E' un vettore di DIMSTRINGA caratteri typedef enum {basiDiDati, linguaggiDiProgrammazione, ingegneriaDelSoftware, algoritmi} tipoCorso; typedef enum {lun, mar, mer, gio, ven} tipoGiornoSettimana; typedef enum {A, B} tipoAula; typedef struct lezione2 { tipoCorso nomeCorso; tipoStringa nomeDocente; int numeroStudenti; int oraInizio; int oraFine; } Lezione; typedef struct lezioneaula { Lezione lezione; //Struttura di struttura tipoAula aula; tipoGiornoSettimana giorno; } lezioneAula; tipoAula aula; tipoGiornoSettimana giorno; void init (lezioneAula [5][2]); void main (void) { lezioneAula Archivio[5][2]; char scelta; do { init (Archivio); printf ("\nVuoi ripetere il programma? (Premi 'n' per terminare il programma) "); scelta=getche(); } while (tolower (scelta) != 'n'); } void init (lezioneAula archivio[5][2]) { for (giorno=lun ; giorno<=ven ; giorno++) { for (aula=A ; aula<=B ; aula++) { printf ("Digitare il nome del corso:\n"); scanf ("%s", archivio[giorno][aula].lezione.nomeCorso); printf ("Digitare il nome del docente:\n"); scanf ("%s", archivio[giorno][aula].lezione.nomeDocente); printf ("Digitare il numero degli studenti:\n"); scanf ("%d", &archivio[giorno][aula].lezione.numeroStudenti); do { printf ("Digitare gli orari di inizio e fine della lezione (tra le 9 e le 18):\n"); scanf ("%d%d", &archivio[giorno][aula].lezione.oraInizio, &archivio[giorno][aula].lezione.oraFine); printf ("\n"); } while (&archivio[giorno][aula].lezione.oraInizio >= &archivio[giorno][aula].lezione.oraFine || &archivio[giorno][aula].lezione.oraInizio<9 || &archivio[giorno][aula].lezione.oraFine>18); } } } scanf ("%s", archivio[giorno][aula].lezione.nomeCorso); con questa istruzione accedo ad una variabile di tipo "Lezione" chiamata "lezione", poi con il "." accedo al nome del corso. Il programma mi permette di digitare la stringa, ma non la immagazzina per un qualche motivo. 2) Altra cosa che non capisco è il perchè devo ridichiarare tipoAula aula; tipoGiornoSettimana giorno; all'esterno della struttura per poterle utilizzare nei due cicli for. 3) Inoltre, anche se è di secondaria importanza, mi dice "[C++ Warning] Unit1.c(60): W8069 Nonportable pointer conversion" relativamente all'ultima riga del programma, con il puntatore di scrittura che si ferma dopo i "<" e ">". Chi mi può dare una mano? Grazie. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:52.