Estás en:   ArielOrtiz.com > Informática industrial > Arreglos

Arreglos

Objetivos

Durante esta actividad:

Esta actividad promueve las siguientes habilidades, valores y actitudes: capacidad para resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción de la Actividad

Se tiene el siguiente programa incompleto en lenguaje C en un archivo llamado arreglos.c:

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

#define NUM_ELEMS 20

void imprime_arreglo(int a[]) {
    printf("[");
    for (int i = 0; i < NUM_ELEMS; i++) {
        printf("%d ", a[i]);
    }
    printf("]\n");
}

int moda(int a[]) {
    // Coloca aqui tu codigo
}

double mediana(int a[]) {
    // Coloca aqui tu codigo
}

double desviacion(int a[]) {
    // Coloca aqui tu codigo
}

void suma(int a[], int b[], int r[]) {
    // Coloca aqui tu codigo
}

void escalar_por_vector(int x, int a[], int r[]) {
    // Coloca aqui tu codigo
}

int producto_punto(int a[], int b[]) {
    // Coloca aqui tu codigo
}

int main(void) {
    
    int alfa[NUM_ELEMS] = {59, 90, 43, 61, 28, 29, 42, 71, 33, 86, 
                           93,  3, 68, 97, 61, 81, 61, 25, 42, 79};
    int beta[NUM_ELEMS] = {23, 22, 39, 26, 99, 52,  5, 19, 43,  5, 
                           24, 14,  2,  5, 67, 87, 40, 14, 17,  6};
    int gama[NUM_ELEMS];
    
    printf("La moda de alfa es: %d\n", moda(alfa));
    printf("La mediana de alfa es: %.2f\n", mediana(alfa));
    printf("La desviacion estandar de alfa es: %.2f\n", desviacion(alfa));

    printf("La moda de beta es: %d\n", moda(beta));
    printf("La mediana de beta es: %.2f\n", mediana(beta));
    printf("La desviacion estandar de beta es: %.2f\n", desviacion(beta));
    
    suma(alfa, beta, gama);
    printf("La suma de alfa y beta es:\n");
    imprime_arreglo(gama);
    
    escalar_por_vector(2, alfa, gama);
    printf("2 por alfa es:\n");
    imprime_arreglo(gama);
    
    escalar_por_vector(10, beta, gama);
    printf("10 por beta es:\n");
    imprime_arreglo(gama);
    
    printf("Producto punto de alfa por beta es: %d\n", producto_punto(alfa, beta));
    
    system("pause");
    return 0;
}

De manera individual o en parejas, completa la implementación de las funciones moda, mediana, desviacion, suma, escalar_por_vector y producto_punto, las cuales se describen puntualmente en la siguiente tabla. Puedes añadir cualquier número de funciones auxiliares adicionales.

Función Descripción
int moda(int a[]) Devuelve el elemento del arreglo a que más veces se repite. Si hubiera más de una moda, devuelve cualquiera de ellas.
double mediana(int a[]) Realiza una copia de a y la ordena de manera ascendente, devolviendo la media aritmética de los dos valores centrales.
double desviacion(int a[]) Devuelve la desviación estándar de todos los elementos contenidos en a. La desviación estándar se calcula con la siguiente fórmula:
void suma(int a[], int b[], int r[])

Realiza la suma de los vectores a y b, dejando el resultado en el vector r. Esta es la fórmula para sumar dos vectores:

void escalar_por_vector(int x, int a[], int r[])

Realiza la multiplicación del valor escalar x por el vector a, dejando el resultado en el vector r. La fórmula es:

int producto_punto(int a[], int b[])

Devuelve el producto punto del vector a por b. El producto punto se calcula con la siguiente fórmula:

Una vez que hayas realizado la implementación de cada una de las funciones solicitadas, verifica que el programa produzca la siguiente salida:

La moda de alfa es: 61
La mediana de alfa es: 61.00
La desviacion estandar de alfa es: 25.53
La moda de beta es: 5
La mediana de beta es: 22.50
La desviacion estandar de beta es: 26.84
La suma de alfa y beta es:
[82 112 82 87 127 81 47 90 76 91 117 17 70 102 128 168 101 39 59 85 ]
2 por alfa es:
[118 180 86 122 56 58 84 142 66 172 186 6 136 194 122 162 122 50 84 158 ]
10 por beta es:
[230 220 390 260 990 520 50 190 430 50 240 140 20 50 670 870 400 140 170 60 ]
Producto punto de alfa por beta es: 32295

¿Qué se debe entregar?

El archivo fuente de lenguaje C debe incluir en la parte superior un comentario con el nombre y matrícula de los autores de la tarea. Por ejemplo:

/*
 +--------------------------
 | Ramiro González 1166666 
 | Gonzalo Ramirez 1166667
 +--------------------------
 */

Sube el archivo arreglos.c al Sistema de Entrega de Tareas Automatizado. Basta que una sola persona suba la tarea en caso de tratarse de una pareja. No se aceptan tareas por ningún otro medio.

Fecha límite: Martes, 20 de abril.

Evaluación

Esta actividad se evaluará usando los siguientes criterios:

−10 No se incluyó un comentario con los nombres y matrículas de los autores en cada uno de los archivos fuente.
DA Si se detecta plagio o fraude.
0-100 Dependiendo de la cantidad de funciones correctamente implementadas (16.66 puntos por cada una).
© 1996-2010 por Ariel Ortiz Ramírez (ariel.ortiz@itesm.mx)
Desarrollado en Django | Licencia de Creative Commons | XHTML válido | CSS válido