Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Stringhe
Forum - C/C++ - Stringhe - Pagina 2

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Cesaruz (Normal User)
Pro


Messaggi: 83
Iscritto: 25/10/2007

Segnala al moderatore
Postato alle 20:56
Mercoledì, 25/02/2009
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;)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 16:10
Giovedì, 26/02/2009
Testo quotato

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?


PM Quote
Avatar
Cesaruz (Normal User)
Pro


Messaggi: 83
Iscritto: 25/10/2007

Segnala al moderatore
Postato alle 17:07
Giovedì, 26/02/2009
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:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5. //#include <conio.h>
  6.  
  7.  
  8. int  G[50];
  9. char s[50][128];
  10. //Bubble sort
  11. void BubbleSort(int q)
  12. {
  13.         int i;
  14.         int j;
  15.         int tmp=0;
  16.         char str[128];
  17.         for (i = (q - 1); i >= 0; i--){
  18.             for (j = 1; j <= i; j++){
  19.                 if(G[j-1]<G[j]){
  20.                         tmp=G[j-1];
  21.                         G[j-1]=G[j];
  22.                         G[j]=tmp;
  23.                         strncpy(str,s[j-1],15);
  24.                         strncpy(s[j-1],s[j],15);
  25.                         strncpy(s[j],str,15);
  26.                 }
  27.             }
  28.         }
  29. }
  30.  
  31. //Acquisisco i punteggi
  32. void AcquisisciPunti(int q)
  33. {
  34.         int i;
  35.         for(i=0;i<q;i++){
  36.                 printf("Inserire punteggio della squadra %s ",s[i]);
  37.                 printf("---> ");
  38.                 while((0==scanf("%d",&G[i]))||(G[i]<0)){
  39.                         char buf[150];
  40.                         gets(buf);
  41.                         printf("Attenzione il punteggio inserito non è accettabile:SI PREGA DI REINSERIRLO\n");
  42.                         printf("-->");
  43.                 }
  44.         }
  45. }
  46.  
  47. //Acquisisco i nomi delle squadre
  48. void AcquisisciNomiSquadre(int q)
  49. {
  50.         int i;
  51.         char str;
  52.         for(i=0;i<q;i++){
  53.                 printf("Inserire nome della squadra numero %d ", i+1);
  54.                 printf("-->");
  55.                 gets(s[i]);            
  56.                 while(strcmp(s[i],"")==0){
  57.                           putchar('\a');
  58.                           printf("Attenzione il nome non è stato inserito corretamente: SI PREGA DI REINSRIRE\n");
  59.                           gets(s[i]);
  60.                       }
  61.         }
  62. }
  63. //Visualizzazzione
  64. void Visualizza(int q)
  65. {      
  66.         int i; 
  67.         for(i=0;i<q;i++){
  68.                 printf("Squadra %s punteggio %d\n",s[i],G[i]);
  69.         }      
  70. }
  71.  
  72. //Main
  73. int main()
  74. {
  75.         int q=0;
  76.         int i=0;
  77.     char risp[5];
  78.         do{
  79.                 printf("Quante squadre partecipano alle olimpiadi\n");
  80.                 //scanf("%ld",&q);
  81.                 printf("--->");
  82.                 while((0==scanf("%d",&q))||(q<=0)||(q>50)||(q<8)){
  83.                         char buf[150];
  84.                         gets(buf);
  85.                         printf("Attenzione non è stata inserita correttamente la quantità: SI PREGA DI REINSERIRLA\n");
  86.                         printf("--->");
  87.                 }
  88.                 AcquisisciNomiSquadre(q);
  89.                 putchar('\n');
  90.                 for(i=0;i<3;i++){
  91.                         printf("Inserire punti che le squadre hanno ottenuto al %d° girone\n", i+1);                  
  92.                         AcquisisciPunti(q);
  93.                         BubbleSort(q);                 
  94.                         if(i==0){
  95.                                 q=8;
  96.                         }else{
  97.                                 q=4;
  98.                         }
  99.                         printf("Squadre passate al %d° girone\n",i+2);
  100.                         Visualizza(q);
  101.                         putchar('\n');
  102.                 }              
  103.                 printf("Squadre vincitrici\n");
  104.                 Visualizza(3);
  105.                 putchar('\n');
  106.                 printf("La Squdra %s vince la medaglia d'oro con un punteggio di %d punti\n",s[0],G[0]);
  107.                 printf("La Squdra %s vince la medaglia d'argento con un punteggio di %d punti\n",s[1],G[1]);
  108.                 printf("La Squdra %s vince la medaglia di bronzo con un punteggio di %d punti\n",s[2],G[2]);
  109.                 putchar('\n');
  110.                 printf("Ci sono altre olimpiadi dell'intelligenza? (S/N)");            
  111.                 gets(risp);
  112.         }while(strcmp(risp,"S")==1);
  113.                
  114. }


Ultima modifica effettuata da Cesaruz il 26/02/2009 alle 17:10
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:10
Giovedì, 26/02/2009
Testo quotato

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
PM Quote
Avatar
Cesaruz (Normal User)
Pro


Messaggi: 83
Iscritto: 25/10/2007

Segnala al moderatore
Postato alle 14:42
Domenica, 01/03/2009
OK provo e ti faccio sapere...;)

PM Quote
Avatar
Cesaruz (Normal User)
Pro


Messaggi: 83
Iscritto: 25/10/2007

Segnala al moderatore
Postato alle 10:19
Giovedì, 05/03/2009
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:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:48
Giovedì, 05/03/2009
Ma usi Linux e gcc?

Ultima modifica effettuata da theprogrammer il 05/03/2009 alle 10:49
PM Quote
Avatar
Cesaruz (Normal User)
Pro


Messaggi: 83
Iscritto: 25/10/2007

Segnala al moderatore
Postato alle 16:45
Giovedì, 05/03/2009
Si programmo in C solo in ambiente linux...

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo