RISOLTO sottoprogramma c89

Gius1805

Nuovo Utente
12
0
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:
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)
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.
 

Andretti60

Utente Èlite
6,440
5,091
Ci sono vari errori.
Usi MAX_A senza definirla.
Non usi correttamente il valore di ritorno del primo strcmp.
Usi il campo autovettori che non è esistente.
L’algoritmo che usi è sbagliato, devi ritornare il numero di autori che abbiano pubblicato almeno la metà pubblicazioni di cui almeno la metà deI autori lavorano per quella università
Post unito automaticamente:

Per rispondere alla tua domanda, puoi aggiungere un campo alla struttura pub_sci che indica quanti sono gli autori, oppure semplicemente come primo test per il numero degli autori accertati che la stringa nome o cognome non siano vuote, in tale caso esci dal ciclo interno.
 
Ultima modifica:
  • Mi piace
Reazioni: Gius1805

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili