TESTO:
Purtroppo dal punto 3 mi sono trovato in difficoltà e non so come muovermi per eseguire questo programma.
Ho provato però mi ritrovo il problema che se la palla bianca colpisce la rossa e non va in buca bisogna assegnare un punto, ma non riesco a fare questa cosa. Riesco solo a fare il caso in cui la palla bianca colpisce la rossa e la manda in buca, da qui non posso fare neanche il resto del programma. Qualcuno che mi da una mano?
Mia risoluzione:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
void genRand(double *x, double *y);
void counter(int *punteggio);
int main() {
srand(time(NULL));
printf("Il programma simula una partita di biliardo\n");
int N;
do {
printf("Inserire il numero di colpi sulla palla bianca: ");
scanf("%d",&N);
if (N < 100 || N > 200)
printf("ERRORE: il numero inserito deve appartenere all'intervallo [100,200]\n");
} while (N < 100 || N > 200);
int i, punteggio = 0;
for (i = 0; i < N; i++) {
counter(&punteggio);
}
printf("%d\n",punteggio);
}
void genRand(double *x, double *y) {
double wb;
wb = rand()/(double)RAND_MAX;
*x = wb;
double rb;
if (wb > 0.4) {
rb = rand()/(double)RAND_MAX;
*y = rb;
}
if (wb > 0.1 && wb <= 0.4) {
rb = rand()/(double)RAND_MAX * 0.5;
*y = rb;
}
if (wb <= 0.1) {
rb = rand()/(double)RAND_MAX * 0.5;
*y = rb;
}
}
void counter(int *punteggio) {
double x, y;
genRand(&x, &y);
if (x > 0.4 && y > 0.5) {
*punteggio += 2;
}
if (x > 0.1 && x <= 0.4) {
*punteggio -= 3;
}
if (*punteggio < 0) {
*punteggio = 0;
}
}