Ciao a tutti, ho un problema con questo esercizio, a mio avviso è già finito ma qualcosa non và... gradirei molto un chiarimento su dove sbaglio e magari la correzione dell'esercizio..
grazie in anticipo a tutti..
codice:
/*Esercizio 1 [20]
Si scriva un programma lotto.c. In esso si simuli la giocata di un terno
creando un vettore di 3 elementi interi giocate i cui valori (interi da 1 a 90) vengano inseriti
da tastiera dall'utente. Si simuli l'estrazione di 5 numeri su 8 ruote riempiendo la matrice
8x5 estrazioni con numeri casuali tra 1 e 90. Se si è in grado, si faccia in modo che non
siano mai uguali tra loro sulla stessa riga, altrimenti procedere oltre.
Si visualizzi la matrice in standard output.
Si calcolino le vincite mediante una funzione vincite che, data in ingresso la matrice,
restituisca una lista concatenata contenente le vincite ottenute, i cui elementi contengano
un intero (l'indice della riga, cioè la ruota di estrazione) e una stringa (la vincita) che può
essere “singolo”, “ambo”, “terno” se la riga contiene al massimo 1, 2, o 3 numeri contenuti
nel vettore giocate. Esempio: giocate = (2,34,56)
2 14 44 55 72
4 13 22 43 55
11 23 43 44 78
1 43 67 78 90
3 33 34 56 67
7 17 34 45 89
22 24 28 67 90
12 39 51 82 84
output: (0, singolo)->(4,ambo)->(5,singolo)->NULL
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define R 8
#define C 5
int giocata [3];
int estrazioni [R][C];
struct lista {
int riga;
const char vinc[8];
struct lista *next;
};
typedef struct lista Lista;
Lista *vincite (Lista *);
main()
{
Lista *inizio=NULL;
srand(time(NULL));
int giocata [3];
int estrazioni [R][C];
int i,j;
for (i=0;i<3;i++)
{
do
{
printf("\nInserisci il %d numero della tua giocata: ",i+1);
scanf("%d",&giocata[i]);
} while (giocata[i]<1||giocata[i]>90);
}
printf("\n\nEstrazioni\n\n");
for (i=0;i<R;i++)
{
for (j=0;j<C;j++)
{
estrazioni[i][j]=1+rand()%90;
printf("%4d",estrazioni[i][j]);
}
printf("\n\n");
}
vincite(inizio);
fflush(stdin);
getchar();
}
Lista *vincite (Lista *inizio)
{
int x,conta=0,i,j;
Lista *p;
for (i=0;i<R;i++)
{
for (j=0;j<C;j++)
{
for (x=0;x<3;x++)
{
if (estrazioni[i][j]==giocata[x]) conta++;
}
}
switch (conta)
{
case 0:
continue;
case 1:
p=(Lista*)malloc(sizeof(Lista));
p->riga=i;
strcpy("Singolo",p->vinc);
p->next=inizio;
inizio=p;
continue;
case 2:
p=(Lista*)malloc(sizeof(Lista));
p->riga=i;
strcpy("Ambo",p->vinc);
p->next=inizio;
inizio=p;
continue;
case 3:
p=(Lista*)malloc(sizeof(Lista));
p->riga=i;
strcpy("Terno",p->vinc);
p->next=inizio;
inizio=p;
continue;
default:
printf("\n\nERRORE!");
continue;
}
conta=0;
}
printf("\n\n\nElenco Vincite\n\nInizio --> ");
while (inizio)
{
printf("Ruota %d,%s --> ",p->riga,p->vinc);
}
printf("FINE");
}