Programa en c++ ,ayuda

Iniciado por DadReX, 19 Junio 2016, 09:34 AM

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

DadReX

Dev c++ no se porque pero compila y no ejecuta el programa no sale la ventana de ejecución pero con otros programas que copie por internet sí , quiero saber cual es el problema (soy un principiante, empecé a aprender hace unos días), este es el programa:

//problema para poner la hora y que el porgrama sume un segundo y sepa si la hora es correcta
#include <stdio.h>
int main(){
   
   int h;
   int m;
   int s;
   
   printf("Introduce la hora");
   scanf("%i",&h);
   printf("Introduce los minutos");
   scanf("%i",&m);
   printf("Introduce los segundos");
   scanf("%i",&s);
   
   if(h>23 || m>59 || s>59){
      
      printf("La hora introducida es incorrecta");
   }
   else if(s==59){
      s=0;
      m=m+1;
      if(m=60){
         m=0;
          h=h+1;
          if(h==24){
             h=0;
         }
         
         
         
         
         
      }
      prinf("La hora es : %i:%i:%i",h,m,s);
   }
   else {
      s=s+1;
            prinf("La hora es : %i:%i:%i",h,m,s);

      
   }
   sytem("pause");
   return 0;
      
}

avesudra

#1
Hola DadReX, bienvenido al foro.

Lo primero de todo Dev C++ no es un compilador, es un entorno de desarrollo. Lo segundo NO copies código de internet, así NO se aprende. Lo tercero si quieres un entorno de desarrollo decente deja Dev C++ y usa Codeblocks, aunque la mejor manera de aprender es que uses un editor de texto plano con algunos complementos como Emacs, Vim o similares.

Por último si te hubieses detenido a leer los errores del compilador, que no lo has hecho, sino no estarías preguntando (o al menos sabrías dónde falla) , habrías visto que:

error: 'prinf' was not declared in this scope|
error: 'sytem' was not declared in this scope|


Pues tú me dirás, más claro agua, prinf no está declarado en este ámbito y sytem tampoco. ¿Quizás es porque no se llaman así? Además si hubieses leído el código línea por línea te habrías dado cuenta de que los primeros printf están bien y luego ya no, y que sytem no es una función. Evidentemente una vez lo pongas todo bien te va a decir lo mismo de system, porque está declarada en stdlib.h, fichero de cabecera que no has incluido, pero me parece que te estoy hablando en chino. Tienes que poner:
Código (cpp) [Seleccionar]
#include <stdlib.h>

Te aconsejo que no vuelvas a copiar, te pilles un libro y aprendas bien, porque si sigues copiando y pegando lo único que vas a aprender es a eso precisamente, a copiar y pegar.

PD: Y cuando vayas a publicar código hazlo entre las etiquetas GeSHi, que están para que se coloree, tal que así:
Código (cpp) [Seleccionar]
int main(int argc, char **argv)
{

}


Un saludo.
Regístrate en

DadReX

#2
vale ya va gracias ... estoy aprendiendo con un tipo que se llama empieza a programar en youtube una vez que termine sus videos con que sigo? , solo copié codigo de internet para saber si el codigo si que lo compilaba y ejecutaba y no se porque dev c++ esta mal

avesudra

#3
Cita de: DadReX en 19 Junio 2016, 11:27 AM
vale ya va gracias ... estoy aprendiendo con un tipo que se llama empieza a programar en youtube una vez que termine sus videos con que sigo? , solo copié codigo de internet para saber si el codigo si que lo compilaba y ejecutaba y no se porque dev c++ esta mal

Hola de nuevo, no me tomes por duro, solo quiero que si aprendas lo hagas bien y el método de copiar y pegar no es bueno. Puedes seguir con los videos pero compleméntalo de algún libro como el de Deitel&Deitel o alguno reconocido ¡hay muchos! Esos videos están bien, pero ve poquito a poco. Si vas a copiar algo solo copia lo que entiendas, si no lo entiendes, lo pones aquí y te ayudaremos.

