Autor Tema: Duda en un menu  (Leído 3653 veces)

Desconectado Tania

  • Junior Member
  • **
  • Mensajes: 15
    • http://www.urbannoises.com
Duda en un menu
« en: 09 de Mayo de 2005, 08:42:25 pm »
Hola!!

Bueno, yo sigo dando la lata con mis dudas (esto os pasa por darme permiso :P) Esto en una practica que me trae loca y el caso es que no se que fallo puede tener... (que lo tendra, pero no lo veo). Dice asi: "Crearun menu a traves de programa que permita, haciendo uso de funciones, elegir y realizar cada una de las siguientes opciones sobre dos numeros que se han de solicitar previamente: a) Mayor. b) Resta (resta al mayor el menor). c) media. d) Potencia (eleva el menor al mayor).

Lo tengo todo hecho, mi codigo es el siguiente:

#include <stdio.h>
#include <math.h>

void mayor ();
void resta ();
void media ();
void potencia ();

void main ()
{

    int op;
    printf ("MENU DE OPCIONES DISPONIBLES\n");
    printf ("============================\n");
    printf ("(1) MAYOR DE LOS NUMEROS\n");
    printf ("(2) RESTA DE LOS NUMEROS\n");
    printf ("(3) MEDIA DE LOS NUMEROS\n");
    printf ("(4) POTENCIA DE LOS NUMEROS\n");
    printf ("Elige la opcion deseada\n");
    printf (" ");
    scanf ("%d",&op);

    switch (op)
     {
    case 1: mayor();
       break;
    case 2: resta();
       break;
    case 3: media();
       break;
    case 4: potencia();
       break;
     }
}

void mayor()
{
int a,b;
printf ("Introduce dos numeros: \n");
scanf ("%d","%d",&a,&b);
   if (a>b)
      printf ("El numero mayor es %d",a);
   else
      printf ("El numero mayor es %d",b);
}

void resta()
{
int a,b,resto=0;
printf ("Introduce dos numeros: \n");
scanf ("%d","%d",&a,&b);
   if (a>b)
      {
      resto=a-b;
      printf ("El resultado de restar %d de %d es %d",b,a,resto);
      }
   else
      {
      resto=b-a;
      printf ("El resultado de restar %d de %d es %d",a,b,resto);
      }
}

void media()
{
int a,b,suma=0,media=0;
printf ("Introduce dos numeros: \n");
scanf ("%d","%d",&a,&b);
suma=a+b;
media=suma/2;
printf ("La media de los dos numeros es %d\n",media);
}

void potencia()
{
float a,b,potencia=0;
printf ("Introduce dos numeros: \n");
scanf ("%2f","%2f",&a,&b);
   if (a>b)
      {
      potencia=pow(b,a);
      printf ("El resultado de elevar %2f a la %2f es %2f",b,a,potencia);
      }
   else
      {
      potencia=pow(a,b);
      printf ("El resultado de elevar %2f a la %2f es %2f",a,b,potencia);
      }
}

============

Al compilarlo, Borland me saca 4 warnings:
Info :Compiling C:\BC5\BIN\menu.cpp
Warn :  menu.cpp(49,2):'resto' is assigned a value that is never used
Warn :  menu.cpp(66,2):'media' is assigned a value that is never used
Warn :  menu.cpp(66,2):'suma' is assigned a value that is never used
Warn :  menu.cpp(76,2):'potencia' is assigned a value that is never used

Me sale el menu, pero al elegir la opcion entra, me pide los dos numeros y se cierra y no consigo ver el fallo! Podeis echarme un cable?

Besos y gracias,
Tania

Desconectado BuHo

  • Pro Member
  • ****
  • Mensajes: 733
    • La Estancia Azul
Duda en un menu
« Respuesta #1 en: 09 de Mayo de 2005, 11:54:00 pm »
Lo solucionarias si cuando haces un scanf solo lees una variable.

scanf ("%d","%d",&a,&b);

Lo cambias por

scanf("%d", &a);
scanf("%d", &b);

O bien:

scanf ("%d %d", &a, &b);

Pero lo de poner dos variables dentro de comillas independientes no es una buena idea, porque se hace un lio el programa.

Un saludo.
Wake up BuHo...
Daboweb has you[/color]
Mi blog: La Estancia Azul

