Fabietto206
04-02-2010, 15:15
Ho il seguente main nel progetto:
int main(int argc, char * argv[]){
// Variabili locali alla procedura main
char* hobby;
char ch='\0';
char temp;
int x, y, n;
int a, b;
rbnode *nodo = NULL;
int tmp;
char str [ 100 ];
FILE * pFile = NULL;
// per default input da tastiera
bool FlgInputFile = false;
// Costruisco Heap sort per contenere coppie di
// potenziali amici
heapPotAmic = constructHeapTD(MAX_DIM_INI);
// Inizializzo struttura ultima amicizia
// attulmente nessuna
UltimaAmicizia.m1 = -1;
UltimaAmicizia.m2 = -1;
UltimaAmicizia.nhobby -1;
// Inizializzo rappresentante attualmente nessuno
RapCampus.m = - 1;
RapCampus.voti = - 1;
// verifico tipo di input se da file o da tastiera
if (argv[1] != NULL)
{
// Verifico se abilitate input da file
pFile = fopen (argv[1], "r");
if (pFile != NULL)
FlgInputFile = true;
}
do {
// verifico se leggere comando da file o tastiera
if ( ! FlgInputFile)
ch = getchar();
else
{
fscanf (pFile, "%s", str);
ch = *(&str[0]);
}
switch(ch) {
// Eventi
// Inserisci puffo nel campus
case 'I':
// input da file o da tastiera
if (! FlgInputFile)
{
while(isspace(temp = getchar()));
hobby = Inserimento(temp);
// Nuovo puffo con i suoi hobby
inserisciPuffo(hobby);
}
else
{
fscanf (pFile, "%s", str);
inserisciPuffo(str);
}
break;
// Lezione
case 'L':
// Input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&y); // matricola puffo y
}
else
{
fscanf(pFile, "%d",&x); // matricola puffo x
fscanf(pFile, "%d",&y); // matricola puffo y
}
// Inserisco conoscenza creata a lezione se non stata
// già inserita
if ( ! IsConoScenza (x, y) )
InserisciConoScenza(x, y);
break;
// Funzione feste
case 'W':
// input da file o da tastiera
if (! FlgInputFile)
scanf("%d",&n); // numero di feste
else
fscanf(pFile, "%d",&n);
// Genero nuove coppie di amici in base al numero di feste
EseguiFeste (n);
break;
// Funzione feste
case 'E':
// Funzione per eleggere il nuovo rappresentante del campus
// in base ai puffi presenti attualmente
EleggiRappresentante();
break;
// fine eventi
// Domanda numero puffi
case 'N':
printf("N: %d \n" , ContMatricola);
break;
// Numero di Hobby
case 'H':
// input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&y); // matricola puffo y
}
else
{
fscanf(pFile, "%d",&x); // matricola puffo x
fscanf(pFile, "%d",&y); // matricola puffo y
}
// Calcolo numero di hobby in comune
tmp = NumHobbyCondivisi(x, y);
printf("H %d %d : %d \n" , x,y, tmp);
break;
// Domanda quale dei due
case 'Q':
// input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&a); // matricola puffo a
scanf("%d",&b); // matricola puffo y
}
else
{
fscanf(pFile,"%d",&x); // matricola puffo x
fscanf(pFile,"%d",&a); // matricola puffo a
fscanf(pFile,"%d",&b); // matricola puffo y
}
// Analizza se x farebbe amicizia con il puffo a o b
// oppure con nessuno
tmp = QualeDeiDuePuffi(x, a, b);
if (tmp == 1)
printf("Q %d %d %d : A \n",x,a,b);
else if (tmp == 2)
printf("Q %d %d %d : B \n" ,x,a,b);
else
printf("Q %d %d %d :\n",x,a,b);
break;
// Domanda ultima
case 'U':
// Verifico di avere l'ultima amicizia
if (UltimaAmicizia.nhobby > 0)
printf("U: %d %d %d \n" , UltimaAmicizia.m1 ,
UltimaAmicizia.m2 , UltimaAmicizia.nhobby);
else
printf("U:\n");
break;
// Domanda quante amicize
case 'A':
printf("A: %d \n" , TotAmicizieCampus);
break;
// Domanda popolarità
case 'P':
// input da file o da tastiera
if (! FlgInputFile)
scanf("%d",&x); // matricola puffo x
else
fscanf(pFile, "%d",&x); // matricola puffo x
tmp = PopolaritaPuffo(x);
printf("P %d : %d \n" , x, tmp);
break;
// Domanda Conoscenti
case 'C':
// input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&y); // matricola puffo y
}
else
{
fscanf(pFile, "%d",&x); // matricola puffo x
fscanf(pFile, "%d",&y); // matricola puffo y
}
// Verifico se x e y sono conoscenti
if ( IsConoScenza(x, y))
printf("C %d %d : S \n", x, y);
else
printf("C %d %d : N \n", x, y);
break;
// Domanda Rappresentante
case 'R':
// Verifico se stato eleltto un rappresentante
if (RapCampus.voti > 0)
printf("R: %d %d \n" , RapCampus.m , RapCampus.voti);
else
printf("R: -1 \n");
break;
/*stampa puffi usato per debug*/
case 's':
stampaPuffi();
break;
default:
break;
}
}
while(ch != 'F');
// chiduo eventuale file
if (FlgInputFile)
fclose(pFile);
// fine programma
printf("\nFine operazioni primi INVIO per terminare ");
getchar ();
}
ho una serie di test (scritti il file .txt) da fargli eseguire. Sapete come fare x passarli al programma come input?? Xkè non riesco....
In modo tale da non dovermeli scrivere tutti a mano nella finestrella nera....
int main(int argc, char * argv[]){
// Variabili locali alla procedura main
char* hobby;
char ch='\0';
char temp;
int x, y, n;
int a, b;
rbnode *nodo = NULL;
int tmp;
char str [ 100 ];
FILE * pFile = NULL;
// per default input da tastiera
bool FlgInputFile = false;
// Costruisco Heap sort per contenere coppie di
// potenziali amici
heapPotAmic = constructHeapTD(MAX_DIM_INI);
// Inizializzo struttura ultima amicizia
// attulmente nessuna
UltimaAmicizia.m1 = -1;
UltimaAmicizia.m2 = -1;
UltimaAmicizia.nhobby -1;
// Inizializzo rappresentante attualmente nessuno
RapCampus.m = - 1;
RapCampus.voti = - 1;
// verifico tipo di input se da file o da tastiera
if (argv[1] != NULL)
{
// Verifico se abilitate input da file
pFile = fopen (argv[1], "r");
if (pFile != NULL)
FlgInputFile = true;
}
do {
// verifico se leggere comando da file o tastiera
if ( ! FlgInputFile)
ch = getchar();
else
{
fscanf (pFile, "%s", str);
ch = *(&str[0]);
}
switch(ch) {
// Eventi
// Inserisci puffo nel campus
case 'I':
// input da file o da tastiera
if (! FlgInputFile)
{
while(isspace(temp = getchar()));
hobby = Inserimento(temp);
// Nuovo puffo con i suoi hobby
inserisciPuffo(hobby);
}
else
{
fscanf (pFile, "%s", str);
inserisciPuffo(str);
}
break;
// Lezione
case 'L':
// Input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&y); // matricola puffo y
}
else
{
fscanf(pFile, "%d",&x); // matricola puffo x
fscanf(pFile, "%d",&y); // matricola puffo y
}
// Inserisco conoscenza creata a lezione se non stata
// già inserita
if ( ! IsConoScenza (x, y) )
InserisciConoScenza(x, y);
break;
// Funzione feste
case 'W':
// input da file o da tastiera
if (! FlgInputFile)
scanf("%d",&n); // numero di feste
else
fscanf(pFile, "%d",&n);
// Genero nuove coppie di amici in base al numero di feste
EseguiFeste (n);
break;
// Funzione feste
case 'E':
// Funzione per eleggere il nuovo rappresentante del campus
// in base ai puffi presenti attualmente
EleggiRappresentante();
break;
// fine eventi
// Domanda numero puffi
case 'N':
printf("N: %d \n" , ContMatricola);
break;
// Numero di Hobby
case 'H':
// input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&y); // matricola puffo y
}
else
{
fscanf(pFile, "%d",&x); // matricola puffo x
fscanf(pFile, "%d",&y); // matricola puffo y
}
// Calcolo numero di hobby in comune
tmp = NumHobbyCondivisi(x, y);
printf("H %d %d : %d \n" , x,y, tmp);
break;
// Domanda quale dei due
case 'Q':
// input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&a); // matricola puffo a
scanf("%d",&b); // matricola puffo y
}
else
{
fscanf(pFile,"%d",&x); // matricola puffo x
fscanf(pFile,"%d",&a); // matricola puffo a
fscanf(pFile,"%d",&b); // matricola puffo y
}
// Analizza se x farebbe amicizia con il puffo a o b
// oppure con nessuno
tmp = QualeDeiDuePuffi(x, a, b);
if (tmp == 1)
printf("Q %d %d %d : A \n",x,a,b);
else if (tmp == 2)
printf("Q %d %d %d : B \n" ,x,a,b);
else
printf("Q %d %d %d :\n",x,a,b);
break;
// Domanda ultima
case 'U':
// Verifico di avere l'ultima amicizia
if (UltimaAmicizia.nhobby > 0)
printf("U: %d %d %d \n" , UltimaAmicizia.m1 ,
UltimaAmicizia.m2 , UltimaAmicizia.nhobby);
else
printf("U:\n");
break;
// Domanda quante amicize
case 'A':
printf("A: %d \n" , TotAmicizieCampus);
break;
// Domanda popolarità
case 'P':
// input da file o da tastiera
if (! FlgInputFile)
scanf("%d",&x); // matricola puffo x
else
fscanf(pFile, "%d",&x); // matricola puffo x
tmp = PopolaritaPuffo(x);
printf("P %d : %d \n" , x, tmp);
break;
// Domanda Conoscenti
case 'C':
// input da file o da tastiera
if (! FlgInputFile)
{
scanf("%d",&x); // matricola puffo x
scanf("%d",&y); // matricola puffo y
}
else
{
fscanf(pFile, "%d",&x); // matricola puffo x
fscanf(pFile, "%d",&y); // matricola puffo y
}
// Verifico se x e y sono conoscenti
if ( IsConoScenza(x, y))
printf("C %d %d : S \n", x, y);
else
printf("C %d %d : N \n", x, y);
break;
// Domanda Rappresentante
case 'R':
// Verifico se stato eleltto un rappresentante
if (RapCampus.voti > 0)
printf("R: %d %d \n" , RapCampus.m , RapCampus.voti);
else
printf("R: -1 \n");
break;
/*stampa puffi usato per debug*/
case 's':
stampaPuffi();
break;
default:
break;
}
}
while(ch != 'F');
// chiduo eventuale file
if (FlgInputFile)
fclose(pFile);
// fine programma
printf("\nFine operazioni primi INVIO per terminare ");
getchar ();
}
ho una serie di test (scritti il file .txt) da fargli eseguire. Sapete come fare x passarli al programma come input?? Xkè non riesco....
In modo tale da non dovermeli scrivere tutti a mano nella finestrella nera....