MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación > Webmasters - Diseño Web - Programación - Diseño gráfico

Duda en un menu

(1/2) > >>

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

BuHo:
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.

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

BuHo:
Mmmm, pues yo lo he compilado y me funcionaba bien.... Que error da?

Tania:
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);
      }
}

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa