Foros de daboweb
MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: Tania 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
-
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.
-
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
-
Mmmm, pues yo lo he compilado y me funcionaba bien.... Que error da?
-
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);
}
}
-
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