Errori programma C

di il
3 risposte

Errori programma C

Salve ragazzi, premetto che ho poca esperienza per quanto riguarda programmazione.. ho elaborato un programma di gestione di un cantiere ma mi escono degli errori.. potete spiegarmi il perchè e correggermeli? Grazie in anticipo!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE_STR 50
#define SIZE 100

typedef struct {
	char cogn_I [SIZE_STR];
	char nome_I [SIZE_STR];
	char indirizzo_C [SIZE_STR];
	int num_civ;
	char citta_C [SIZE_STR];
	int nop_c;
	int adap_c;
	int adc_c;
		
} cantiere;

/* Prototipi di funzione */
int insert_data (cantiere[]);
void print_cantiere (cantiere[],int);
void print_cantimpr (cantiere[],int);
int print_cantap (cantiere[]);
int print_cantmop (cantiere[]);


int main (void) {
	cantiere a_cantiere [SIZE]; /* array di struttura */
	int a_num=insert_data(a_cantiere);
	int ch, c, m;

	//Costrutto while per la scelta delle operazioni da effettuare
	int choice = -1;                 			//Variabile per l'operazione nel costrutto switch
	while (choice != 0) {


          printf("\n#######################\n");
		printf("#          MENU'        #\n");
		printf("#######################\n\n");
		printf("\n1) Visualizza i cantieri\n");
		printf("\n2) Visuaizza i cantieri affidati all'ingegnere chiesto in input dall'utente\n");
		printf("\n3) Visualizza il numero dei cantieri aperti \n ");
		printf("\n4) Visualizza i dati del cantiere con il maggior numero di operai\n");
		printf("\n0)Esci dal programma\n");
		printf("\nQuale operazione vuoi eseguire? -> ");
		scanf("%d", &choice);
		
		switch (choice)
		{
			case 1:
				print_cantiere (a_cantiere, a_num);
				break;
			
			
			case 2:
				print_cantimpr (a_cantiere, a_num);
			     break;
				
			case 3:
				c = print_cantap (a_cantiere,a_num);
				break;
				
			case 4:
				m = print_cantmop (a_cantiere, a_num);
				break;
				
		     case 0:
				printf("\nUscita dal programma in corso...\n");
				break;

			default:
				printf("\nLa scelta effettuata è errata\n");
				break;
		}
		while ((ch = getchar()) != '\n' && ch != EOF)
			;

		printf("\n\nPremere INVIO per continuare...");
		while ((ch = getchar()) != '\n' && ch != EOF)
			;
	}
     return EXIT_SUCCESS;
}

//Funzione per l'immissione dei dati da codice 
int insert_data (cantiere a_cantiere [])
{
	int num_elem = 7;
	
	strcpy (a_cantiere[0].cogn_I, "Grasso");
	strcpy (a_cantiere [0].nome_I, "Graziana");
	strcpy (a_cantiere [0].indirizzo_C, "Via Roma");
	a_cantiere[0].num_civ= 22;
	strcpy (a_cantiere[0].citta_C, "Bari");
	a_cantiere[0].nop_c=7;
	a_cantiere[0].adap_c =2007;
	a_cantiere[0].adc_c= 2009;
	
	
	strcpy (a_cantiere[1].cogn_I, "Bartucci");
	strcpy (a_cantiere [1].nome_I, "Marco");
	strcpy (a_cantiere [1].indirizzo_C,"Via Orabona");
	a_cantiere[1].num_civ= 4;
	strcpy (a_cantiere[1].citta_C, "Palermo");
	a_cantiere [1].nop_c= 10;
	a_cantiere[1].adap_c =2005;
	a_cantiere[1].adc_c= 2008;
	
	
	strcpy (a_cantiere[2].cogn_I, "Annese");
	strcpy (a_cantiere [2].nome_I, "Mirko");
	strcpy (a_cantiere [2].indirizzo_C,"Via Pasubio");
	a_cantiere[2].num_civ= 120;
	strcpy (a_cantiere[2].citta_C, "Milano");
	a_cantiere [2].nop_c= 15;
	a_cantiere[2].adap_c =2004;
	a_cantiere[2].adc_c= 2006;
	
	
	strcpy (a_cantiere[3].cogn_I, "Giovanniello");
	strcpy (a_cantiere [3].nome_I, "Marco");
	strcpy (a_cantiere [3].indirizzo_C,"Via Castromediano");
	a_cantiere[3].num_civ= 120;
	strcpy (a_cantiere[3].citta_C, "Milano");
	a_cantiere [3].nop_c= 15;
	a_cantiere [3].adap_c =2013;
	a_cantiere[3].adc_c= 2014;
	
	
	strcpy (a_cantiere[4].cogn_I, "Di Lascio");
	strcpy (a_cantiere [4].nome_I, "Rosaria");
	strcpy (a_cantiere [4].indirizzo_C,"Via Garibaldi");
	a_cantiere[4].num_civ= 105;
	strcpy (a_cantiere[4].citta_C, "Roma");
	a_cantiere [4].nop_c= 5;
	a_cantiere [4].adap_c =2012;
	a_cantiere[4].adc_c= 2014;
	
	
	strcpy (a_cantiere[5].cogn_I, "Calabrese");
	strcpy (a_cantiere [5].nome_I, "Antonio");
	strcpy (a_cantiere [5].indirizzo_C,"Via Manfredi");
	a_cantiere[5].num_civ= 113;
	strcpy (a_cantiere[5].citta_C, "Palazzo San Gervasio");
	a_cantiere [5].nop_c= 4;
	a_cantiere [5].adap_c =2003;
	a_cantiere[5].adc_c= 2004;
	
	
	strcpy (a_cantiere[6].cogn_I, "Belsanti");
	strcpy (a_cantiere [6].nome_I, "Mariella");
	strcpy (a_cantiere [6].indirizzo_C,"Via Capruzzi");
	a_cantiere[6].num_civ= 106;
	strcpy (a_cantiere[6].citta_C, "Roma");
	a_cantiere [6].nop_c= 2;
	a_cantiere [6].adap_c =2002;
	a_cantiere[6].adc_c= 2002;
	
return num_elem;
	
}

