Ayuda con un programa.

Iniciado por sami98035, 12 Marzo 2018, 23:21 PM

0 Miembros y 2 Visitantes están viendo este tema.

sami98035

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.

casmajavi

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.

sami98035

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.

dariodr01

Pruebalo asi.
Saludos.

Código (cpp) [Seleccionar]
#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;
}


sami98035

Cita de: dariodr01 en 13 Marzo 2018, 05:03 AM
Pruebalo asi.
Saludos.

Código (cpp) [Seleccionar]
#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í.

MAFUS

Apuesto a que no te va a funcionar por diámetro.