Ciao a tutti,
la richiesta è questa:
Definire le strutture dati per memorizzare le informazioni di una serie di pubblicazioni scientifiche. Ciascuna pubblicazione è caratterizzata da un titolo (una stringa di al massimo 100 caratteri) ed una lista di autori (al massimo 10). Ciascun autore è caratterizzato da nome, cognome, università di affiliazione ed indirizzo email (ciascuna una stringa di al massimo 50 caratteri). Scrivere un sottoprogramma che riceve come parametri un array di pubblicazioni ed una stringa UNI che indica il nome di un’università e qualsiasi altro parametro ritenuto strettamente necessario. Il sottoprogramma restituisce il numero di pubblicazioni per cui il numero di autori è per almeno la metà affiliato all’università indicata da UNI.
Io ho scritto la soluzione in questo modo:
però non sono sicuro su questa condizione:
perché facendo così, se non sbaglio, significa che io in un eventuale programma completo ho inizializzato tutto l'array. Ci sarebbe un altro modo per individuare il numero degli autori totali della pubblicazione?
Grazie mille in anticipo.
la richiesta è questa:
Definire le strutture dati per memorizzare le informazioni di una serie di pubblicazioni scientifiche. Ciascuna pubblicazione è caratterizzata da un titolo (una stringa di al massimo 100 caratteri) ed una lista di autori (al massimo 10). Ciascun autore è caratterizzato da nome, cognome, università di affiliazione ed indirizzo email (ciascuna una stringa di al massimo 50 caratteri). Scrivere un sottoprogramma che riceve come parametri un array di pubblicazioni ed una stringa UNI che indica il nome di un’università e qualsiasi altro parametro ritenuto strettamente necessario. Il sottoprogramma restituisce il numero di pubblicazioni per cui il numero di autori è per almeno la metà affiliato all’università indicata da UNI.
Io ho scritto la soluzione in questo modo:
C:
#define MAX_T 100
#define MAX_L 10
#define MAX_L_A 50
typedef struct{
char nome[MAX_A];
char cognome[MAX_A];
char università[MAX_A];
char email[MAX_A];
}autori;
typedef struct{
char titolo[MAX_T];
autori autore[MAX_L_A]
}pub_sci;
int sottoprogramma(pub_sci pubblicazioni[], char UNI[], int pub_dim){
/*pub_dim sono il numero di pubblicazioni*/
int cont, i, j, pub, tot_autori;
pub=0; /*numero di pubblicazioni che soddisfano il requisito*/
for(i=0; i<pub_dim; i++){
for(j=0, cont=0, tot_autori=0; j<MAX_A; j++){
if(strcmp(pubblicazioni[i].autore[j].università, UNI))
cont++; /* numero autori della stessa università*/
if(strlen(pubblicazioni[i].autovettori[j])!=0)
tot_autori++; /*autori totali della pubblicazione*/
}
if(tot_aut<cont*2)
pub++;
}
return pub;
}
però non sono sicuro su questa condizione:
C:
if(strlen(pubblicazioni[i].autovettori[j])!=0)
Grazie mille in anticipo.