Cesaruz (Normal User)
Pro
Messaggi: 83
Iscritto: 25/10/2007
|
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
PS: Per gli admin del sito...complimenti per il nuovo stile
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
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?
|
|
Cesaruz (Normal User)
Pro
Messaggi: 83
Iscritto: 25/10/2007
|
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
Codice sorgente - presumibilmente C++ |
#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 il 26/02/2009 alle 17:10 |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
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);
Ultima modifica effettuata da theprogrammer il 26/02/2009 alle 17:22 |
|
Cesaruz (Normal User)
Pro
Messaggi: 83
Iscritto: 25/10/2007
|
OK provo e ti faccio sapere...
|
|
Cesaruz (Normal User)
Pro
Messaggi: 83
Iscritto: 25/10/2007
|
Ciao senti ho provato ma non funziona che con la fflush(stdin)...
Come posso fare??..è possibile che sia dovuto al fatto che ci sono delle funzioni???
grazie antcipatamente
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Ma usi Linux e gcc?
Ultima modifica effettuata da theprogrammer il 05/03/2009 alle 10:49 |
|
Cesaruz (Normal User)
Pro
Messaggi: 83
Iscritto: 25/10/2007
|
Si programmo in C solo in ambiente linux...
|
|