• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • Conoce los Días Naranjas de PcComponentes: descuentos de hasta un 40% en tecnología. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

En primero de carrera y mi profe no me ayuda :(

paauuu.es

Nuevo
Registrado
11 Oct 2020
Mensajes
3
Puntos
1
Edad
22
Tengo un profesor que pasa de ayudarme con lo errores que me da porque dice que el día del examen no me los va a decir :D Entonces me preguntaba si me podriais ayudar con los errores, el programa consistes en que el usuario elija entre p (piedra), a (papel), t (tijera), la maquina saca uno aleatorio y se comprueba. Para ellos me obligan hacer tres modulos apuUsu, apuMaquina, comprobar. Cuando empecé los dos primeros creo que me funcionaban bien pero luego el último lo hice y me dan errores raros o que al menos mi cabeza de primero de ingenieria informatica no llega a entender. Os dejo el programa. Muchas gracias <3

programacionModular.cpp
 
Dejo esto para que lo vea los compañeros expertos en C
PHP:
#include<iostream>
#include <stdlib.h>

using namespace std;

char apuUsu();
char apuMaquina();
int comprobar();

int main() {
    
    char apuestaUsuario;
    char apuestaMaquina;
    int comprueba;
    char respuesta;
        
    
    cout<<"******PIEDRA PAPEL TIJERA******"<<endl;
    cout<<"*******************************"<<endl;
    cout<<"¿Piedra, papel o tijera? (p/a/t)"<<endl;
        
    apuestaUsuario = apuUsu();
    apuestaMaquina= apuMaquina();
    comprueba= comprobar();
    switch(comprobar){
        case 1:{
        cout<<"Ha ganado la maquina :("<<endl;    
        }
        case 2:{
            cout<<"Ha ganado el usuario. ENHORABUENA!"<<endl;
        }
    }   
    cout<<"¿Quiere volver a jugar? (s/n)"<<endl;
    cin>>respuesta;
    switch(respuesta){
        case 's':
        case 'S':
        {
            apuestaUsuario = apuUsu();
            apuestaMaquina= apuMaquina();
            comprueba= comprobar();
        }
        default:
        cout<<"Hasta la próxima"<<endl;
    }

char apuUsu()
{
    char eleccionUsu;
     cin>>eleccionUsu;
    switch (eleccionUsu){
     
        case'a':
        {
            cout<<"Has elegido papel"<<endl;
            break;
        }
         case 'p':
        {
            cout<<"Has elegido piedra"<<endl;
            break;
        }
         case 't':
        {
            cout<<"Has elegido tijeras"<<endl;
            break;
        }
        default:
        {
            cout<<"ERROR: La letra no es valida"<<endl;
            break;
        }
    
    
    }
return eleccionUsu;
    
}
char apuMaquina(){
    int caso;
    char eleccionMaquina;
    srand(time(NULL));
    caso= 1+ rand() %4;
    switch (caso){
        case 1: 
        {
            cout<<"La maquina ha sacado piedra"<<endl;
            eleccionMaquina='p';
            break;
        }
        case 2: 
        {
            cout<<"La maquina ha sacado papel"<<endl;
            eleccionMaquina='a';
            break;
        }
        case 3: 
        {
            cout<<"La maquina ha sacado piedra"<<endl;
            eleccionMaquina='p';
            break;
        }
    }

    
    
    return eleccionMaquina;
}

int comprobar(char usu, char maquina){
    
        int ganadaUsu=0;
        int ganadaMaquina=0;
        char respuesta;
        int devolver;
        do{
            cout<<"Maquina: "<<ganadaMaquina<<endl<<"Usuario: "<<ganadaUsu<<endl;
            if(usu==maquina)
            {
                cout<<"Hay un EMPATE!"<<endl;
            }
            else if(usu=='a' && maquina=='p')
            {
                cout<<"Ha ganado un punto el usuario"<<endl;
                ganadaUsu++;
            }
            else if(usu=='p' && maquina=='t')
            {
            cout<<"Ha ganado un punto el usuario"<<endl;
            ganadaUsu++;
            }
            else if(usu=='t' && maquina=='a')
            {
            cout<<"Ha ganado un punto el usuario"<<endl;
            ganadaUsu++;
            }  
            else if(usu=='p' && maquina=='a')
            {
                cout<<"Ha ganado un punto la maquina"<<endl;
                ganadaMaquina++;
            }
            else if(usu=='t' && maquina=='p')
            {
            cout<<"Ha ganado un punto el usuario"<<endl;
            ganadaMaquina++;
            }
            else if(usu=='a' && maquina=='t')
            {
            cout<<"Ha ganado un punto el usuario"<<endl;
            ganadaMaquina++;
            }          
        }
        while(ganadaUsu!=2 || ganadaMaquina!=2);
        if (ganadaUsu==2)
        {
            return 2;
        }
        else if(ganadaMaquina==2)
        {
            return 1;
        }
        
        
        
    
    
}
 
En cierto modo es normal que tu profesor no te ayude con esos fallos, ya que los mensajes que me devuelve el compilador (g++ 8.3.0) son bastante explicativos y te ayudan a mirar en la dirección correcta. Tienes 3-4 fallos muy básicos que pueden ser resueltos revisando el código y leyendo lo que dice el compilador.

Otro fallo que tienes y que es fuente de mensajes algo más crípticos lo puedes resolver tabulando correctamente el código y siguiendo siempre el mismo estilo de posicionamiento de las llaves. Vamos, que te falta cerrar alguna llave.

¿Puedes pegar aquí la lista de mensajes que obtienes del compilador y los vamos repasando?
 
En cierto modo es normal que tu profesor no te ayude con esos fallos, ya que los mensajes que me devuelve el compilador (g++ 8.3.0) son bastante explicativos y te ayudan a mirar en la dirección correcta. Tienes 3-4 fallos muy básicos que pueden ser resueltos revisando el código y leyendo lo que dice el compilador.

Otro fallo que tienes y que es fuente de mensajes algo más crípticos lo puedes resolver tabulando correctamente el código y siguiendo siempre el mismo estilo de posicionamiento de las llaves. Vamos, que te falta cerrar alguna llave.

¿Puedes pegar aquí la lista de mensajes que obtienes del compilador y los vamos repasando?
Buenas noches Josef, debes entender que llevo dos meses programando y vamos poco a poco y que fallos que seguramente hayas cometido mil veces tu cuando estabas comenzando ahora te parezcan faciles ya que seras un profesional. Como he dicho yo he empezado prácticamente hace poco y me cuesta ver mis errores por eso pido ayuda y mi profesor no quiere ayudar porque no quiere que haya desilgualdades con las notas porque si yo le pregunto tendré mas nota que otros, obviamente, y en el examen tampoco me va a poder ayudar. Agradezco el tiempo que le has echado mirando al programa, pero te agradecería que si ves a alguien que esta empezando no les digas algo parecido a lo que me has dicho a mi al principio porque no soy una experta, ojala serlo, ya que al comentarle el problema a un compañero que ya había programado anteriormente me ha hecho un cumplido que iba bien y lo comprendía bien para no haber programado nunca y que le he sorprendido y luego he visto tu comentario y me he desmotivado un poco sinceramente, os pido que como profesionales que soy tengais paciencia con nosotros los aprendices que aún no hemos adquirido la capacidad de ver rapidamente y solucionar esos fallos, lo digo en general que al menos en mi universidad no entienden que estamos aprendiendo y no tenemos su conocimiento y nos exigen demasiado.

Y bueno para que lo supieses, se que puedo ver donde estan los errores, el problema es que no los encuentro porque me ponia a revisar las llaves y no veía el fallo seguramente un despiste como muchos otros, he intentado solucionarlos y por eso he venido a pedir ayuda por qué no los identificaba no para que alguien me dijese que son fallos básicos que los puedo leer.

De verdad que no quiero que suene que soy una desagradecida ni nada pero hay veces que es mejor callarse las opiniones en carreras tan duras porque tengo a muchos profesores que son iguales lo único que hacen con esas palabras son desmotivarte y hacerte pensar que no vales porque no tienes los suficientes conocimientos y estoy cansada de que me traten así porque quiero aprender pero no ayudan diciendo que eso es básico como si debiera de saberlo cuando he empezado hace nada y eso está haciendo que me desmotive una carrera que me gusta mucho. Lo digo para que reflexiones que las palabras pueden cambiar mucho a otras personas y si tienes una empresa o un equipo a tu cargo a lo mejor parafrasear tus frases pueden ayudar a su actitud en el trabajo.

Despúes de comentarte esto, muchas gracias por tu preocupación al final un compañero me ha ayudado con calma y ha logrado que me funcione todo y ha logrado explicarmelo para que lo entienda. Pero de verdad muchas gracias por haber intentado ayudarme lo he valorado mucho y se que el comentario no lo has hecho con mala intencion ni nada al igual que yo no quiero que suene mal solo que reflexiones que a veces las palabras duelen dependiendo de la situación de cada uno.

Un saludo.
 
Me alegro de que hayas conseguido que funcione, pero lamento profundamente haberte desmotivado, porque... Nada más lejos de mi intención.

Entiendo lo que dices. Empezar en esto es difícil y si además parece que todo el mundo te lo quiere poner más difícil aún, apaga y vámonos. La motivación en este caso es super importante. Por ello, te pido disculpas por haber dado una estupenda mala contestación.

No obstante, me gustaría explicarte por qué he respondido de ese modo.

El hecho de enfrentarte a un problema y no poderlo resolver fácilmente forma parte del día a día del desarrollo de software. La profesión, básicamente, consiste en resolver problemas. La informática hoy en día es estructural: todo funciona con software. Una explotación agrícola, una gestoría, un hospital, un estudio de diseño, un coche... Y el software funciona sobre una plataforma tecnológica: sistemas operativos, servidores, hardware, redes, seguridad, bases de datos...

Quizá el día de mañana trabajes desarrollando software para hospitales, o software que manipula imágenes, o juegos, o librerías para otros desarrolladores, o aplicaciones web, o software para maquinaria industrial... Saberlo todo es imposible. El propósito de tus estudios no es adquirir todos esos conocimientos. No es posible.

El propósito de tus estudios es adquirir una serie de competencias que te capaciten para resolver problemas. Aunque muchas veces contarás con alguien que te ayudará en cuanto al conocimiento específico (ejemplo, un contable si tienes que desarrollar software para una gestoría), muchas veces el cómo implementar técnicamente los requisitos será también un problema en si mismo.

Lo que sepas en un momento puntual no es muy importante. Por ello, nadie está hablando de si vales o no para esto. Yo no he pensado en eso ni durante un nanosegundo. Y tus profesores probablemente tampoco. Lo que es importante es... Vale, tienes un problema. ¿Cómo puedes afrontarlo? ¿Qué método vas a seguir? ¿Por dónde empiezas? Eso sí es importante. Y mucho.

Por eso te dije que tus errores eran muy básicos: tú ya tenías el conocimiento suficiente como para resolverlos por tu cuenta. En el código que escribiste ya demostraste saber lo necesario. Sólo necesitabas fijarte más 👌 en ningún momento quise decir que no valieras ni tampoco estaba juzgándote. Te pido disculpas si pareció que lo estaba haciendo.

También te pedí que compartieras los errores que devolvía el compilador. Esta parte es vital para poderte ayudar. Tu compañero probablemente compiló, vio los errores y en base a eso fue avanzando, ¿verdad? Utilizar las herramientas a tu alcance para solucionar los problemas es importante. Si no entiendes todos los mensajes del compilador, ¡no pasa nada! Has hecho bien en preguntar aunque yo no haya sabido motivarte.

Siento haberte desmotivado con mi comentario. No es lo que pretendía, y me gustaría animarte a que participaras en el foro compartiendo tus dudas y problemas. Intentaré echarte un cable y seguro que otros compañeros lo harán también.
 
Arriba