Visualizzazione dei risultati da 1 a 10 su 11

Visualizzazione discussione

  1. #10
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    Cioa

    NON QUOTARE sempre perch� non � necessario e rende meno leggibile

    1) Premetto che sono un autodidatta in linguaggio C, quindi non sono certo l'insegnante migliore.

    Ma il C non � il C++, le variabili e gli array, dovrebbero essere dichiarate a inizio programma per le variabili globali, e a inizio funzione per le variabili locali.
    Le dimensioni degli array devono essere costanti e non variabili.
    Tu dichiari le variabili in ogni posto e quando ti servono, molti compilatori ti darebbero errore, non vanno dichiarate all'interno di un ciclo perch� a ogni ciclo verrebbero "ricreate" e tu lo fai.

    Ho provato a compilare, e a parte gli errori che ti ho detto, � l'algoritmo che non � corretto

    Questa parte del codice che serve per vedere se nei 4 giocatori � stato gi� estratto il nome
    non funziona molto bene

    codice:
    for(k =0; k <4; k++){//Verifica che non sia ripetuto nei 4 giocatori
                        if(K!=J && strcmp(a[k], a[j])==0){
                             estratto=1;
                             break;
                        }
                        else
                             estratto=0;
                    }

    Questo � il programma con le variabili dichiarate a inizio funzione, e le dimensioni array costani.
    Ora � lo stesso un po incasinato, funziona in parte per il problema del codice sopra postato.



    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #define MAX 32
    #define N 20
    
    
    int main() {
        int i, j, p, k,n, y, partitemax;
        int flag = 0;
        int estratto = 0;
        char s[MAX];
        char player[N][MAX];
        short partitegiocatori[N] = { 0 };
        char a[4][MAX];
        for (j = 0; j < 4; j++)
            a[j][0] = '\0';
         
        srand(time(NULL));
        do {
            printf("Inserire numero giocatori: ");
    
    
            scanf("%d",&n);
            if (n < 4 || n > MAX)
                printf("Valore errato: deve essere tra 4 e %d\n", MAX);
        } while (n < 4 || n > MAX);
    
    
        getchar();
    
    
        for (i = 0; i < n; i++) {
            printf("Giocatore %d: ", i + 1);
            gets(s);
            if (strlen(s) == 0) {
                printf("Nessun giocatore specificato - ripeti\n");
                i--;
            }
            else
                strcpy(player[i], s);
        }
        printf("\nInserire numero partite totali: ");
        scanf("%d", &p);
    
    
        partitemax = p / n;
        printf("Per un gioco totalmente equilibrato saranno giocate %d partite\n", partitemax*n);
        for (i = 0; i < (partitemax*n); i++) {
    
    
    
    
            for (j = 0; j < 4; j++) {
    
    
                do {
                    y = (0 + rand() % n);
    
    
                    for (k = 0; k < 4; k++) {
                        if ( strcmp(player[y], a[k]) == 0) {
                            estratto = 1;
                            break;
                        }
                        else
                            estratto = 0;
                    }
    
    
                    if (estratto == 0 && partitegiocatori[y] < partitemax) {
                        partitegiocatori[y]++;
                        strcpy(a[j], player[y]);
                        flag = 1;
                    }
                    else {
    
    
                        continue;
    
    
                    }
    
    
    
    
                } while (flag == 0);
                flag = 0;
    
    
    
    
            }
            printf("\n %s - %s VS %s - %s", a[0], a[1], a[2], a[3]);
            for (j = 0; j < 4; j++)
                    a[j][0] = '\0';
        }
        getchar();
        return 0;
    }
    Ha degli errori, ma io mi fermo qui SAREBBE DA RIVEDERE COMPLETAMENTE
    Ultima modifica di torn24; 12-05-2017 a 10:47
    Tecnologia

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 © 2025 vBulletin Solutions, Inc. All rights reserved.