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
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
[#] Página Siguiente
Ir a la versión completa