elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:05  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

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

Desconectado Desconectado

Mensajes: 100



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

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: 263

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 »

Hola

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

y debería ser:
Código
case 2:
          printf("Resta\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;
 

Por cierto, te vendría bien leerte esto

Saludos


« Última modificación: 19 Enero 2012, 15:58 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 »

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: 195



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

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 por Xandrete » En línea
Anastacio

Desconectado Desconectado

Mensajes: 100



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

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 por Eternal Idol » En línea

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

Desconectado Desconectado

Mensajes: 195



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

¡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 por Xandrete » En línea
satu

Desconectado Desconectado

Mensajes: 263

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 »

Hola

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

Código
int potencia(int base, int exp)
{
   int i, resul = 1;
 
   for(i = 0; i < exp; i++)
       resul *= base;
 
   return resul;
}
 

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: 195



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

Hola

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

Código
int potencia(int base, int exp)
{
   int i, resul = 1;
 
   for(i = 0; i < exp; i++)
       resul *= base;
 
   return resul;
}
 

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: 100



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

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: 195



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

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
for (i = 0; i < algo; ++i) {
   /* codigo */
}

es totalmente lo mismo que

Código
i = 0;
while(i < algo) {
   /* codigo */
   ++i;
}

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
Anastacio

Desconectado Desconectado

Mensajes: 100



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

Código:
i = 0;
while(i < algo) {
    /* codigo */
    ++i;
}

para que es el ++i???
En línea

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


Desconectado Desconectado

Mensajes: 382


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

Código:
i = 0;
while(i < algo) {
    /* codigo */
    ++i;
}

para que es el ++i?
Para incrementar el contador (la variable "i") en una unidad.

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Anastacio

Desconectado Desconectado

Mensajes: 100



Ver Perfil
Re: Tengo un problema en un programa simple, no entiendo cual es.
« Respuesta #12 en: 20 Enero 2012, 22:15 »

A, gracias!!!!
En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines