Oppure

Loading
13/02/09 13:05
theprogrammer
Ci fai vedere come lo hai dichiarato ?
aaa
25/02/09 19:56
Cesaruz
Ciao scusa se ti ho risposto in ritardo cmq il vettore di stringhe l'ho dichiarto in questo modo: char s[100][50];
Con la prima coppia di quadre indico diciamo la dimensione del vettore quindi il numero di stringhe che posso acquisire mentre con la seconda coppia di quadre di regola il numero di caratteri..
Grazie anticipatamente:k:

PS: Per gli admin del sito...complimenti per il nuovo stile;)
aaa
26/02/09 15:10
theprogrammer
Postato originariamente da Cesaruz:

Ciao scusa se ti ho risposto in ritardo ...


Ok, pero' ho perso il filo del discorso ... qual e' il codice completo che usi e qual e' il problema/errore che hai?

aaa
26/02/09 16:07
Cesaruz
Ho messo il codice del semplice progetto che sto facendo...consiste nell'organizzare un torneo a tre gironi utilizzando le funzioni ed una scomposizione del problema del tipo top down...
In questo progettino quindi c'è una funzione che si chiama "AcquisisciNomiSquadre" dove appunto acquisisco i nomi delle squadre che partecipano al torneo in question...I nomi delle squadre come ovvio sono delle stringhe e quindi vorrei che quando l'utente per "sbaglio" non inserisce neanche un carattere gli esca un messaggio che lo avvisi dell'errore commesso e glie la faccio reinserire... però ho un problema con la gets() perchè solo la prima volta che entra nel ciclo,contenuto nella funzione, non mi fa inserire nulla e va direttamente nel ciclo di controllo avvisandomi quindi che non ho inserito nulla...
Ecco questo è il problema che non riesco a capire...:-?
Spero di essermi spiegato...
Ti ringrazio anticipatamente:k:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
//#include <conio.h>


int  G[50];
char s[50][128];
//Bubble sort
void BubbleSort(int q)
{
	int i;
	int j;
	int tmp=0;
	char str[128];
	for (i = (q - 1); i >= 0; i--){
	    for (j = 1; j <= i; j++){
		if(G[j-1]<G[j]){
			tmp=G[j-1];
			G[j-1]=G[j];
			G[j]=tmp;
			strncpy(str,s[j-1],15);
			strncpy(s[j-1],s[j],15);
			strncpy(s[j],str,15);
		}
	    }
	}
}

//Acquisisco i punteggi
void AcquisisciPunti(int q)
{
	int i;
	for(i=0;i<q;i++){
		printf("Inserire punteggio della squadra %s ",s[i]);
		printf("---> ");
		while((0==scanf("%d",&G[i]))||(G[i]<0)){
			char buf[150];
		        gets(buf);
			printf("Attenzione il punteggio inserito non è accettabile:SI PREGA DI REINSERIRLO\n");
			printf("-->");
		}
	}
}

//Acquisisco i nomi delle squadre
void AcquisisciNomiSquadre(int q)
{
	int i;
	char str;
	for(i=0;i<q;i++){
		printf("Inserire nome della squadra numero %d ", i+1);
		printf("-->");
		gets(s[i]);		
		while(strcmp(s[i],"")==0){
                          putchar('\a');
                          printf("Attenzione il nome non è stato inserito corretamente: SI PREGA DI REINSRIRE\n");
                          gets(s[i]);
                      }
	}
}
//Visualizzazzione
void Visualizza(int q)
{	
	int i;	
	for(i=0;i<q;i++){
		printf("Squadra %s punteggio %d\n",s[i],G[i]);
	}	
}

//Main
int main()
{
	int q=0;
	int i=0;
    char risp[5];
	do{
		printf("Quante squadre partecipano alle olimpiadi\n");
		//scanf("%ld",&q);
		printf("--->");
		while((0==scanf("%d",&q))||(q<=0)||(q>50)||(q<8)){
			char buf[150];
			gets(buf);
			printf("Attenzione non è stata inserita correttamente la quantità: SI PREGA DI REINSERIRLA\n");
			printf("--->");
		}
		AcquisisciNomiSquadre(q);
		putchar('\n');
		for(i=0;i<3;i++){
			printf("Inserire punti che le squadre hanno ottenuto al %d° girone\n", i+1);			
			AcquisisciPunti(q);
			BubbleSort(q);			
			if(i==0){
				q=8;
			}else{
				q=4;
			}
			printf("Squadre passate al %d° girone\n",i+2);
			Visualizza(q);
			putchar('\n');
		}		
		printf("Squadre vincitrici\n");
		Visualizza(3);
		putchar('\n');
		printf("La Squdra %s vince la medaglia d'oro con un punteggio di %d punti\n",s[0],G[0]);
		printf("La Squdra %s vince la medaglia d'argento con un punteggio di %d punti\n",s[1],G[1]);
		printf("La Squdra %s vince la medaglia di bronzo con un punteggio di %d punti\n",s[2],G[2]);
		putchar('\n');
		printf("Ci sono altre olimpiadi dell'intelligenza? (S/N)");		
		gets(risp);
	}while(strcmp(risp,"S")==1);
		
}       

Ultima modifica effettuata da Cesaruz 26/02/09 16:10
aaa
26/02/09 16:10
theprogrammer
Postato originariamente da Cesaruz:

Ho allegato il file ...


Quale file?

EDIT: visto ... abbiamo postato insieme ...

Inserisci nel ciclo di acquisizione una fflush(stdin) ... ovvero

printf("-->";);
fflush(stdin);
gets(s[i]);
Ultima modifica effettuata da theprogrammer 26/02/09 16:22
aaa
01/03/09 13:42
Cesaruz
OK provo e ti faccio sapere...;)
aaa
05/03/09 9:19
Cesaruz
Ciao senti ho provato ma non funziona che con la fflush(stdin)...:d
Come posso fare??..è possibile che sia dovuto al fatto che ci sono delle funzioni???
grazie antcipatamente:k:
aaa
05/03/09 9:48
theprogrammer
Ma usi Linux e gcc?
Ultima modifica effettuata da theprogrammer 05/03/09 9:49
aaa