Pues mira, el entorno de desarrollo Dev C++ está muy desactualizado y obsoleto, no es bueno para empezar. Yo no te voy a decir que compiles por consola (al final es lo mejor) ya que al principio se hace pesado, pero si te recomiendo Codeblocks, o alguno de Microsoft, algunos foreros de por aquí han tenido problemas con Dev C++.

Un saludo.
Regístrate en

DadReX

me podrias decir como hago para poner que de una linea vaya a otra sin coger codigo de por medio ? , no se si me explico espero que lo entiendas , antes de c++ práctique un poco visualbasic y html y en visualbasic era goto para hacer eso aquí no se.

avesudra

Cita de: DadReX en 19 Junio 2016, 11:46 AM
me podrias decir como hago para poner que de una linea vaya a otra sin coger codigo de por medio ? , no se si me explico espero que lo entiendas , antes de c++ práctique un poco visualbasic y html y en visualbasic era goto para hacer eso aquí no se.

En el paradigma de programación estructurada tienes que cambiar el chip, usar goto no es aconsejable (porque te cargas la estructuración del código). Tienes que ingeniártelas para poder hacer lo que quieres, normalmente el comportamiento de goto lo puedes simular con un bucle.

Ya te digo, sigue avanzando poquito a poco, verás que puedes hacer todo sin usar goto, aunque para ti ahora parezca imprescindible.
Regístrate en

DadReX

ya he cambiado el código y demás puedes testear si funciona bien??

//problema para poner la hora y que el porgrama sume un segundo y sepa si la hora es correcta
#include <stdio.h>
int main(){
   
   int h;
   int m;
   int s;
   
   printf("Introduce la hora:");
   scanf("%i",&h);
   printf("Introduce los minutos:");
   scanf("%i",&m);
   printf("Introduce los segundos:");
   scanf("%i",&s);
   
   if(s<=59&&m<=59&&s<=59){
   
    if(s==59){
      s=00;
      m=m+1;
      
   }
   else{
      s=s+1;
   
      
   
   }
       if(m==60){
          m=00;
          h=h+1;
          }
            if (h==24){
               h=00;
            }   
            
            if(h>23 || m>59 || s>59){
      
   
            
           printf("La hora introducida es incorrecta\n");
                    }
      printf("La hora es : %i:%i:%i\n",h,m,s);
   
   }

         
      
   

   system("pause");
   return 0;
}

avesudra

#7
Te falta el stdlib.h, puedes probarlo tú también eh. Varias puntualizaciones:

   1.- Compruebas dos veces que [latex]s \leq 59[/latex], tú me diras para qué (linea 16)
   2.- Tu programa no comprueba que introduzca valores fuera de los rangos establecidos(negativos) ¿Qué pasa si me da por introducir la hora -24050? ¿O el minuto -20? (Me refiero a la línea 37)

Y usa GeSHi por favor, no ves que queda feísimo:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h> // --> faltaba esto
int main()
{
   int h;
   int m;
   int s;

   printf("Introduce la hora:");
   scanf("%i",&h);
   printf("Introduce los minutos:");
   scanf("%i",&m);
   printf("Introduce los segundos:");
   scanf("%i",&s);

   if(s<=59 && m<=59 /* && s<=59 */) // Eso que esta entre comentarios es redundante, ya se comprueba en la primera condicion
   {
       if(s==59)
       {
           s=00;
           m=m+1;
       }
       else
       {
           s=s+1;
       }
       if(m==60)
       {
           m=00;
           h=h+1;
       }
       if (h==24)
       {
           h=00;
       }

       if(h>23 || m>59 || s>59)
       {
           printf("La hora introducida es incorrecta\n");
       }
       printf("La hora es : %i:%i:%i\n",h,m,s);
   }
   system("pause");
   return 0;
}
Regístrate en

DadReX

vale arreglado gracias , jajaj siento estos fallos pero empecé hacer 3 días , voy a mi ritmo