/*funzione per stampare una tabella contenente i dati*/

void print_cantiere (cantiere a_cantiere[], int a_num){
	
	printf("\n\n%15s%15s%15s%15s%15s%15s%15s%15s\n", "Cognome","Nome","Indirizzo","N.civico","Città","N.operai","AnnoApertura", "AnnoChiusura");
	printf("-----------------------------------------------------------------------------------------------------------------------------\n");
	int i;
	for(i=0; i<a_num; i++)
	{
		printf("%15s%15s%15s%15d%15s%15d%15d%15d\n", a_cantiere[i].cogn_I, a_cantiere[i].nome_I,a_cantiere[i].indirizzo_C,a_cantiere[i].num_civ,a_cantiere[i].citta_C,
		a_cantiere[i].nop_c, a_cantiere[i].adap_c, a_cantiere[i].adc_c);
	}
	
}


// funzione per stampare i cantieri di un ingegnere richiesto in input
void print_cantimpr(cantiere a_cantiere[], int a_num){
	char cognr[100];
	char nomr[100];
	int i;
	printf("Inserisci il cognome dell'ingegnere\n");
	scanf("%s",&cognr);
	printf("Inserisci il nome dell'ingegnere\n");
	scanf("%s",&nomr);
	for(i=1; i<=a_num; i++){
		if(a_cantiere[i].cogn_I==cognr && a_cantiere[i].nome_I==nomr){
			printf("%15s%15d%15s%15d%15d%15d\n",a_cantiere[i].indirizzo_C,a_cantiere[i].num_civ,a_cantiere[i].citta_C,
			a_cantiere[i].nop_c, a_cantiere[i].adap_c, a_cantiere[i].adc_c); 
			}
	}
}

//funzione che visualizza il numero di cantieri aperti rispetto ad un determinato anno inserito in input dall'imprenditore
int print_cantap (cantiere[], int a_num){
      int cont,annor;
      int i;
      cont=0;
      printf("Inserisci l'anno di apertura del cantiere\n");
      scanf("%d", &annor);
      for(i=1; i<=a_num; i++){
      	if(annor==cantiere[i].adap_c){
      		cont++;
		 }
	 }
return cont;
}

//funzione che visualizza i dati del cantiere con il maggior numero di operai
int print_cantmop (cantiere[], int a_num){
	int f, max;
	int i;
	f=0;
	for(i=1;i<=a_num; i++){
		if (f=0){
			max=cantiere[i].nop_c;
			f=1;
		}
		else if(cantiere[i].nop_c>max){
			max=cantiere[i].nop_c;
		}
	}
return max;
}

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte