CORREGIR EJERCICIO, TIENE 24 ERRORES

MARIANO RAJOY
04 de Abril del 2005


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define RANGO(i,min,max) (i<min) || (i>max) ? 1:0
char nombre[20];
int mostrado=0,eleccion, pagado,opcion,turnos,precio[3],endeudado=0, deuda, prestamo, repetir, quebrado1, quebrado2, quebrado3;
struct jug{
int dinero;
int acciones[3];
} jug;

void main(){
jug.dinero=1000;
int titulo();
int cargar;
int azar;
int record, quiebra, compra, venta, prestamos, guardar, conseguir, revivir,revivir_empresa,conseguir_dinero,pagar;
printf("nntttIntroduce tu nombre: ");
gets(nombre);
printf("ntt1) Nueva partida 2) Cargar");
eleccion=getch();
eleccion-=48;
jug.acciones[1,2,3]=0;
if(eleccion==2) {cargar(); }
precio[1]=azar(1,100);
precio[2]=azar(1,100);
precio[3]=azar(1,100);
bucle:
if(endeudado){
jug.dinero-=100;
deuda-=100;}
if(deuda<=0) {endeudado=0; }
if(jug.dinero>1000000 && !endeudado) {record(); }
system("cls");
printf("tttJugador %s",nombre);
if(endeudado) {printf(" (Endeudado con %d)",deuda); }
printf("nn 1)Comprar ... 2)Vender ... 3)Prestamo ... 4)Guardar ... 5)Conseguir dinero");
printf("nnt6) Revivir Empresa ... 7)Salirn");
if(endeudado) {printf(" ... 8) Adelantar pagos");}
printf("nt | | | n");
printf("t | TOSTADIS | ENDESA | REPSOL n");
printf("t--------------------------------------- n");
printf("tacci| | | n");
printf("tones| %d | %d | %d n",jug.acciones[1],jug.acciones[2],jug.acciones[3]);
printf("t----|----------|------------------------ n");
printf("tprec| %d | %d | %d n",precio[1],precio[2],precio[3]);
printf("tio | | | n");
printf("ntPosibilidades: nTostadis: Quiebra: 10%% Desvalorizacion /2: 30%% Mantenerse: 20%% Duplicacion: 40%%n");
printf("nEndesa: Quiebra: 10%% Desvalorizacion /2: 15%% Mantenerse: 65%% Duplicacion: 10%%n");
printf("nRepsol: Quiebra: 2%% Desvalorizacion /2: 20%% Mantenerse: 48%% Duplicacion: 30%%n");
if(precio[1] == 0 && !quebrado1) {quiebra("tostadis"); goto bucle; }
if(precio[2] == 0 && !quebrado2) {quiebra("endesa"); goto bucle; }
if(precio[3] == 0 && !quebrado3) {quiebra("repsol"); goto bucle; }
if(jug.dinero<0) printf("nnt Dinero: 0 NUMEROS ROJOS: %d",-jug.dinero);
else printf("nt Dinero: %dn",jug.dinero);
do{
opcion=getch();
opcion-=48;
switch(opcion){
case 1: if(jug.dinero>0) compra();
else printf("nNo puedes comprar, estas en numeros rojos"); break;
case 2: venta(); break;
case 3: if(!endeudado) prestamos();
else {system("cls"); printf("No puedes pedir mas prestamos si no liquidas el pendiente"); getch();}break;
case 4: guardar(); break;
case 5: conseguir_dinero(); break;
case 6: revivir_empresa(); break;
case 7: exit(0); break;
case 8: if(endeudado) pagar(); break;
}}while(opcion>8 || opcion<1);

int precio_tostadis(), precio_endesa(), precio_repsol();

goto bucle;
}

