[?] Problemas con código en C++

Iniciado por MeCraniDOS, 24 Febrero 2013, 19:23 PM

0 Miembros y 1 Visitante están viendo este tema.

MeCraniDOS

Hola, quería preguntar que errores tienen estos códigos en C++, están escritos por mi, y aunque el compilador no me saca ningun fallo, me falla algo porque el programa rompe....  :( :(

Código (cpp) [Seleccionar]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct TJugadores
{
     
      char nombre[75];
      int puntuacion;      
     
};

int main(void)
{
   
   struct TJugadores name[6];
   int n;
   int punt_max;
   int punt_min;
   char mej_jug[75];
   char men_jug[75];
   
   
   for(n=0; n<=5; n++)
   
   {
           
   printf("\nEscribe el nombre del jugador %d: ", n+1);  //Nombre del jugador
   gets(name[n].nombre);
   fflush(stdin);
   printf("\nEscribe la puntuacion: ");                  //Puntuación del jugador
   scanf("%d",&name[n].puntuacion);
   fflush(stdin);
   
   }
   
   punt_max = name[0].puntuacion;
   strcpy (mej_jug, name[0].nombre);
   punt_min = name[0].puntuacion;
   strcpy (men_jug, name[0].nombre);  
   
   for(n=0; n<=5; n++)
       
   {
       
   if (name[n].puntuacion > punt_max)
   
   {
                           
   punt_max = name[n].puntuacion;
   strcpy (mej_jug, name[n].nombre);
   
   }
   
   if (name[n].puntuacion < punt_min)
   
   {
                           
   punt_min = name[n].puntuacion;
   strcpy (men_jug, name[n].nombre);
   
   }
   
   }
   
   printf("\n\nEl mejor resultado lo ha obtenido %s con una puntuacion de %d puntos.", punt_max, mej_jug);
   printf("\n\nEl peor resultado lo ha obtenido %s con una puntuacion de %d puntos.", punt_min, men_jug);
   
   fflush(stdin);
   printf("\nPresione Intro para finalizar...\n\n");
   getchar();
}


Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

void Medida(int Val, int Dist);
void Algoritmo(int Longitud, int Diametro);

int main(void)

{
   
   int ValLongA;
   int DistDiamA;
   
   int ValLongB;
   int DistDiamB;
   
   Medida(ValLongA, DistDiamA);
   
   ValLongA = ValLongB;
   DistDiamA = DistDiamB;
   
   Algoritmo(ValLongB, DistDiamB);
   
   
}

void Medida(int Val, int Dist)
{

    printf("\n\nIntroduzca la longitud de la circumerencia: ");
    scanf("%d", &Val);
    printf("\n\nIntroduzca el diametro de la circumerencia: ");
    scanf("%d", &Dist);    
   
   
}
void Algoritmo(int Longitud, int Diametro)
{
   
    float PI;
   
    PI = Longitud / Diametro;
   
    printf("\nEl valor de PI para esos valores es...\n\n");
    printf("%f", PI);
   
    fflush(stdin);
    printf("\nPresione Intro para finalizar...\n\n");
    getchar();    
   
   
}



Espero que puedan decirme que falla  :-\ :-\

Gracias y Saludos.
"La física es el sistema operativo del Universo"
     -- Steven R Garman

MeCraniDOS

En el ultimo se donde la he cagado, pero no se porque rompe, el valor de PI no me dará 3.14... porque estoy cogiendo dos valores aleatorios  :laugh: :laugh:, pero en teoría me tendría que salir el resultado de la división  :¬¬ :¬¬
"La física es el sistema operativo del Universo"
     -- Steven R Garman

naderST


fflush(stdin);


El comportamiento para esta llamada no está definido ya que fflush es ÚNICAMENTE para flujos de salida.

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

85


Tus códigos tienen ciertas faltas un tanto inocentes, pero se nota que estás aprendiendo, por eso te las arreglé para que funcionen tus programas.
Igualmente me puse a depurar algo que en realidad eran errores fáciles como ser un %d por un %s , pero eso dije faltas un tanto inocentes XD


#include <stdio.h>
#include <stdlib.h>

void Medida(int& Val, int& Dist);
void Algoritmo(int Longitud, int Diametro);

int main(void)
{
    int ValLongA;
    int DistDiamA;
    int ValLongB;
    int DistDiamB;
    Medida(ValLongA, DistDiamA);
    ValLongB = ValLongA;
    DistDiamB = DistDiamA;
    Algoritmo(ValLongB, DistDiamB);
return 0;
}

void Medida(int& Val, int& Dist)
{
     printf("\n\nIntroduzca la longitud de la circumerencia: ");
     scanf("%d", &Val);
     printf("\n\nIntroduzca el diametro de la circumerencia: ");
     scanf("%d", &Dist);
}

void Algoritmo(int Longitud, int Diametro)
{
     float _PI;
     _PI = (float)((float)Longitud/(float)Diametro);
     printf("\nEl valor de PI para esos valores es...\n\n");
     printf("PI: %f\n", _PI);
     fflush(stdin);
     printf("\nPresione Intro para finalizar...\n\n");
     getchar();
}




#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct TJugadores
{
char nombre[75];
    int puntuacion;
};

int main(void)
{
    struct TJugadores name[6];
    int n;
    int punt_max;
    int punt_min;
    char mej_jug[75];
    char men_jug[75];
const int cant=2;


    for(n=0; n<cant; n++)
    {
printf("\nEscribe el nombre del jugador %d: ", n+1);  //Nombre del jugador
gets(name[n].nombre);
fflush(stdin);
printf("\nEscribe la puntuacion: "); //Puntuación del jugador
scanf("%d",&name[n].puntuacion);
fflush(stdin);
    }

// MessageBox(0,0,0,0);

    punt_max = name[0].puntuacion;
    strcpy (mej_jug, name[0].nombre);
    punt_min = name[0].puntuacion;
    strcpy (men_jug, name[0].nombre);   

// MessageBox(0,0,0,0);

    for(n=0; n<cant; n++)
    {
if (name[n].puntuacion > punt_max)
{
punt_max = name[n].puntuacion;
strcpy (mej_jug, name[n].nombre);
}

if (name[n].puntuacion < punt_min)
{
punt_min = name[n].puntuacion;
strcpy (men_jug, name[n].nombre);
}
    }

// MessageBox(0,0,0,0);

    printf("\n\nEl mejor resultado lo ha obtenido %d con una puntuacion de %s puntos.", punt_max, mej_jug);
    printf("\n\nEl peor resultado lo ha obtenido %d con una puntuacion de %s puntos.", punt_min, men_jug);
    fflush(stdin);
    printf("\nPresione Intro para finalizar...\n\n");
    getchar();
return 0;
}


Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

MeCraniDOS

#4
Cita de: 85 en 24 Febrero 2013, 19:52 PM
Tus códigos tienen ciertas faltas un tanto inocentes, pero se nota que estás aprendiendo, por eso te las arreglé para que funcionen tus programas.

Si, hace poco mas de un mes que estoy con el C++, muchas gracias por las soluciones, ahora lo cambio e intentaré entender las modificaciones.

En el código de los jugadores, lo único que falle fue en la tontería que me dijiste...


Código (cpp) [Seleccionar]
    printf("\n\nEl mejor resultado lo ha obtenido %s con una puntuacion de %d puntos.", punt_max, mej_jug);
    printf("\n\nEl peor resultado lo ha obtenido %s con una puntuacion de %d puntos.", punt_min, men_jug);


Y tendría que ser asi...

Código (cpp) [Seleccionar]
    printf("\n\nEl mejor resultado lo ha obtenido %s con una puntuacion de %d puntos.", mej_jug, punt_max);
    printf("\n\nEl menor resultado lo ha obtenido %s con una puntuacion de %d puntos.", men_jug, punt_min);


Pero el de PI no entiendo la modificación.... Pero aun así gracias  ;-) ;-)
"La física es el sistema operativo del Universo"
     -- Steven R Garman

