Ciao, sto scrivendo un programma molto elementare in C, ma ho un problema che non riesco a risolvere di visibilità di un vettore multidimensionale. :
#include <stdio.h>
#define VEND 5 // asse orizzontale matrice SaleS
#define PROD 6 // asse verticale matrice SaleS
int SaleS [PROD][VEND] = {{0},{0}} ; // Matrice inizializzata a 0
void Calcolo ( int IdVend) ; // popola SaleS invocata da main
void Stampa (void) ; // stampa i risultati invocata da main
int Totali ( int x, int y ) ; // restituisce a Stampa i totali per prodotto e venditore
int main(void)
{
	
	int scelta ; // variabili di prompt
	
	// presentazione programma 
	
	printf ("****************************************************************************************************\n") ;
	printf ("*                                                                                                  *\n") ;
	printf ("*                                                                                                  *\n") ;
	printf ("*                                        Bisboccia Srl                                             *\n") ;
	printf ("*                                         Contabilità                                              *\n") ;
	printf ("*                                                                                                  *\n") ;
	printf ("*                                                                                                  *\n") ;
	printf ("*                                                                                                  *\n") ;
	printf ("****************************************************************************************************\n\n\n\n") ;
	
	printf ("Inserire l'ID del Venditore : (EOF to End)\n") ;
	
	while ( ( scelta = getchar() ) != EOF ) { // iterà il ciclo per la registrazione dei dati
		
		switch ( scelta ) {
			
			case '1' :
			case '2' :
			case '3' :
			case '4' :
				Calcolo (scelta) ; // richiama la funzione per il popolamento della matrice
				printf ("Inserire l'ID del Venditore: (EOF to End)\n");
				printf ("%d da calcolo\n", SaleS [1][1] ) ;
				break ;
				
			case '\t' :
			case '\n' :
 			case ' '  :
				break ;
				
			default:
				printf ("Valore non valido\n") ;
				printf ("Inserire l'ID del Venditore: (EOF to End)\n");
				break ;
			}
		
		}
		
		printf ("%d da main\n", SaleS [1][1] ) ; // stampa di controllo per la messa a punto
		
	Stampa () ; // stampa i risultati in formato tabulare
	
	printf ("Termine Programma\n");
	
	return 0 ;
	
} // fine funzione main
	
void Calcolo (IdVend) // inizio funzione popolamento matrice
{ 
	int IdProd ; // Identificativo prodotto
	int Venduto ; // venduto da prompt
			
		printf ("Inserire l'ID del Prodotto :\n") ;
		scanf ("%d", &IdProd ) ;
			
	printf ("Inserire il dato del Venduto : \n") ;
	scanf ("%d", &Venduto) ;
	
	SaleS [IdProd][IdVend] = SaleS [IdProd][IdVend] + Venduto ; // popola la matrice alle coordinate indicate
	printf ("%d\n", SaleS [IdProd][IdVend]) ; // stampa di controllo per la messa a punto
		
} // fine funzione Calcolo
void Stampa (void) { // inizio funzione Stampa risultati
	
	int count ; // contatore per il primo ciclo for
	int count2 ; // contatore per il secondo ciclo for
	int prod = (PROD - 1) ; 
	int vend = (VEND - 1) ;
	
	printf ("%d\n", SaleS [1][1] ) ;
			printf ("\t\t%c\t\t%c\t\t%c\t\t%c\t\tTot\n", '1' , '2' , '3' , '4'  ) ; //intestatione
	
			for ( count = 1 ; count <= prod ; count++) { //inizia il ciclo for per la stampa delle righe 
				
				printf ("%d\t\t", count) ; // intestazione riga
				
				for ( count2 = 1 ; count2 <= vend ; count2++ ) { // inizia il ciclo for per la stampa delle colonne
					
					printf("%d\t\t", SaleS[count][count2] ) ; // stampa risultato prodotto/venditore
				}
				
				printf ("%d\n" , Totali (count, vend) ); // stampa invocando Totali il totale per la riga(prodotto)
			}
			
			printf (" \t\t") ; //stampa un campo vuoto
			
			for (count = 1 ; count <= vend ; count++) { // ciclo for per la stampa dei totali per colonne (venditore) 
				
				printf ("%d\t\t", Totali (count, prod)) ;
				
			}
			
			printf ("\n") ; // manda a capo
			
} // fine funzione Stampa
int Totali ( x, y ) // inizio funzione calcolo dei totali invocati da stampa
{
	
	int Sum = 0 ;
	int count3 ; 
	
	for ( count3 = 0 ; count3 <= y ; count3++) { // inizio ciclo for calcolo totali da matrice
		
		Sum = SaleS [x][count3] + Sum ;
	}
	
	return Sum ; // restituisce sum
	
} // fine funzione Totali
l'output è quello seguente : 
 omissis.... 
Inserire l'ID del Venditore : (EOF to End)
1
Inserire l'ID del Prodotto :
1
Inserire il dato del Venduto : 
1
1
Inserire l'ID del Venditore: (EOF to End)
0 da calcolo
1
Inserire l'ID del Prodotto :
1
Inserire il dato del Venduto : 
1
2
Inserire l'ID del Venditore: (EOF to End)
0 da calcolo
1
Inserire l'ID del Prodotto :
1
Inserire il dato del Venduto : 
1
3
Inserire l'ID del Venditore: (EOF to End)
0 da calcolo
1
Inserire l'ID del Prodotto :
1
Inserire il dato del Venduto : 
1
4
Inserire l'ID del Venditore: (EOF to End)
0 da calcolo
1
Inserire l'ID del Prodotto :
1
Inserire il dato del Venduto : 
1
5
Inserire l'ID del Venditore: (EOF to End)
0 da calcolo
0 da main
0
		1		2		3		4		Tot
1		0		0		0		0		0
2		0		0		0		0		0
3		0		0		0		0		0
4		0		0		0		0		0
5		0		0		0		0		0
 		0		0		0		0		
Termine Programma
come potete vedere il valore del vettore viene conservato all'interno della funzione calcolo, ma rimane a 0 sia in main che nelle altre funzioni.
Purtroppo nn riesco a capire dove stia l'errore, considerando che non è la prima volta che scrivo un programma che dichiara un vettore con visibilità su tutto il file.
qualcuno ha la pazienza di spiegarmi dove sbaglio?
Vi ringrazio