compra(){
int compra,empresa;
char nom_empresa[10];
do{
printf("nACCIONES A COMPRAR: ");
scanf("%d",&compra);
printf("nEMPRESA: ");
scanf("%s",&nom_empresa);
if(!strcmp(nom_empresa,"tostadis") ) empresa=1;
else if(!strcmp(nom_empresa,"endesa") ) empresa=2;
else if(!strcmp(nom_empresa,"repsol")) empresa=3;
if (compra*precio[empresa]>jug.dinero) printf("ntttNo te llega el dineron");
}while(compra*precio[empresa]>jug.dinero);
jug.dinero-=compra*precio[empresa];
jug.acciones[empresa]+=compra;
}

venta(){
int venta,empresa;
char nom_empresa[10];
do{
printf("nACCIONES A VENDER: ");
scanf("%d",&venta);
printf("nEMPRESA: ");
scanf("%s",&nom_empresa);
if(!strcmp(nom_empresa,"tostadis") ) empresa=1;
else if(!strcmp(nom_empresa,"endesa") ) empresa=2;
else if(!strcmp(nom_empresa,"repsol")) empresa=3;
if (venta>jug.acciones[empresa]) printf("ntttNo tienes suficientes accionesn");
}while(venta>jug.acciones[empresa]);
jug.dinero+=venta*precio[empresa];
jug.acciones[empresa]-=venta;
}


int precio_tostadis(){
if(precio[1]!=0){
if(azar(1,100)<10) precio[1]=0;
else if(azar(1,100)<40) precio[1]/=2;
else if(azar(1,100)<=100); precio[1]*=2;
}
}

int precio_endesa(){
if(precio[2]!=0){
if(azar(1,100)<10) precio[2]=0;
else if(azar(1,100)<25) precio[2]/=2;
else if(azar(1,100)<=90) precio[2]*=2;
}
}
int precio_repsol(){
if(precio[3]!=0){
if(azar(1,100)<2) precio[3]=0;
else if(azar(1,100)<22) precio[3]/=2;
else if(azar(1,100)<=70) precio[3]*=2;
}
}


prestamos(){
system("cls");
printf("nntttDe cuanto quieres el prestamo?");
printf("nnttPrestamo: ");
scanf("%d",&prestamo);
jug.dinero+=prestamo+100;
deuda=prestamo+100;
endeudado=1;
}

pagar(){
system("cls");
printf("nntttDeuda inicial: %dntttDinero: %dntttA Pagar: %d",prestamo,jug.dinero,deuda);
printf("nntAdelanto: ");
scanf("%d",&pagado);
if(pagado>deuda) {printf("nnttNo hace falta que pagues mas que la deuda"); getch();}
if(pagado<jug.dinero) {jug.dinero-=pagado; deuda-=pagado; }
else {printf("nnttNo te llega el dinero"); getch();}
}

titulo(){
printf("nnn");
printf("tt _____ _____ _ _____ ___ n");
printf("tt| _ | | _ | | | / ___| / |n");
printf("tt| |_| | | | | | | | | |___ / /| |n");
printf("tt| _ | | | | | | | |___ | / / | |n");
printf("tt| |_| | | |_| | | |___ ___| | / / | |n");
printf("tt|_____/ |_____| |_____| /_____/ /_/ |_|n");
}

record(){
system("cls");
printf("nt __ _ _ _ _____ _ _ _____ n");
printf("t| \ | | | | | | | ____| | | / / / _ \ n");
printf("t| \| | | | | | | |__ | | / / | | | | n");
printf("t| |\ | | | | | | __| | | / / | | | | n");
printf("t| | \ | | |_| | | |___ | |/ / | |_| | n");
printf("t|_| \_| \_____/ |_____| |___/ \_____/ n");
printf("nnt _____ _____ _____ _____ _____ _____ n");
printf("t| _ \ | ____| / ___| / _ \ | _ \ | _ \ n");
printf("t| |_| | | |__ | | | | | | | |_| | | | | | n");
printf("t| _ / | __| | | | | | | | _ / | | | | n");
printf("t| | \ \ | |___ | |___ | |_| | | | \ \ | |_| | n");
printf("t|_| \_\ |_____| \_____| \_____/ |_| \_\ |_____/ n");
printf("nnntttHas conseguido acumular %d",jug.dinero);
getch();
}
guardar(){
printf("Tu clave es %d.%d.%d.%d", (jug.dinero-7)*2, (jug.acciones[1]+5)*2,(jug.acciones[2]*2)-5, (jug.acciones[3]-14)*3);
getch();}

