Untitled
/*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