Desconectado Tania

  • Junior Member
  • **
  • Mensajes: 15
    • http://www.urbannoises.com
Duda en un menu
« Respuesta #2 en: 10 de Mayo de 2005, 01:20:46 am »
Bueno, gracias por tu ayuda. De momento lo he cambiado pero me sigue dando el mismo error. Mañana seguire mirando que puede ser!. Muchisimas gracias por tu ayuda, de veras.

Besos,
Tania

Desconectado BuHo

  • Pro Member
  • ****
  • Mensajes: 733
    • La Estancia Azul
Duda en un menu
« Respuesta #3 en: 10 de Mayo de 2005, 11:51:32 am »
Mmmm, pues yo lo he compilado y me funcionaba bien.... Que error da?
Wake up BuHo...
Daboweb has you[/color]
Mi blog: La Estancia Azul

Desconectado Tania

  • Junior Member
  • **
  • Mensajes: 15
    • http://www.urbannoises.com
Duda en un menu
« Respuesta #4 en: 10 de Mayo de 2005, 12:29:53 pm »
El error me sale el mismo.

Info :Compiling C:\BC5\BIN\menu.cpp
Warn : menu.cpp(49,2):'resto' is assigned a value that is never used
Warn : menu.cpp(66,2):'media' is assigned a value that is never used
Warn : menu.cpp(66,2):'suma' is assigned a value that is never used
Warn : menu.cpp(76,2):'potencia' is assigned a value that is never used

El codigo modificado es:

#include <stdio.h>
#include <math.h>

void mayor ();
void resta ();
void media ();
void potencia ();

void main ()
{

    int op;
    printf ("MENU DE OPCIONES DISPONIBLES\n");
    printf ("============================\n");
    printf ("(1) MAYOR DE LOS NUMEROS\n");
    printf ("(2) RESTA DE LOS NUMEROS\n");
    printf ("(3) MEDIA DE LOS NUMEROS\n");
    printf ("(4) POTENCIA DE LOS NUMEROS\n");
    printf ("Elige la opcion deseada\n");
    printf (" ");
    scanf ("%d",&op);

    switch (op)
     {
    case 1: mayor();
       break;
    case 2: resta();
       break;
    case 3: media();
       break;
    case 4: potencia();
       break;
     }
}

void mayor()
{
int a,b;
printf ("Introduce dos numeros: \n");
scanf ("%d %d", &a, &b);
   if (a>b)
      printf ("El numero mayor es %d",a);
   else
      printf ("El numero mayor es %d",b);
}

void resta()
{
int a,b,resto=0;
printf ("Introduce dos numeros: \n");
scanf ("%d %d", &a, &b);
   if (a>b)
      {
      resto=a-b;
      printf ("El resultado de restar %d de %d es %d",b,a,resto);
      }
   else
      {
      resto=b-a;
      printf ("El resultado de restar %d de %d es %d",a,b,resto);
      }
}

void media()
{
int a,b,suma=0,media=0;
printf ("Introduce dos numeros: \n");
scanf ("%d %d", &a, &b);
suma=a+b;
media=suma/2;
printf ("La media de los dos numeros es %d\n",media);
}

void potencia()
{
float a,b,potencia=0;
printf ("Introduce dos numeros: \n");
scanf ("%2f %2f", &a, &b);
   if (a>b)
      {
      potencia=pow(b,a);
      printf ("El resultado de elevar %2f a la %2f es %2f",b,a,potencia);
      }
   else
      {
      potencia=pow(a,b);
      printf ("El resultado de elevar %2f a la %2f es %2f",a,b,potencia);
      }
}

Desconectado BuHo

  • Pro Member
  • ****
  • Mensajes: 733
    • La Estancia Azul
Duda en un menu
« Respuesta #5 en: 10 de Mayo de 2005, 03:54:46 pm »
AAAAH, pero eso no son errores, son warnings ;)

Los errores no permiten la compilacion, los warnings si, aunque te avisan de que el comportamiento del  programa puede no ser correcto. En este caso no te preocupes, que puedes ejecutarlos sin problemas.

Un saluod
Wake up BuHo...
Daboweb has you[/color]
Mi blog: La Estancia Azul

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License