cargar(){
int dineros, accioness1, accioness2, accioness3;
printf("nnttINTRODUCE LA CLAVE: ");
scanf("%d.%d.%d.%d",&dineros, &accioness1, &accioness2, &accioness3);
jug.dinero=(dineros+7)/2;
jug.acciones[1]=(accioness1-5)/2;
jug.acciones[2]=(accioness2/2)+5;
jug.acciones[3]=(accioness3+14)/3;
}

quiebra(char empresa[10]){
system("cls");
if(!strcmp(empresa,"tostadis")){
quebrado1=1;
printf(" _____ _____ _____ _____ ___ _____ _ _____ n");
printf("|_ _| / _ \ / ___/ |_ _| / | | _ \ | | / ___/ n");
printf(" | | | | | | | |___ | | / /| | | | | | | | | |___ n");
printf(" | | | | | | \___ \ | | / / | | | | | | | | \___ \ n");
printf(" | | | |_| | ___| | | | / / | | | |_| | | | ___| | n");
printf(" |_| \_____/ /_____/ |_| /_/ |_| |_____/ |_| /_____/ n"); }
if(!strcmp(empresa,"endesa")) {
quebrado2=1;
printf(" _____ __ _ _____ _____ _____ ___ n");
printf("| ____| | \ | | | _ \ | ____| / ___/ / | n");
printf("| |__ | \| | | | | | | |__ | |___ / /| | n");
printf("| __| | |\ | | | | | | __| \___ \ / / | | n");
printf("| |___ | | \ | | |_| | | |___ ___| | / / | | n");
printf("|_____| |_| \_| |_____/ |_____| /_____/ /_/ |_| n");}
if(!strcmp(empresa,"repsol")) {
quebrado3=1;
printf(" _____ _____ _____ _____ _____ _ n");
printf("| _ \ | ____| | _ \ / ___/ / _ \ | | n");
printf("| |_| | | |__ | |_| | | |___ | | | | | | n");
printf("| _ / | __| | ___/ \___ \ | | | | | | n");
printf("| | \ \ | |___ | | ___| | | |_| | | |___ n");
printf("|_| \_\ |_____| |_| /_____/ \_____/ |_____| n");
}
printf("nnn");
printf(" _____ _ _ _ _____ _____ _____ ___ n");
printf("/ _ \ | | | | | | | ____| | _ \ | _ \ / | n");
printf("| | | | | | | | | | | |__ | |_| | | |_| | / /| | n");
printf("| | | | | | | | | | | __| | _ | | _ / / / | | n");
printf("| |_| |_ | |_| | | | | |___ | |_| | | | \ \ / / | | n");
printf("\_______| \_____/ |_| |_____| |_____/ |_| \_\ /_/ |_| n");
getch();}


