Untitled

mail@pastecode.io avatar
unknown
c_cpp
a month ago
2.3 kB
3
Indexable
Never
/*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.*/


#include <stdio.h>
#include <string.h>

#define MAX_STR 51
#define MAX_TITOLO 101
#define MAX_AUTORI 10

typedef struct{
    char nome[MAX_STR];
    char cognome[MAX_STR];
    char universita[MAX_STR];
    char email[MAX_STR];
} Autore;

typedef struct{
    char titolo[MAX_TITOLO];
    Autore autori[MAX_AUTORI];
    int num_autori;
}Pubblicazione;


int cont_pubblicazioni(Pubblicazione pubblicazioni[], int n_pub, char UNI[])
{

int count = 0, i, j;

for(i=0; i<n_pub; i++)
{
    int affiliati = 0;
    for(j=0; j<pubblicazioni[i].num_autori; j++)
    {
        if(strcmp(pubblicazioni[i].autori[j].universita, UNI) == 0)
        {
            affiliati++; //2
        }
    }
    if(affiliati >= (pubblicazioni[i].num_autori + 1) / 2)
    {
        count++; //2
    }
}

return count;
}

int main() {

    Autore autore1= {"Mario", "Rossi", "Universita di Roma", "mario.rossi@example.com"};
    Autore autore2 = {"Luigi", "Bianchi", "Universita di Milano", "luigi.bianchi@example.com"};
    Autore autore3 = {"Carla", "Verdi", "Universita di Roma", "carla.verdi@example.com"};
    
    int array[50]; //[4] [12] [55]
    Pubblicazione pubb[2]; //[] []
    
    strcpy(pubb[0].titolo, "Ricerca A");
    pubb[0].autori[0] = autore1;
    pubb[0].autori[1] = autore2;
    pubb[0].num_autori = 2;
    
    strcpy(pubb[1].titolo, "Ricerca B");
    pubb[1].autori[0] = autore1;
    pubb[1].autori[1] = autore3;
    pubb[1].num_autori = 2;
    
    int count = cont_pubblicazioni(pubb, 2, "Universita di Roma");
    
    printf("%d", count);

    return 0;
}
Leave a Comment