none
Ayuda con progrmaa RRS feed

  • Pregunta

  • saludos

    Necesito uname mandaron a realizar un programa en c en la universidad con el siguiente enunciado

    Realice un programa en c que solicite como entrada 20 valores correspondiente a la altura de un aula y al final muestre por pantalla

    Aclaro (esto de media, medianaetc es de estadistica)

    1)La media de las medidas

    2)la desviacion estandar

    3)la mediana 

    4)la mayor altura ingresada y el orden en que ingreso

    ya yo a mi me dejaron parte de el programa echo y me dijeron que le integrara las que faltan el me muestra las 3 primeras pero no se como hacer para que me muestrela 4 porque perdi clases
    si me podrian ayudar como hacerlo se los agradeceria y de paso tengo que explicar lo que hice en el programa

    aca les dejo lo que tengo:

                                                                     

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <conio.h>

    void med1(float media,float cantidad){
               float media1=media/cantidad;
                printf("\n\tLA MEDIA ES %.4f",media1);
                }
    void median(float mayor,float menor){
               float  mediana=(mayor+menor)/2;
                printf("\n\tLA MEDIANA ES  %.4f",mediana);
                }
    void desvi(float acum,float cantidad){
                float estandar=pow((acum/cantidad),(0.5));
                printf("\n\tLA DESVIACION ESTANDAR ES  %.4f",estandar);
                }

    main (){
    int a;
    char f=223;
    printf("\n");
    for (a=0;a<10;a++){
        printf("%c%c\t",f,f);}


           int cantidad,k;
           printf("\n\n\tCUANTOS DATOS TOMASTE? => ");
           scanf("%d",&cantidad);
           printf("\n\n");


           float datos[cantidad];
           for (a=0,k=1;a<cantidad;a++,k++){     
               printf(">>INGRESA DATO NUMERO %d:\t",k);
               scanf("%f",&datos[a]);}
               system("cls");


    int leo=1;
    do{
    system("cls");
    int resp;
    char z=168,o=162,tildE=144,l=19;
    do{
    printf("\n\n\%cQUE NECESITAS HALLAR?\n\n",z,tildE);
    printf ("PULSA 1 PARA HALLAR LA MEDIA\n",z);
    printf("");
    printf ("PULSA 2 PARA HALLAR LA MEDIANA\n");
    printf("");
    printf ("PULSA 3 PARA HALLAR LA DESVIACION ESTANDAR\n");
    printf("PULSA 4 PARA SALIR\n\n>> ");
    scanf("%d",&resp);
    if ((resp==0)||(resp>4)){
                             printf("\a\a");
                             system("cls");
                             printf("\n\n>>DIGITA UNICAMENTE 1 %c 2 %c 3%c   INTENTALO NUEVAMENTE:",o,o,l);
                             printf("\n");
                             }
    } while((resp<1)||(resp>4));

    int b;
    float media=0,media1;
    float mayor=0,menor=30000,mediana;
    float acum=0,edwardo,estandar;
    if (resp==4)leo=2;
    switch (resp){
           case 1:
             for(a=0;a<cantidad;a++){
                media=media+datos[a];}
                med1(media,cantidad);
                getch();
                break;   

           case 2:

    for(a=0;a<cantidad;a++){
                if(menor>datos[a])
                menor=datos[a];
                if(mayor<datos[a])
                mayor=datos[a];
                }
                median(mayor,menor);
                getch();
                break;

           case 3:
                for(a=0;a<cantidad;a++){
                media=media+datos[a];
                }
                media1=media/cantidad;
                for(b=0;b<cantidad;b++){
                edwardo=pow((media1-datos[b]),2);
                acum=acum+edwardo;}
                desvi(acum,cantidad);
                getch();
                break;}

    }while(leo==1);
    }


    eso es lo que tengo que me dieron los compañeros de grupo para que completara

    si tienen una forma  mas sencilla de que calcule y se pueda explicar  perfectoy ayuda 

    martes, 31 de julio de 2012 19:14

Todas las respuestas

  • Pues aquí no hacemos tareas pero damos ideas.

    El punto 4 es fácil de realizar.  Usted necesita una variable que grabe cuál es el valor máximo durante la entrada de datos y otra variable que guarde en qué momento fue dicho valor introducido (si es el primer dato, o el segundo, o el tercero, etc.).

    El único detalle aquí a cuidar es que al inicio las variables están sin inicializar, así que cualquier valor inicial tendrán y eso es peligroso.  Hay que ajustarlas antes de iniciar el bucle FOR que lee los datos del teclado (usuario).  En lo personal yo inicializaría la segunda variable a -1.  Luego dentro del bucle pregunto:  ¿Es la segunda variable -1 o bien el valor digitado supera al valor máximo actual?  Si la respuesta es positiva entonces se guardan en las variables tanto el índice del bucle (más 1, tal vez pues estamos acostumbrados a contar a partir de 1, no cero) como el actual valor máximo.


    Jose R. MCP
    Code Samples

    martes, 31 de julio de 2012 23:52
    Moderador
  • en clase realizamos un progrma en c que calcula el mayor dato ingresado y la posicion lo que quiero es saber como lo incluye en este programa que ya me pasaron porque me perdi las clase de los case 1 2 3  y e investigado pero aun no entiendo :s 
    gracias por la ayuda

    viernes, 3 de agosto de 2012 0:44