conseguir_dinero(){
int poker, loteria, inmobiliaria,advertencia,carreras_caballos;
system("cls");
printf("nnnttt1. Apuestasnnnttt2. Loteriannnttt3.Inmobiliaria");
opcion=getch();
opcion-=48;
system("cls");
switch(opcion){
case 1: if(!mostrado) {advertencia(); }
printf("nnnttt1. Carreras de caballosnnnttt2. Poker");
opcion=getch();
opcion-=48;
system("cls");
switch(opcion){
case 1: carreras_caballos(); break;
case 2: poker(); break;
}
break;
case 2: loteria(); break;

case 3: inmobiliaria(); break;

}
}
carreras_caballos(){
int caballo,r,i,primero=0,segundo=0,tercero=0,apuesta,uno=0,dos=0,tres=0,cuatro=0,cinco=0,seis=0,siete=0,ocho=0,nueve=0,diez=0;
do{
system("cls");
printf("ntttQue caballo quieres? (1-10): ");
scanf("%d",&caballo);
printf("ntttCuanto apuestas?: ");
scanf("%d",&apuesta);
if(apuesta*2>jug.dinero) {printf("ntttNo puedes cubrir la apuesta"); getch();}
if(caballo>10 || caballo<1) {printf("ntttEse caballo no participa"); getch();}
}while(apuesta*2>jug.dinero || caballo>10 || caballo<1);
jug.dinero-=apuesta;
primero=azar(1,10);
do{ segundo=azar(1,10); }while(segundo==primero);
do{ tercero=azar(1,10); }while(tercero==segundo || tercero==primero);
printf("n El Primer Puesto es para...tel caballo Numero %d",primero);
printf("n El Segundo Puesto es para...telcaballo Numero %d",segundo);
printf("n El Tercer Puesto es para...telcaballo Numero %d",tercero);
if(primero==caballo){printf("nn HAS GANADO, LLEGO EL PRIMERO, TU DINERO AUMENTARA EL CUADRUPLE DE LO APOSTADO"); jug.dinero+=apuesta*4; }
else if(segundo==caballo){printf("n HAS GANADO, LLEGO EL SEGUNDO, TU DINERO AUMENTARA EL DOBLE DE LO APOSTADO"); jug.dinero+=apuesta*2; }
else if(tercero==caballo){printf("n NO HAS GANADO, LLEGO EL TERCERO, SOLO BAJARA LO APOSTADO"); }
else {printf("n HAS PERDIDO, LLEGO TARDE, TU DINERO BAJARA EL DOBLE DE LO APOSTADO"); jug.dinero-=apuesta*2; }
printf("nntttAsi que te quedas con %d",jug.dinero);
getch();
}

poker(){
int apuesta,jugadores,bote,ganador,tu;
do{
system("cls");
printf("nnntttCuanto apuestas?: ");
scanf("%d",&apuesta);
printf("nntttCuantos jugadores hay? (1-10): ");
scanf("%d",&jugadores);
printf("nntttQue jugador eres tu?: ");
scanf("%d",&tu);
if(apuesta>jug.dinero) {printf("nttNo puedes cubrir la apuesta"); getch();}
if(jugadores>10 || jugadores<1) {printf("nttNumero de jugadores fuera de rango"); getch();}
if(tu>jugadores) {printf("nttNo es posible que seas el %d jugador donde solo hay %d",tu,jugadores); getch();}
}while(apuesta>jug.dinero || jugadores>10 || jugadores<1 || tu>jugadores);
bote=apuesta*jugadores;
jug.dinero-=apuesta;
printf("ntCada juador apuesta lo mismo que tu, asi que hay un bote de %d",bote);
printf("ntPulsa cualquier tecla para ver quien es el ganador");
getch();
ganador=azar(1,jugadores);
printf("ntGano el jugador %d",ganador);
if(ganador==tu) {printf("ntGANASTE TU, el bote era de %d",bote); jug.dinero+=bote; }
else {printf("ntBueno, no ganaste, pero a que consuela saber que otro estara feliz ;-) ?"); }
printf("nntTu dinero actual es de %d",jug.dinero);
getch();
}
int inmobiliaria(){}
int loteria(){
int sum1,sum2,boletos,porcentaje,ruleta;
char opcion,signo;
do{
system("cls");
printf("ntActualmente hay una venta de 99 999 cuponesnty cada cupon cuesta 150");
printf("nttTienes %d",jug.dinero);
printf("nnttCalculadora(multiplicar y dividir(s/n): ");
opcion=getch();
if(opcion=='s'){
do{
opcion='n';
printf("nnttCalculo: "); scanf("%d%c%d",&sum1,&signo,&sum2);
if(signo=='*') { printf("ntttResultado: %d",sum1*sum2); }
if(signo=='/') { printf("ntttResultado: %d",sum1/sum2); }
printf("nttUsar otra vez? (s/n): "); opcion=getch();
}while(opcion=='s');
}
printf("nnIntroduce el numero de boletos que quieres comprar: ");
scanf("%d",&boletos);
if(boletos*150>jug.dinero) {printf("nttNo te llega el dinero"); getch();}
}while(boletos*150>jug.dinero);
porcentaje=100*boletos/99999;
printf("nTienes el %d%% de posibilidades y %d boletos comprados",porcentaje,boletos);
printf("nPulsa cualquier tecla para ver si has ganado");
jug.dinero-=boletos*150;
getch();
ruleta=azar(1,100);
if(ruleta<=porcentaje){
jug.dinero+=14999850; printf("nntGANASTE!!!!!!!!!!!!! Ahora ganaste 14 999 850nttte quedas con %d",jug.dinero); }
else printf("nntNo ganaste, pero bueno, al menos otro si que gano, xA8verdad? ;-)");
getch();
}

