#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<ctime>
#define num_pacchi 20
using namespace std;
int Gioca(char nome[], int pacco);
int offerta(char nome[], int pacco);
int Apertura_Pacco();
int Fine();
char nome[20];
int pacco,fare_offerta= 0;
int pacchi_rimanenti[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
struct pa
{
int tipo;
int contenuto_pacco; //{Pacchi}
char *premio;
}p[num_pacchi];
int cambio_finito=0;
int main () {
system("color 34");
srand(time(NULL));
int scelta;
p[0].tipo=2;
p[0].contenuto_pacco=-1;
p[0].premio="aaaaaa";
p[1].tipo=2;
p[1].contenuto_pacco=-1;
p[1].premio="bbbbb";
p[2].tipo=2;
p[2].contenuto_pacco=-1;
p[2].premio="ccccc";
p[3].tipo=2;
p[3].contenuto_pacco=-1;
p[3].premio="ddddd";
p[4].tipo=2;
p[4].contenuto_pacco=-1;
p[4].premio="eeeee";
p[5].tipo=1;
p[5].contenuto_pacco=1;
p[5].premio="1 euro";
p[6].tipo=1;
p[6].contenuto_pacco=5;
p[6].premio="5 euro";
p[7].tipo=1;
p[7].contenuto_pacco=10;
p[7].premio="10 euro";
p[8].tipo=1;
p[8].contenuto_pacco=20;
p[8].premio="20 euro";
p[9].tipo=1;
p[9].contenuto_pacco=100;
p[9].premio="100 euro";
p[10].tipo=1;
p[10].contenuto_pacco=500;
p[10].premio="500 euro";
p[11].tipo=1;
p[11].contenuto_pacco=1000;
p[11].premio="1000 euro";
p[12].tipo=1;
p[12].contenuto_pacco=5000;
p[12].premio="5000 euro";
p[13].tipo=1;
p[13].contenuto_pacco=10000;
p[13].premio="10000 euro";
p[14].tipo=1;
p[14].contenuto_pacco=20000;
p[14].premio="20000 euro";
p[15].tipo=1;
p[15].contenuto_pacco=50000;
p[15].premio="50000 euro";
p[16].tipo=1;
p[16].contenuto_pacco=75000;
p[16].premio="75000 euro";
p[17].tipo=1;
p[17].contenuto_pacco=100000;
p[17].premio="100000 euro";
p[18].tipo=1;
p[18].contenuto_pacco=250000;
p[18].premio="250000 euro";
p[19].tipo=1;
p[19].contenuto_pacco=500000;
p[19].premio="500000 euro";
printf("\t\t****************************************************\n");
printf("\t\t* *\n");
printf("\t\t* Benvenuti ad AFFARI TUOI *\n");
printf("\t\t* *\n");
printf("\t\t****************************************************\n\n");
printf( "1 - Gioca\n\n2 - Esci\n\n");
scanf("%d",&scelta);
do {
switch (scelta) {
case 1:
system("cls");
printf( "\n\nInserisci il tuo nome: ");
scanf("%s",&nome);
while (pacco < 1 || pacco > 20)
{
printf( "\n\nInserisci il numero del pacco che vuoi(1-20): ");
scanf("%d",&pacco);
}
Gioca(nome,pacco);
break;
case 2:
exit (1);
}
}
while (scelta < 1 || scelta > 3);
}
int Gioca(char nome[], int pacco) {//fare_offerta++;
Fine();
if ((fare_offerta==3 || fare_offerta==6 || fare_offerta==9 || fare_offerta==12 || fare_offerta==15 || fare_offerta==18))
{
offerta(nome, pacco);
}
/* if(fare_offerta==19)
Fine();*/
int chiama; //Chiamata Pacco
system("cls");
printf( "Pacchi rimasti: ");
for (int x = 0; x < 20; x++) { //Mostra Pacchi Rimasti
if (pacchi_rimanenti[x]!=pacchi_rimanenti[pacco-1] && pacchi_rimanenti[x]!=0) {
printf("%d ",pacchi_rimanenti[x]);
}
else {
printf( " ");
}
}
for (int y = 0; y < num_pacchi; y++)
{
if(p[y].contenuto_pacco!=0)
printf("\n%s",p[y].premio);
else {
printf("\n");
} //Mostra Valori Rimasti
}
printf("\n");
printf( "\n\n\n");
printf( "Quale pacco vuoi chiamare? ");
scanf("%d",&chiama);
if(pacco!=chiama)
{
if (pacchi_rimanenti[chiama-1]!=0) {
Apertura_Pacco();
pacchi_rimanenti[chiama-1]=0;
fare_offerta++;
}
else
{
printf( "\n\n\nHai gia' chiamato quel pacco!!!");
}
//Gioca(nome,pacco);
}
else printf("Non puoi chiamare il tuo pacco...Premi invio per inserire un pacco diverso\n");
getchar();
Gioca(nome, pacco);
}
int offerta(char nome[], int pacco) {
int scelta;
int tipo_offerta;
int tot_pacchi_rimasti=0; //TOTale PaCchi
int valore_pacchi_rimasti=0; //TOTale RiManente
int off;
int x;
tipo_offerta=rand()%2;
if (tipo_offerta==0)
{
for (x=0; x < 20; x++) {
if ((p[x].contenuto_pacco!=0) && (p[x].contenuto_pacco==-1))
{
valore_pacchi_rimasti += (p[x].contenuto_pacco+1);
tot_pacchi_rimasti++;
}
else if (p[x].contenuto_pacco!=0)
{
valore_pacchi_rimasti += p[x].contenuto_pacco;
tot_pacchi_rimasti++;
}
}
system("cls");
off = ((valore_pacchi_rimasti / tot_pacchi_rimasti));
off=off*0.1;
printf( "%s , per te l'offerta e': %d ",nome,off);
for (int y = 0; y < 20; y++) { //Mostra Valori Rimasti
if (p[y].contenuto_pacco!=0) {
printf("\n%s",p[y].premio);
}
else {
printf("\n");
}
}
printf("\n");
printf( "\nAccetti l'offerta? (1)-(SI) - (0)-(NO)\n");
while (scelta > 1 || scelta < 0)
scanf("%d",&scelta);
if (scelta==1) {
system("cls");
printf( "Hai vinto: %d",off);
printf("\n");
system("Pause");
exit (1);
}
}
else
{
int park,nuovo,scelta_cambio;
//cambio_finito=0;
if(cambio_finito==0)
{
fare_offerta--;
printf("Vuoi cambiare pacco? 1-Si 0-No");
while (scelta_cambio> 1 || scelta_cambio< 0)
scanf("%d",&scelta_cambio);
if (scelta_cambio==1)
{
printf("\nCon quale pacco vuoi cambiare il tuo?\nNuovo pacco: ");
scanf("%d",&nuovo);
park=pacco;
pacco=nuovo;
nuovo=park;
cambio_finito=1;
Gioca(nome,pacco);
}
else
{//printf("\nnumero offerte:%d\n",fare_offerta);
//fare_offerta--;
fare_offerta++;
cambio_finito=1;
}
// fare_offerta++;
//cambio_finito=0;
}
// fare_offerta++;
Gioca(nome,pacco);
}
}
int Apertura_Pacco() {
int PcVal;
system("cls");
printf( "Il valore del pacco e': ");
PcVal = rand() % 20;
while (p[PcVal].contenuto_pacco==0) {
PcVal = rand() % 20;
}
printf("%s",p[PcVal].premio);
p[PcVal].contenuto_pacco=0;
getchar();
}
int Fine() {
char *TotWn;
int temp,flag=1;
//TOTale WiN Totale Vincita
if (fare_offerta==19)
{
system("cls");
for (int y = 0; y < 20; y++)
{ //Trova Valore che hai vinto
if (p[y].contenuto_pacco!=0)
if (p[y].contenuto_pacco!=-1)
TotWn =p[y].premio;
else {
flag=0;
temp=y;
}
}
if(flag)
printf( "Hai vinto: %s!!!\n\n",TotWn);
else
printf("hai vinto: %s\n",p[temp].premio);
system("Pause");
exit (1);
}
getchar();
}
il problema sta che quando decido di non cambiare pacco mi fa di nuovo l'offerta mentre me la dovrebbe rifare tra altre 3 chiamate di pacco,perchè la richiesta di acmbio pacco è anch'essa un offerta