TESTO:
Cattura.PNG
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;
    }
}