PDA

Ver la versión completa : Juntar dos codigos C++



3m.8>(9/3)
05-09-2010, 13:00
Buenas, les presento mi duda en programación.

Hace ya unos cuantos meses empece a aprender algo de programación en C++ (solo un par de semanas aprendiendo algo). El caso es que se me ha ocurrido juntar dos códigos para hacer una especie de juego de números en la consola, se trata de un randon y una calculadora.

El objetivo de la unión de estos dos códigos es hacer un juego estilo, acierta la incógnita, donde se nos dará lo siguiente valor+acción+incógnita=valor y nos pedirá la incógnita, pondremos una valor y nos dirá si hemos acertado o no pongo un par de ejemplos:

(pantalla) 2*?=8 ¿que valor tiene la incognita?
(pulsamos en el teclado) 4
(pantalla) correcto.

(pantalla) 5-?=3 ¿que valor tiene la incógnita?
(pulsamos en el teclado) 3
(pantalla) te has equivocado, el valor era 2

Código fuente de la calculadora.

#include <iostream>
#include <ctype.h> //Para usar la funcion toupper()

#define SI 'Y'

using namespace std;

int main(){
float a;
int eleccion;
int menu(float a);

cout<<"---------------------------------------------------------------<<endl;
cout<<"| Calculadora basica en C++|"<<endl;
cout<<"---------------------------------------------------------------<<endl;
while(1){
cout<<"Introducir un numero mayor a 5 o menor a 1 para finalizar el programa"<<endl;
cout<<"\n\nIntroduce el primer valor: ";
cin>>a;
cout<<"\n\n";
eleccion = menu(a);
if (eleccion == 0) break;
}

return 0;
}

int menu(float a){
int accion, nada, i = 0;
char eleccion;
float b, resultado;
float computarresultado(int accion, float a, float b);

while (1){
cout<<"\n\nTipos de acciones"<<endl;
cout<<"- 1.)Sumar"<<endl;
cout<<"- 2.)Restar"<<endl;
cout<<"- 3.)Multiplicar"<<endl;
cout<<"- 4.)Dividir"<<endl;
cout<<"- 5.)Resultado"<<endl;
cout<<"-Numero fuera de rango para parar"<<endl;
cout<<"\nSeleccione la accion a realizar: ";
cin>>accion;
if (accion == 5){
cout<<"\n\nEl resultado es"<<resultado<<endl;
cout<<"\nDesea seguir computando calculos? (Y/N): ";
cin>>eleccion;
cout<<"\n\n";
if (toupper(eleccion) == SI)
return(eleccion = 1);
else
accion == 111;
}
if (accion < 1 || accion > 5){
cout<<"\n\nFin del programa. Gracias por utilizarme"<<endl;
cin>>nada;
return 0;
}
cout<<"\nIntroduce el segundo valor"<<endl;
cin>>b;
if (i == 0) {
resultado = computarresultado(accion, a, b);
i = 1;
}
else
resultado = computarresultado(accion, resultado, b);
cout<<"\nEl resultado actual es: "<<resultado<<endl;
}
return 0;
}


float computarresultado(int accion, float a, float b){
switch(accion){
case 1:
return(a + b);
case 2:
return(a - b);
case 3:
return(a * b);
case 4:
if (b == 0){
cout<<"\n\nNo se puede dividir entre 0, por favor, vuelva a intentarlo"<<endl;
return(a);
}
return(a / b);
}
}
Código fuente del randon.

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
int i;

srand((unsigned)time(NULL));

for (i=0; i<2; i++) {
cout << (rand()%100) << endl;
}
return 0;
}

Marchi
06-09-2010, 02:00
Bueno.... cual es la duda?

gondar_f
06-09-2010, 17:40
lo que tienes que hacer es dejar un solo main y el otro combertirlo en una función y listo.

3m.8>(9/3)
06-09-2010, 17:44
Como consigo asignar los valores del randon a los valores que pide la calculadora

hystd
07-09-2010, 19:35
haciendo el operador "mod"... es decir, dividir entre el valor máximo dentro del rango de números aleatorios y quedarte con el resto de la división, esto es:

rand() % RANGO_MAXIMO;

Si te fijas en el código, se hace:

cout << (rand()%100) << endl;

Que quiere decir, que el resultado estará comprendido entre 0 y 99.

Sustituye el 100 por el valor que quieras, y significará que el resultado del número aleatorio obtenido será entre 0 y ese valor.

Un saludo.

3m.8>(9/3)
07-09-2010, 20:59
Sustituye el 100 por el valor que quieras, y significará que el resultado del número aleatorio obtenido será entre 0 y ese valor.

Tendré que usar dos randon, uno para los valores entre 0 y 99 y otro que me de valores entre 0 y 3 para generar la acción aleatoria (ademas de hacer un pequeño cambio en el código de la calculadora)

Gracias ;)