elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Tengo un problema en un programa simple, no entiendo cual es.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Tengo un problema en un programa simple, no entiendo cual es.  (Leído 6,135 veces)
Anastacio

Desconectado Desconectado

Mensajes: 111



Ver Perfil
Tengo un problema en un programa simple, no entiendo cual es.
« en: 19 Enero 2012, 15:27 pm »

Hola a todos.

Estoy empezando a programar en C, con Dev C++. Hasta ahora, los programas simples me van bien, ya saben, programa que sume dos numeros, programas con operaciones basicas, etc.

Hace poco, hice este programa, y me parece que tiene un error de logica, porque por X razon la calculadora que hice, la resta no me anda bien, no me deja anotar el segundo entero y me da de resultado un numero negativo alto.

Les dejo el programa y disculpen mi estupidez de novato.


#include <stdio.h>
#include <conio.h>

int main()
{
    int opcion;
    int a;
    int b;
    int resultado;
   printf("Calculadora\n");
   printf("1.Suma\n");
   printf("2.Resta\n");
   printf("3.Multiplicacion\n");
   printf("4.Division\n");
   printf("5.Al cuadrado\n");
   scanf("%d",&opcion);
   
    switch(opcion)
   

   {
      case 1:
          printf("Suma\n");
          printf(" Elija el primer entero\n");
          scanf("%d",&a);
          printf("Elija el segundo entero\n");
          scanf("%d",&b);
          resultado = a+b;
          printf("Resultado\n%d",resultado);
          getch();
          break;
     
      case 2:
           resultado = a-b;
           printf("Resta\n");
           printf("Elija el primer entero\n");
           scanf("%d",&a);
           printf("Elija el segundo entero\n");
           scanf("&d",&b);
           printf("Resultado\n%d",resultado);
           getch();
           break;
           
       case 3:
            printf("Multiplicacion\n");
            printf("Elija el primer entero\n");
            scanf("%d",&a);
            printf("Elija el segundo entero\n");
            scanf("%d",&b);
            resultado = a*b;
            printf("Resultado\n%d",resultado);
            getch();
            break;
           
        case 4:
             printf("Division\n");
             printf("Elija el primer entero\n");     
             scanf("%d",&a);
             printf("Elija el segundo entero\n");
             scanf("%d",&b);
             resultado = a/b;
             printf("Resultado\n%d",resultado);
             getch();
             break;
       
        case 5:
             printf("Al cuadrado\n");
             printf("Elija el numero a potenciar\n");
             scanf("%d",&a);
             resultado = a*a;
             printf("Resultado\n",resultado);
             getch();
             break;
        }
}             
        Muchas gracias.






En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #1 en: 19 Enero 2012, 15:55 pm »

Hola

El problema es que restas los números antes de introducirlos. Tú tienes esto
Código
  1. case 2:
  2.           resultado = a-b; //Cuanto valen a y b?? Todavia no les has dado valor
  3.           printf("Resta\n");
  4.           printf("Elija el primer entero\n");
  5.           scanf("%d",&a);
  6.           printf("Elija el segundo entero\n");
  7.           scanf("&d",&b); //Debes sustituir el primer & por %
  8.           printf("Resultado\n%d",resultado);
  9.           getch();
  10.           break;
  11.  

y debería ser:
Código
  1. case 2:
  2.           printf("Resta\n");
  3.           printf("Elija el primer entero\n");
  4.           scanf("%d",&a);
  5.           printf("Elija el segundo entero\n");
  6.           scanf("%d",&b);
  7.           resultado = a-b;
  8.           printf("Resultado\n%d",resultado);
  9.           getch();
  10.           break;
  11.  

Por cierto, te vendría bien leerte esto

Saludos


« Última modificación: 19 Enero 2012, 15:58 pm por satu » En línea

Breakbeat como forma de vida
ttzz

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #2 en: 19 Enero 2012, 16:38 pm »

Así es amigo no te anda la resta porque la operación la ases antes. No puedes hacer una resta sin tener parámetros primero pides los valores a y b (como lo muestra satu en la respuesta)y luego ases la operación así como lo hiciste con las demás operaciones de la suma
En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #3 en: 19 Enero 2012, 16:51 pm »

Por cierto, te vendría bien leerte esto

Saludos

Estoy de acuerdo.

Así es amigo no te anda la resta porque la operación la ases antes. No puedes hacer una resta sin tener parámetros primero pides los valores a y b (como lo muestra satu en la respuesta)y luego ases la operación así como lo hiciste con las demás operaciones de la suma


¿Ases? ¡Ases de las alturas!



Perdona, es que me recordaste la canción  ;)

Saludos
« Última modificación: 19 Enero 2012, 16:56 pm por Xandrete » En línea

Anastacio

Desconectado Desconectado

Mensajes: 111



Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #4 en: 19 Enero 2012, 19:59 pm »

GRACIAS!!!!!!!!!!!!!!!

Os agradezco muchisimo amigos, estoy aprendiendo recien C, y soy bastante retardado.

Tengo un problema, diferente. Con Dev C++, mi compilador, quiero compilarlo, ahora que acomode eso, y trabaja como si fuera la version anterior de mi programita. Es decir, me sigue trabajando mal la resta.

