elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Presentación y exposición de dudas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Presentación y exposición de dudas  (Leído 2,263 veces)
Mahlahj

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Presentación y exposición de dudas
« en: 26 Febrero 2018, 00:07 am »

Buenas tardes comunidad.
Soy nuevo en el mundo de la informática pues acabo de entrar a la ingeniería informática como tal.
Soy abogado de profesión e informático por convicción. Pero había estado dudando sobre la viabilidad, al menos por la edad, de cursar dicha "carrera", pero se dio la oportunidad y heme aquí.

Por otra parte, tengo dudas sobre éste código que he estado redactando. Se supone que debe arrojar el promedio, la moda, la desviación estándar, acomodar los dígitos de mayor a menor y viceversa, además de sólo poder ingresar números excluyendo las letras. Pero, por más que lo muevo, no logro dar con alguna solución para la moda, la desviación estándar ni la exclusión de letras. He borrado el ciclo de la desviación estándar pues no compila al redactarlo. Agradecería sobremanera los aportes al respecto

Así, sin más qué agregar, les dejo el código.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #define Max_Calificacion 20
  5. #define CLEAR "cls"
  6.  
  7. #ifdef _WIN32
  8. #else
  9. #endif
  10.  
  11. int calificacion[Max_Calificacion];
  12. int i,j,aux;
  13. int suma;
  14. float promedio;
  15. int rango;
  16. int mas_grande;
  17. int valor_moda;
  18. int frecuencia[Max_Calificacion]={0};
  19. int mayor=0;
  20. int menor=100;
  21. char Repetir;
  22.  
  23. int main()
  24. {
  25.    do {
  26.    for(i=0; i<Max_Calificacion; i++)
  27.        {
  28.        printf("Ingresa las calificaciones\n\n");
  29.        printf("Calificacion No.%d ", i+1);
  30.        scanf("%d", &calificacion[i]);
  31.        if(calificacion[i]<=100)
  32.            {
  33.                if(calificacion[i]>0)
  34.                {
  35.                    system("cls");
  36.                }
  37.        system("cls");
  38.            }
  39.        else{
  40.            printf("Eso no es valido");
  41.            getch();
  42.            i--;
  43.            }
  44.        system("cls");
  45.        }
  46.    for(i=0; i<Max_Calificacion; i++)
  47.    {
  48.        suma=suma+calificacion[i];
  49.    }
  50.    promedio=suma/Max_Calificacion;
  51.    system("cls");
  52.    printf("Resultados");
  53.    for(i=0; i<Max_Calificacion; i++)
  54.        {
  55.        printf("\nLa calificacion No.%d es %d", i+1, calificacion[i]);
  56.        }
  57.    getch();
  58.    system("cls");
  59.    for(i=0; i<Max_Calificacion; i++)
  60.    {
  61.        for(j=i+1; j<Max_Calificacion; j++)
  62.        {
  63.            if(calificacion[i]<calificacion[j])
  64.            {
  65.                aux=calificacion[i];
  66.                calificacion[i]=calificacion[j];
  67.                calificacion[j]=aux;
  68.            }
  69.        }
  70.    }
  71.    printf("Ordenados de mayor a menor\n\n");
  72.    for(i=0; i<Max_Calificacion; i++)
  73.    {
  74.        printf("%d, ", calificacion[i]);
  75.    }
  76.    getch();
  77.    system("cls");
  78.    for(i=0; i<Max_Calificacion; i++)
  79.    {
  80.    for(j=i+1; j<Max_Calificacion; j++)
  81.        {
  82.        if(calificacion[i]>calificacion[j])
  83.            {
  84.            aux=calificacion[i];
  85.            calificacion[i]=calificacion[j];
  86.            calificacion[j]=aux;
  87.            }
  88.        }
  89.    }
  90.    printf("Ordenados de menor a mayor\n\n");
  91.    for(i=0; i<Max_Calificacion; i++)
  92.    {
  93.        printf("%d, ", calificacion[i]);
  94.    }
  95.    getch();
  96.    system("cls");
  97.    printf("Promedio\n\n");
  98.    printf("El promedio es %f", promedio);
  99.    getch();
  100.    system("cls");
  101.    printf("Moda\n\n");
  102.    for(i=0; i<Max_Calificacion; i++)
  103.            {
  104.            frecuencia[calificacion[i]]++;
  105.            }
  106.    for (rango = 1; rango <= Max_Calificacion; rango++)
  107.            {
  108.            if (frecuencia[rango] > mas_grande )
  109.                {
  110.                mas_grande = frecuencia[rango];
  111.                valor_moda = rango;
  112.                }
  113.            }
  114. printf("La moda es %d", valor_moda);
  115. getch();
  116. system("cls");
  117. printf("Numero mayor\n\n");
  118. for (i=0; i<Max_Calificacion; i++)
  119.    {
  120.    if (calificacion[i] > mayor)
  121.        {
  122.        mayor=calificacion[i];
  123.        }
  124.    }
  125. printf("El mayor es %d\n", mayor);
  126. getch();
  127. system("cls");
  128. printf("Numero menor\n\n");
  129. for (i=0; i<Max_Calificacion; i++)
  130.    {
  131.    if (calificacion[i] < menor)
  132.        {
  133.        menor=calificacion[i];
  134.        }
  135.    }
  136. printf("El menor es %d\n", menor);
  137. getch();
  138. system("cls");
  139. printf("\n\n\tRepetir Programa (S) ?: ");
  140.    scanf("%s", &Repetir);
  141.    system("cls");
  142.        }
  143.    while (Repetir == 'S' || Repetir == 's');
  144.    printf("Adios");
  145.    getch();
  146. return 0;
  147. }


