Buena, soy un estudiante de informática que apenas va por el primer semestre, estuve haciendo un programa que calcula el radio de un circulo mediante el área, perímetro o diámetro, y también que calcule la media aritmética de n números. El problema está en que hice un menú, pero no hace lo que se le pide, cuando quiero ir a la opción 2 que es parta calcular la media aritmética, no salta hasta ahí, sino que ejecuta la opción 1 y debes ingresar datos para que llegue hasta la opción 2. También, en la opción 1, cuando trato de sacar el radio por el perímetro, ahí si salta a la opción 2.
#include <stdio.h>
#include <math.h>
#define PI 3,1415
#define RAIZPI 1,772453
main ()
{
float area, diametro, perimetro, radio;
int operacion, operacionRadio, volverInicio;
int seguir;
int numero, contador, acumulador;
float resultado;
int raiz;
int raiz2;
contador = 0;
acumulador = 0;
do {
printf ("Si decea calcular el radio de un circulo, pulse el numero 1. \n");
printf ("Si decea sacar la media aritmetica de un numero, pulse el numero 2. \n");
scanf ("%d", &operacion);
if (operacion = 1){
printf ("Si tiene el area, pulse 1: \n");
printf ("Si tiene el diametro, pulse 2: \n");
printf ("Si tiene el perimetro, pulse 3: \n");
fflush (stdin);
scanf ("%d", &operacionRadio);
if (operacionRadio == 1) {
printf ("Introduzca el area: \n");
fflush (stdin);
scanf ("%f", &area);
raiz = sqrt(area);
radio = raiz / RAIZPI;
printf ("El radio es: %f \n", radio);
}
else if (operacion == 2) {
printf ("Introduzca el diametro: \n");
fflush (stdin);
scanf ("%f", &diametro);
radio = diametro / PI;
printf ("El radio es: %f \n", radio);
}
} else if (operacionRadio == 3) {
printf ("Introduzca el perimetro: \n");
fflush (stdin);
scanf ("%f", &perimetro);
radio = perimetro / (2*PI);
printf ("El radio es: %f \n \n", radio);
}
else (operacion = 2); {
do {
printf ("Introduzca un numero entero \n");
fflush (stdin);
scanf ("%d", &numero);
contador = contador + 1;
acumulador = acumulador + numero;
printf ("Introdujo %d numero(s) \n", contador);
printf ("La suma es: %d \n", acumulador);
printf ("Decea introducir otro numero? pulse 1 para SI; 0 para no. %d \n");
fflush (stdin);
scanf ("%d", &seguir);
}while (seguir == 1);
resultado = acumulador / contador;
printf ("La media aritmetica es: %f \n", resultado);
}
printf ("Si decea volver a inico, pulse 1, de lo contrario, pulse 0. %d \n");
fflush (stdin);
scanf ("%d", &volverInicio);
} while (volverInicio == 1);
}
Por favor, si pueden ayudarme a saber qué estoy haciendo mal, se los agradecería mucho.
Hola. El problema que tienes es que estás confundiendo el operador = con el operador ==. El primero es el operador de asignación, el segundo es relacional.
Saludos.
Cita de: casmajavi en 12 Marzo 2018, 23:25 PM
Hola. El problema que tienes es que estás confundiendo el operador = con el operador ==. El primero es el operador de asignación, el segundo es relacional.
Saludos.
Acabo de probar, y me sigue haciendo lo mismo, sigue saltando a donde no es.
Pruebalo asi.
Saludos.
#include <stdio.h>
#include <math.h>
#define PI 3,1415
#define RAIZPI 1,772453
int main ()
{
float area, diametro, perimetro, radio;
int operacion, operacionRadio, volverInicio;
int seguir;
int numero, contador, acumulador;
float resultado;
int raiz;
int raiz2;
contador = 0;
acumulador = 0;
do {
printf ("Si decea calcular el radio de un circulo, pulse el numero 1. \n");
printf ("Si decea sacar la media aritmetica de un numero, pulse el numero 2. \n");
scanf ("%d", &operacion);
if (operacion == 1) {
printf ("Si tiene el area, pulse 1: \n");
printf ("Si tiene el diametro, pulse 2: \n");
printf ("Si tiene el perimetro, pulse 3: \n");
//fflush (stdin);
scanf ("%d", &operacionRadio);
if (operacionRadio == 1) {
printf ("Introduzca el area: \n");
//fflush (stdin);
scanf ("%f", &area);
raiz = sqrt(area);
radio = raiz / RAIZPI;
printf ("El radio es: %f \n", radio);
}
else if (operacion == 2) {
printf ("Introduzca el diametro: \n");
//fflush (stdin);
scanf ("%f", &diametro);
radio = diametro / PI;
printf ("El radio es: %f \n", radio);
}
else if (operacionRadio == 3) {
printf ("Introduzca el perimetro: \n");
//fflush (stdin);
scanf ("%f", &perimetro);
radio = perimetro / (2*PI);
printf ("El radio es: %f \n \n", radio);
}
}
else {
do {
printf ("Introduzca un numero entero \n");
//fflush (stdin);
scanf ("%d", &numero);
contador = contador + 1;
acumulador = acumulador + numero;
printf ("Introdujo %d numero(s) \n", contador);
printf ("La suma es: %d \n", acumulador);
printf ("Decea introducir otro numero? pulse 1 para SI; 0 para no.\n");
//fflush (stdin);
scanf ("%d", &seguir);
} while (seguir == 1);
resultado = acumulador / contador;
printf ("La media aritmetica es: %f \n", resultado);
}
printf ("Si decea volver a inico, pulse 1, de lo contrario, pulse 0.\n");
//fflush (stdin);
scanf ("%d", &volverInicio);
} while (volverInicio == 1);
return 0;
}
Cita de: dariodr01 en 13 Marzo 2018, 05:03 AM
Pruebalo asi.
Saludos.
#include <stdio.h>
#include <math.h>
#define PI 3,1415
#define RAIZPI 1,772453
int main ()
{
float area, diametro, perimetro, radio;
int operacion, operacionRadio, volverInicio;
int seguir;
int numero, contador, acumulador;
float resultado;
int raiz;
int raiz2;
contador = 0;
acumulador = 0;
do {
printf ("Si decea calcular el radio de un circulo, pulse el numero 1. \n");
printf ("Si decea sacar la media aritmetica de un numero, pulse el numero 2. \n");
scanf ("%d", &operacion);
if (operacion == 1) {
printf ("Si tiene el area, pulse 1: \n");
printf ("Si tiene el diametro, pulse 2: \n");
printf ("Si tiene el perimetro, pulse 3: \n");
//fflush (stdin);
scanf ("%d", &operacionRadio);
if (operacionRadio == 1) {
printf ("Introduzca el area: \n");
//fflush (stdin);
scanf ("%f", &area);
raiz = sqrt(area);
radio = raiz / RAIZPI;
printf ("El radio es: %f \n", radio);
}
else if (operacion == 2) {
printf ("Introduzca el diametro: \n");
//fflush (stdin);
scanf ("%f", &diametro);
radio = diametro / PI;
printf ("El radio es: %f \n", radio);
}
else if (operacionRadio == 3) {
printf ("Introduzca el perimetro: \n");
//fflush (stdin);
scanf ("%f", &perimetro);
radio = perimetro / (2*PI);
printf ("El radio es: %f \n \n", radio);
}
}
else {
do {
printf ("Introduzca un numero entero \n");
//fflush (stdin);
scanf ("%d", &numero);
contador = contador + 1;
acumulador = acumulador + numero;
printf ("Introdujo %d numero(s) \n", contador);
printf ("La suma es: %d \n", acumulador);
printf ("Decea introducir otro numero? pulse 1 para SI; 0 para no.\n");
//fflush (stdin);
scanf ("%d", &seguir);
} while (seguir == 1);
resultado = acumulador / contador;
printf ("La media aritmetica es: %f \n", resultado);
}
printf ("Si decea volver a inico, pulse 1, de lo contrario, pulse 0.\n");
//fflush (stdin);
scanf ("%d", &volverInicio);
} while (volverInicio == 1);
return 0;
}
Hola, gracias por la ayuda, bro. Sí me funciona así.
Apuesto a que no te va a funcionar por diámetro.