0xDani

Una pequeña aclaracion: eso es C, no C++.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

85

Cita de: MeCraniDOS en 24 Febrero 2013, 20:04 PM
Si, hace poco mas de un mes que estoy con el C++, muchas gracias por las soluciones, ahora lo cambio e intentaré entender las modificaciones.

En el código de los jugadores, lo único que falle fue en la tontería que me dijiste...


Código (cpp) [Seleccionar]
    printf("\n\nEl mejor resultado lo ha obtenido %s con una puntuacion de %d puntos.", punt_max, mej_jug);
    printf("\n\nEl peor resultado lo ha obtenido %s con una puntuacion de %d puntos.", punt_min, men_jug);


Y tendría que ser asi...

Código (cpp) [Seleccionar]
    printf("\n\nEl mejor resultado lo ha obtenido %s con una puntuacion de %d puntos.", mej_jug, punt_max);
    printf("\n\nEl menor resultado lo ha obtenido %s con una puntuacion de %d puntos.", men_jug, punt_min);


Pero el de PI no entiendo la modificación.... Pero aun así gracias  ;-) ;-)

Na en realidad, yo no te digo que son tonterías eso le pasa a cualquiera. Te conviene practicar la depuración de programas. No es necesario el windbg para hacerlo, se puede seguir la ejecución de un programa usando un mísero MessageBox o un printf+pause, cualquier cosa que te muestre por pantalla la situación del programa.

Con respecto al primer programa, estas dos asignaciones estaban invertidas y fueron arregladas..

Citarint main(void)
{
    int ValLongA;
    int DistDiamA;
    int ValLongB;
    int DistDiamB;
    Medida(ValLongA, DistDiamA);
    ValLongB = ValLongA;
    DistDiamB = DistDiamA;

    Algoritmo(ValLongB, DistDiamB);
   return 0;
}

Lo que también se hizo fue hacer que,
Código (cpp) [Seleccionar]
void Medida(int& Val, int& Dist)

reciba los parámetros por referencia, para poder modificarlos.

después esto,
Código (cpp) [Seleccionar]
_PI = (float)((float)Longitud/(float)Diametro);

olvidate , es sólo figurativo

hasta luego

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

MeCraniDOS


Vale Vale, muchas gracias, otra cosa, vi que pusiste esto:

Código (csharp) [Seleccionar]
// MessageBox(0,0,0,0);

Y que me dijiste esto:

CitarTe conviene practicar la depuración de programas. No es necesario el windbg para hacerlo, se puede seguir la ejecución de un programa usando un mísero MessageBox

Pero cuando pongo lo del MessageBox(0,0,0,0); dice que no esta declarado, de que Liberia es ese comando??

Saludos
  ;-)
"La física es el sistema operativo del Universo"
     -- Steven R Garman

leosansan


No te olvides de usar las etiquetas GeSHi con C++, aunque el código sea en C. Es más fácil de seguirlo con colores.


Saluditos!. ...

MeCraniDOS

Cita de: leosansan en 10 Marzo 2013, 15:44 PM

No te olvides de usar las etiquetas GeSHi con C++, aunque el código sea en C. Es más fácil de seguirlo con colores.


Están puestas en lo que yo he posteado... :)
"La física es el sistema operativo del Universo"
     -- Steven R Garman