Bueno, pues ya habéis visto que yo solo aprendo haciendo calculadoras xD.
Pues el caso es que me dio por usar la funcion strlen de string.h/cstring para que el programa sepa que hacer con los datos, pero la posteo porque tengo unas preguntillas...
Code:
//test para dar uso a las funciones de la libreria de cString
#include <iostream>
#include <cstring>
int suma(int a, int b)
{
return a + b;
}
int resta(int a, int b)
{
return a - b;
}
int multiplicar(int a, int b)
{
return a * b;
}
int dividir(int a, int b)
{
return a / b;
}
//Aquí son todas variables globales para poder facilitar lo máximo posible los datos de cálculo
int tester;
char cadena[10];
int test2 = 3;
int main(int a, int b)
{
while (test2 == 3)
{
std::cout << "\n" << "Introduce la operación que quieres realizar:";
std::cin >> cadena;
tester = strlen(cadena);
std::cout << "\n" << "Introduce el primer elemento: ";
std::cin >> a;
std::cout << "\n" << "Ahora introduce el segundo elemento: ";
std::cin >> b;
switch(tester){
case 5:
if (cadena[0] == 's')
{
tester =suma(a,b);
}
break;
case 7:
tester =dividir(a,b);break;
case 11:
tester = multiplicar(a,b);break;
};
if (cadena[0] == 'r')
{
tester =resta(a, b);
}
std::cout << "\n" << "El resultado de la operacion es: " << tester;
}
return 0;
}
Lo de arriba me funciona de PM, pero cuando en un principio la puse asi:
//test para dar uso a las funciones de la libreria de c String
#include <iostream>
#include <cstring>
int suma(int a, int b)
{
return a + b;
}
int resta(int a, int b)
{
return a - b;
}
int multiplicar(int a, int b)
{
return a * b;
}
int dividir(int a, int b)
{
return a / b;
}
//Aquí son todas variables globales para poder facilitar lo máximo posible los datos de cálculo
int tester;
char cadena[10];
int test2 = 3;
int main(int a, int b)
{
while (test2 == 3)
{
std::cout << "\n" << "Introduce la operación que quieres realizar:";
std::cin >> cadena;
tester = strlen(cadena);
std::cout << "\n" << "Introduce el primer elemento: ";
std::cin >> a;
std::cout << "\n" << "Ahora introduce el segundo elemento: ";
std::cin >> b;
switch(tester){
case 5:
if (cadena[0] == 's')
{
tester =suma(a,b);
}
else if (cadena[0] == 'r')
{
tester =resta(a, b);
}break;
case 7:
tester =dividir(a,b);break;
case 11:
tester = multiplicar(a,b);break;
};
std::cout << "\n" << "El resultado de la operacion es: " << tester;
}
return 0;
}
El cambio esta en que la condicion de la resta esta ahora en el switch, y asi siempre que ponia "restar" en el programa, me devolvia cualquier cosa, ni siquiera me devolvia una multiplicacion, suma o division, sino cualquier numero, creo que 6 casi siempre o siempre.
-¿Por que pasa esto?
-¿Am, y puedo poner un while sin condicion?¿O si lo quiero infinito sin condicion no me queda otra que el bucle for?
Salu2 y gracias