Salve a tutti ragazzi, avrei un problema nel programma in c che ora vi riporto.
Credo che il problema sia con la funzione srand() poichè in questo programma creato dovrei generare 5 basi di un triangolo di carte con numeri compresi tra 1 e 15, solo che queste 5 basi sono tutte uguali...Questo è il main del programma:
Dove potrebbe essere il problema? Mi genera 5 basi di numeri tutte uguali...codice:/* Algoritmo che controlla se da un array di 5 interi generati a caso è possibile costruitire un triangolo di carte. Il gioco richiede che ogni carta sia la differenza tra le due carte che le stanno immediatamente sotto, a sinistra e a destra. E' possibile utilizzare 15 carte. Inputs: Outputs: Costrutti Ripetitivi: Complessità di tempo: */ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #include "function.h" int algoritmo (int esecuzione); void main() { int i; int testMassimi = 5; //Test per la verifica dell'algoritmo for(i=0;i<testMassimi;i++) { if(algoritmo(i) == 1) //Esce se si ottiene un successo {break;} } } /*Algoritmo*/ int algoritmo (int esecuzione) { /*Definizioni variabili*/ int i,j, nuovo, risultato; int successo=0; int numeroCarte, differenza; int matrice[BASE][BASE]; /*Conto le carte*/ numeroCarte = contaCarte(BASE); for(i=0;i<BASE;i++) { for(j=0;j<BASE;j++) { matrice[i][j] = 0; } } /* //Valori immessi a mano per testare l'esempio del prof matrice[0][0] = 6; matrice[0][1] = 14; matrice[0][2] = 15; matrice[0][3] = 3; matrice[0][4] = 13; */ /*Inserisco il primo valore nella matrice alla base, valore compreso tra 1 e 15*/ srand(time(NULL)); matrice[0][0] = (1 + (rand() % numeroCarte)); /*Riempio la base della matrice con altri valori, passandoli per la funzione isPresent per verifare se sono già presenti*/ for(j=1;j<BASE;j++) { nuovo = (1 + (rand() % numeroCarte)); while (isPresent(matrice,nuovo) != 0) { nuovo = (1 + rand() % numeroCarte); } matrice[0][j] = nuovo; } /* for(i=0; i<BASE; i++) { for(j=0;j<BASE;j++) { if(matrice[i][j] != 0) printf("%3d", matrice[i][j]); } printf("\n"); } */ /*Calcola le carti successive dopo aver generato la base, terminandolo se si presenta una carta già presente (isPresent)*/ for (i=1;i<BASE;i++) { for(j=0;j<BASE - i;j++) { differenza = abs(matrice[i-1][j] - matrice[i-1][j+1]); if(isPresent(matrice, differenza) != 0) { printf("Esecuzione: %d; la Carta %d ottenuta dalle carte %d e %d e' gia' presente\n", esecuzione, differenza, matrice[i-1][j], matrice[i-1][j+1]); break; } matrice[i][j] = differenza; } if(isPresent(matrice, differenza) != 0) break; } /*Se ho completato tutto(matrice triangolare inferiore) ho avuto successo*/ if(matrice[BASE-1][0] != 0) { printf("Esecuzione: %d; le Carte generate sono tutte diverse tra loro ed e' possibile costruire il triangolo\n", esecuzione); successo = 1; stampaTriangolo(matrice); } return successo; }
Ho anche un altro file function.h, ma credo che il problema sia qui...con il seed della funzione srand o qualcosa del genere...qualcuno sa aiutarmi?
Grazie

Rispondi quotando