azar(int bajo,int alto){
int r;
do{
r=rand();
}while(RANGO(r,bajo,alto));
return r;
}

int advertencia(){
system("cls");
printf("nnttHay que tener en cuenta que independientemente de si n");
printf("nttganas o pierdes la apuesta, el dinero descendera en lon");
printf("nttapostado, despues puedes ganar o perder, pero lo apostadon");
printf("nttttESTA PERDIDO!!nnttESTE MENSAJE NO SE VOLVERA A MOSTRAR!!!nn");
printf("nnnnttPulsa cualquier tecla para continuar");
getch();
system("cls");
mostrado=1;
}

revivir_empres(){
int pagar;
char quiero_pagar;
if(precio[1]!=0 && precio[2]!=0 && precio[3]!=0){
printf("nnnttNINGUNA EMPRES ESTA QUEBRADA"); getch(); }
else{
printf("nnttActualmente estan quebradas las siguientes empresasnnntt");
if(precio[1]==0) {printf("1. TOSTADISnntt"); }
if(precio[2]==0) {printf("2. ENDESAnntt"); }
if(precio[3]==0) {printf("3. REPSOLnntt"); }
opcion=getch();
opcion-=48;
system("cls");
switch(opcion){
case 1: pagar=azar(100000,1000000);
printf("nntPara revivir TOSTADIS NECESITAS POR LO MENOS %dntLo pagas?? (S/N): ",pagar);
quiero_pagar=getche();
if(quiero_pagar=='s' && jug.dinero>pagar) { printf("nnttPagado, TOSTADIS revivida"); jug.dinero-=pagar;
precio[1]=100; break;

case 2: pagar=azar(100000,1000000);
printf("nntPara revivir ENDESA NECESITAS POR LO MENOS %dntLo pagas?? (S/N): ",pagar);
quiero_pagar=getche();
if(quiero_pagar=='s' && jug.dinero>pagar) { printf("nnttPagado, ENDESA revivida"); jug.dinero-=pagar;
precio[1]=100; break;

case 3: pagar=azar(100000,1000000);
printf("nntPara revivir REPSOL NECESITAS POR LO MENOS %dntLo pagas?? (S/N): ",pagar);
quiero_pagar=getche();
if(quiero_pagar=='s' && jug.dinero>pagar) { printf("nnttPagado, REPSOL revivida"); jug.dinero-=pagar;
precio[1]=100; break;
} /*El del switch */

} /*El del else */
} /*El de la funcion */

Caiman
04 de Abril del 2005
Un tip, creo que te responderían más participantes si pones los errores y la línea donde aparecen al final del programa.

silvanha
04 de Abril del 2005
oye!.. te pirateaste este codigo vil y cruelmente!.. tiene errores bastante sencillos de corregir.. si tu hubieres hecho el programa te darias cuenta de que se trata!.. solo fijate el orden de tus funciones, donde las declaras, donde las estas mandando a llamar.. y cuales son las que deben o no retornar valores...
ojala te sea de ayuda!.. saluditos!.. bye!!

CodigoDavid
04 de Abril del 2005
Mariano Rajoy ahora se dedica a programar? no eras politico XDXD XD