« Última modificación: 26 Febrero 2018, 00:29 am por Eleкtro » En línea

stderr

Desconectado Desconectado

Mensajes: 40


Ver Perfil
Re: Presentación y exposición de dudas
« Respuesta #1 en: 26 Febrero 2018, 15:56 pm »

No vas mal, deberías separar las tareas (como obtener media, moda, mediana y desviación) en funciones
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef unsigned short ushort;
  5.  
  6. void leer(float*, ushort);
  7. void ordenar(float*, ushort);
  8. void imprimir(float*, ushort);
  9.  
  10. float moda(float*, ushort);
  11. float media(float*, ushort);
  12. float mediana(float*, ushort);
  13. float desviacion(float*, ushort);
  14.  
  15. int main(void) {
  16.    const ushort longitud = 5;
  17.    float notas[longitud];
  18.  
  19.    leer(notas, longitud);
  20.    ordenar(notas, longitud);
  21.    imprimir(notas, longitud);
  22.  
  23.    printf(
  24.        "Menor: %.1f\n"
  25.        "Mayor: %.1f\n"
  26.        "Moda: %.1f\n"
  27.        "Media: %.1f\n"
  28.        "Mediana: %.1f\n"
  29.        "Desviación: %.1f\n",
  30.        notas[0],
  31.        notas[longitud - 1],
  32.        moda(notas, longitud),
  33.        media(notas, longitud),
  34.        mediana(notas, longitud),
  35.        desviacion(notas, longitud)
  36.    );
  37.  
  38.    return EXIT_SUCCESS;
  39. }
  40.  
  41. void leer(float* notas, ushort longitud) {
  42.    for(ushort nota = 0; nota < longitud; nota++) {
  43.        printf("Nota %hu > ", nota + 1);
  44.        scanf("%f", &notas[nota]);
  45.    }
  46. }
  47.  
  48. void ordenar(float *notas, ushort longitud) {
  49.    for(ushort vuelta = 1; vuelta < longitud; vuelta++) {
  50.        for(ushort nota = 0; nota < longitud - vuelta; nota++) {
  51.            if (notas[nota] > notas[nota + 1]) {
  52.                float actual = notas[nota];
  53.                notas[nota] = notas[nota + 1];
  54.                notas[nota + 1] = actual;
  55.            }
  56.        }
  57.    }
  58. }
  59.  
  60. void imprimir(float *notas, ushort longitud) {
  61.    for(ushort nota = 0; nota < longitud; nota++) {
  62.        printf("%.1f%s", notas[nota], nota < longitud - 1 ? ", " : "\n");
  63.    }
  64. }
  65.  
  66. float moda(float *notas, ushort longitud) {
  67.    float moda = 0, anterior = 0;
  68.    for (ushort vuelta = 0; vuelta < longitud; vuelta++) {
  69.        ushort repeticiones = 0;
  70.        for (ushort nota = 0; nota < longitud; nota++) {
  71.            if (notas[vuelta] == notas[nota]) {
  72.                repeticiones++;
  73.            }
  74.        }
  75.        if (repeticiones > anterior) {
  76.            anterior = repeticiones;
  77.            moda = notas[vuelta];
  78.        }
  79.    }
  80.    return moda;
  81. }
  82.  
  83. float media(float *notas, ushort longitud) {
  84.    float suma = 0;
  85.    for(ushort nota = 0; nota < longitud; nota++) {
  86.        suma += notas[nota];
  87.    }
  88.    return suma / longitud;
  89. }
  90.  
  91. float mediana(float *notas, ushort longitud) {
  92.    return
  93.        longitud % 2 != 0 ?
  94.        notas[(ushort) (longitud - 1) / 2] :
  95.        (notas[(longitud - 1) / 2] + notas[(longitud - 1) / 2 + 1]) / 2;
  96. }
  97.  
  98. float desviacion(float *notas, ushort longitud) {
  99.    float suma = 0;
  100.    for(ushort nota = 0; nota < longitud; nota++) {
  101.        suma += pow(notas[nota] - media(notas, longitud), 2);
  102.    }
  103.    return sqrt(suma/longitud);
  104. }
  105.  


En línea

Mahlahj

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Presentación y exposición de dudas
« Respuesta #2 en: 27 Febrero 2018, 06:49 am »

MUCHAS GRACIAS ! ! !
No había pensado en ésto! :D

void leer(float*, ushort);
void ordenar(float*, ushort);
void imprimir(float*, ushort);

float moda(float*, ushort);
float media(float*, ushort);
float mediana(float*, ushort);
float desviacion(float*, ushort);
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Presentacion y dudas
Sugerencias y dudas sobre el Foro
magoo16s 1 2,838 Último mensaje 14 Abril 2009, 16:48 pm
por Sk9ITk5Z
Presentación y muchas dudas.
Dudas Generales
JoselinhoBcN 1 2,501 Último mensaje 22 Agosto 2010, 00:23 am
por B€T€B€
Presentación y dudas
Programación C/C++
AlexKurban 4 3,130 Último mensaje 24 Octubre 2013, 00:29 am
por edr89
Presentacion y dudas
Dudas Generales
kking92 2 2,162 Último mensaje 10 Enero 2016, 17:41 pm
por kking92
MOVIDO: Presentación y exposición de dudas
Foro Libre
Eleкtro 0 1,411 Último mensaje 26 Febrero 2018, 00:29 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines