Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [VC6++] Aiutatemi

  1. #1

    [VC6++] Aiutatemi

    Ciao ragazzi,
    chiedo il vostro aiuto perchè non riesco a risolvere quaeto problema:
    Io devo leggere dei nomi, e questi vanno messi dentro ad un record. Funziona tutto tranne per una cosa, cioè che non mi inserisce il primo, lo lascia vuoto.
    MI spiego meglio se io voglio inserire: Daniele, Dario, Laura,
    la funzione non so perchè ma inserisce solo Dario e Laura.

    Aiutatemi vi prego.

    il prototipo:
    char InsGiocatori();


    la funzione è:
    char InsGiocatori()
    {
    int cont;
    printf("In quanti volete giocare? max4 : ");
    scanf("%d",&n);
    if ((n>4)&&(n<2))
    {
    printf("Al massimo 4 e minimo 2 giocatori\n");
    InsGiocatori();
    }
    for(cont=0;cont<n;cont++)
    {
    printf("Inserire il nome del giocatore : ");
    gets(v[cont].nome);
    }
    }

  2. #2
    if ((n>4)&&(n<2))
    {
    printf("Al massimo 4 e minimo 2 giocatori\n");
    InsGiocatori();
    }
    Ehm...io direi che quella chiamata ricorsiva è altamente fuori luogo, prima di tutto (parlo della chiamata a InsGiocatori())! Usa un ciclo infinito! Inoltre, in quello stesso if non ci va && ma ||. Scritto così quell'if è superfluo, perché sarà SEMPRE falso! Pensaci: un numero può essere CONTEMPORANEAMENTE (&&, and logico) minore di 2 e maggiore di 4?

    Guarda:

    codice:
    char InsGiocatori()
    {
        int cont, n;
    
        while( 1 ) // ciclo infinito
        {
            printf( "In quanti volete giocare? " );
            scanf( "%d", &n );
    
            if( ( n < 2 ) || ( n > 4 ) )
            {
                printf( "Al massimo 4 e minimo 2 giocatori\n" );
                continue; // ripete la richiesta
            }
    
            for( cont = 0; cont < n; cont++ )
            { 
                printf( "Inserire il nome del giocatore: " );
                gets( v[ cont ].nome );
            }
    
            break;
        }
    }
    In alternativa puoi usare anche un goto evitando il ciclo.

    Ciao.

  3. #3
    ti ringrazio ma ho risolto già da un bel pò, avevi ragione per la if && era inutile, però me ne son accorto subito dopo aver postato.

    ciao e grazie lo stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.