Como hago para actualizarlo, y para que el tarado compilador se de cuenta de que el codigo fuente es diferente al anterior??

EI: juntando mensajes.

Quiero añadir mas y mas cosas a este programa. Estuve carcomiendome el cerebro por horas, pero, como harian para que pueda hacer potencias con cualquier exponente?
« Última modificación: 19 Enero 2012, 23:08 pm por Eternal Idol » En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #5 en: 19 Enero 2012, 20:47 pm »

¡Hola!

GRACIAS!!!!!!!!!!!!!!!

Os agradezco muchisimo amigos, estoy aprendiendo recien C, y soy bastante retardado.

Tengo un problema, diferente. Con Dev C++, mi compilador, quiero compilarlo, ahora que acomode eso, y trabaja como si fuera la version anterior de mi programita. Es decir, me sigue trabajando mal la resta.

Como hago para actualizarlo, y para que el tarado compilador se de cuenta de que el codigo fuente es diferente al anterior??

Antes que nada, quería aclarar que Dev-C++ no es un compilador, es un IDE. El compilador que usa es el de MinGW, que es un port para Windows del gcc.

¿Has comprobado si al guardar has renombrado el código? Si no es esto, borra todos los ejecutables y todos los ficheros objetos de la carpeta donde esté el código y vuelve a probar. Y asegúrate de que resultado=a-b esté efectivamente después del último scanf.

Quiero añadir mas y mas cosas a este programa. Estuve carcomiendome el cerebro por horas, pero, como harian para que pueda hacer potencias con cualquier exponente?

Depende. Con cualquier exponente, ¿te refieres a que el exponente puede ser real (por ejemplo, 23.16753)? ¿Exponente entero (1,-2,5,0,-10)? ¿O exponente estrictamente natural (1,2,3,4,5,6)? Puedes implementar una función tu mismo que calcule la potencia (hay diferencias dependiendo de cual de los tres casos anteriores consideres), a modo de ejercicio, o puedes usar las funciones de la librería math.h (me parece que la función para las potencias se llamaba pow, mírate la documentación para estar seguro).

Saludos.
« Última modificación: 19 Enero 2012, 20:55 pm por Xandrete » En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #6 en: 19 Enero 2012, 20:49 pm »

Hola

Para hacer potencias con cualquier exponente puedes usar esta función:

Código
  1. int potencia(int base, int exp)
  2. {
  3.    int i, resul = 1;
  4.  
  5.    for(i = 0; i < exp; i++)
  6.        resul *= base;
  7.  
  8.    return resul;
  9. }
  10.  

O también puedes usar la función pow() que está incluida en math.h que tiene muchas funciones matemáticas.

Saludos
En línea

Breakbeat como forma de vida
Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #7 en: 19 Enero 2012, 20:57 pm »

Hola

Para hacer potencias con cualquier exponente puedes usar esta función:

Código
  1. int potencia(int base, int exp)
  2. {
  3.    int i, resul = 1;
  4.  
  5.    for(i = 0; i < exp; i++)
  6.        resul *= base;
  7.  
  8.    return resul;
  9. }
  10.  

O también puedes usar la función pow() que está incluida en math.h que tiene muchas funciones matemáticas.

Saludos

Sip, eso te valdría para potencias naturales. Si quieres potencias enteras o reales, la implementación es distinta.
En línea

Anastacio

Desconectado Desconectado

Mensajes: 111



Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #8 en: 19 Enero 2012, 21:27 pm »

Pero for sale de programacion estructurada. No se podria hacer con programacion estructurada (do while, if then else,etc)?
En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #9 en: 20 Enero 2012, 00:24 am »

Pero for sale de programacion estructurada. No se podria hacer con programacion estructurada (do while, if then else,etc)?

¿?

¿Cómo que sale de programación estructurada? Un for no es más que una manera de abreviar un while. Si no te gusta el for, hazlo con un while.

Código
  1. for (i = 0; i < algo; ++i) {
  2.    /* codigo */
  3. }

es totalmente lo mismo que

Código
  1. i = 0;
  2. while(i < algo) {
  3.    /* codigo */
  4.    ++i;
  5. }

Pero vamos, no entiendo por qué dices que sale de programación estructurada. Es más, es recomendable usar bucles for en recorridos (como en este caso). Lo que sí que se aleja del concepto de programación estructurada son los goto, los exit y los return antes del final de una función. Aquí lo explican.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Otro problema en un programa, no entiendo porque.
Programación C/C++
Anastacio 5 2,757 Último mensaje 21 Enero 2012, 02:38 am
por Xandrete
Problema con un programa calculador de potencias simple, sin pow.
Programación C/C++
Anastacio 7 3,499 Último mensaje 16 Febrero 2012, 19:46 pm
por Anastacio
Problema programa simple: NULL
Java
salvagym 2 2,296 Último mensaje 24 Febrero 2013, 20:52 pm
por salvagym
[AYUDA] Soy nuevo en C y tengo un problema con un codigo de 12 lineas simple « 1 2 3 »
Programación C/C++
Noxware 20 8,919 Último mensaje 31 Octubre 2014, 18:26 pm
por leosansan
Tengo un simple problema con una definición
Hacking
UnaiiM 3 3,034 Último mensaje 26 Febrero 2020, 13:07 pm
por UnaiiM
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines