0% encontró este documento útil (0 votos)
21 vistas11 páginas

Laboratorio 2

El documento presenta varios programas en C que realizan diferentes tareas, incluyendo el cálculo de promedios y sumas de arreglos, la conversión de números binarios a decimales, y el análisis de datos de temperatura como media, máximo, mínimo y desviación estándar. También incluye implementaciones de métodos de resolución de sistemas de ecuaciones lineales, como el método de Gauss y el método de Gauss-Jordan. Cada sección está estructurada con funciones específicas para solicitar datos, procesarlos y mostrar resultados.

Cargado por

victorm.ramosh
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas11 páginas

Laboratorio 2

El documento presenta varios programas en C que realizan diferentes tareas, incluyendo el cálculo de promedios y sumas de arreglos, la conversión de números binarios a decimales, y el análisis de datos de temperatura como media, máximo, mínimo y desviación estándar. También incluye implementaciones de métodos de resolución de sistemas de ecuaciones lineales, como el método de Gauss y el método de Gauss-Jordan. Cada sección está estructurada con funciones específicas para solicitar datos, procesarlos y mostrar resultados.

Cargado por

victorm.ramosh
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Victor Manuel Ramos Hurtado - 1094945490 TIE

Punto 1:

#include <stdio.h>

int main() {

int tamano; // Tamaño del arreglo

float suma_total = 0; // Variable para guardar la suma de todos los valores

float promedio; // Variable para guardar el promedio

// Pedimos que ingrese el tamaño del arreglo

printf("Ingresa el tamanio del arreglo: ");

scanf("%d", &tamano);

// Declaramos el arreglo con el tamaño especificado

float arreglo[tamano];

// Ciclo para pedir los valores del arreglo

printf("Ingresa los %d numeros del arreglo:\n", tamano);

for (int i = 0; i < tamano; i++) {

printf("Numero %d: ", i + 1);

scanf("%f", &arreglo[i]);

suma_total += arreglo[i];

// Se calcula el promedio

promedio = suma_total / tamano;


// Se muestra los resultados

printf("\n Resultados \n");

printf("Valor acumulado: %.2f\n", suma_total);

printf("Valor promedio: %.2f\n", promedio);

return 0;

Punto 2:

#include <stdio.h>

#include <math.h>

// funcion para convertir binario a decimal

int bin_a_dec(long long bin) { // funcion que convierte binario a decimal

int dec = 0; // variable para guardar el numero decimal

int b = 0; // variable para llevar la posicion de cada digito

while (bin > 0) { // mientras queden digitos por procesar

int d = bin % 10; // tomamos el ultimo digito del numero binario

dec += d * pow(2, b); // multiplicamos por 2 elevado a su posicion

bin /= 10; // quitamos el ultimo digito del numero

b++; // aumentamos la posicion

return dec; // retornamos el numero decimal

int main() {

long long bin; // variable para guardar el numero binario

printf("Ingresa un numero binario (solo 0 y 1): "); // mensaje

scanf("%lld", &bin); // se lee el numero binario


int res = bin_a_dec(bin); // se convierte a decimal

printf("El equivalente decimal es: %d\n", res); // el resultado

return 0;

Punto 4:
#include <stdio.h>

#include <math.h>

// funcion para solicitar datos de temperatura

void solicitar_datos(float temperaturas[], int *cantidad) {

// cuantos datos se van a ingresar

printf("Cuantos datos de temperatura quiere ingresar? ");

// lee la cantidad de datos

scanf("%d", cantidad);

// ciclo para ingresar cada temperatura

for (int i = 0; i < *cantidad; i++) {

printf("Ingresa la temperatura %d: ", i + 1);

scanf("%f", &temperaturas[i]);

// funcion para mostrar los datos ingresados

void mostrar_datos(float temperaturas[], int cantidad) {

printf("\nDatos de temperaturas:\n");

// ciclo para mostrar cada temperatura


for (int i = 0; i < cantidad; i++) {

// muestra cada temperatura

printf("Temperatura %d: %.2f\n", i + 1, temperaturas[i]);

// funcion para calcular el valor medio

float calcular_media(float temperaturas[], int cantidad) {

// variable para guardar la suma

float suma = 0;

// ciclo para sumar las temperaturas

for (int i = 0; i < cantidad; i++) {

// Sumamos las temperatura

suma += temperaturas[i];

// se calcula y retorna el proedio

return suma / cantidad;

// funcion para encontrar el valor maximo

float encontrar_maximo(float temperaturas[], int cantidad) {

float maximo = temperaturas[0];

// ciclo para comparar los valores

for (int i = 1; i < cantidad; i++) {

// si encuentra un valor mayor, lo guarda

if (temperaturas[i] > maximo) {

maximo = temperaturas[i];

}
// retorna el valor maximo

return maximo;

// funcion para encontrar el valor minimo

float encontrar_minimo(float temperaturas[], int cantidad) {

float minimo = temperaturas[0];

// ciclo para comparar los valores

for (int i = 1; i < cantidad; i++) {

// si encuentra un valor menor, lo guarda

if (temperaturas[i] < minimo) {

minimo = temperaturas[i];

// Retorna el valor mínimo

return minimo;

// funcion para calcular la desviacion estandar

float calcular_desviacion(float temperaturas[], int cantidad) {

// calcula la media

float media = calcular_media(temperaturas, cantidad);

// variable para guardar la suma de las diferencias al cuadrado

float suma_diferencias = 0;

// ciclo para calcular la suma de las diferencias al cuadrado

for (int i = 0; i < cantidad; i++) {

// calcula la diferencia entre cada temperatura y la media

float diferencia = temperaturas[i] - media;


// suma el cuadrado de la diferencia

suma_diferencias += diferencia * diferencia;

// calcula la variacion

float variacion = suma_diferencias / cantidad;

// retorna la raíz cuadrada de la variacion

return sqrt(variacion);

// funcion principal

int main() {

// tamaño maximo del arreglo de temperaturas

const int MAX_TEMP = 100;

// arreglo para guardar las temperaturas

float temperaturas[MAX_TEMP];

// variable para guardar la cantidad de datos

int cantidad;

// llama a la funcion para solicitar datos

solicitar_datos(temperaturas, &cantidad);

// llama a la funcion para mostrar los datos

mostrar_datos(temperaturas, cantidad);

// calcula y muestra la media

float media = calcular_media(temperaturas, cantidad);

printf("\nMedia de temperaturas: %.2f\n", media);

// encuentra y muestra el maximo


float maximo = encontrar_maximo(temperaturas, cantidad);

printf("Temperatura maxima: %.2f\n", maximo);

// encuentra y muestra el minimo

float minimo = encontrar_minimo(temperaturas, cantidad);

printf("Temperatura minima: %.2f\n", minimo);

// calcula y muestra la desviacion estandar

float desviacion = calcular_desviacion(temperaturas, cantidad);

printf("Desviacion estandar: %.2f\n", desviacion);

return 0;

Punto 3

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define MAX_SIZE 10 // Tamano maximo de la matriz

// Funcion para imprimir la matriz

void imprimirMatriz(float matriz[MAX_SIZE][MAX_SIZE + 1], int filas, int columnas) {

for (int i = 0; i < filas; i++) {

for (int j = 0; j < columnas; j++) {

printf("%8.2f ", matriz[i][j]);


}

printf("\n");

// Metodo de Gauss

void metodoGauss(float matriz[MAX_SIZE][MAX_SIZE + 1], int filas, int columnas) {

// Eliminacion hacia adelante

for (int i = 0; i < filas; i++) {

// Hacer el elemento diagonal 1

float centro = matriz[i][i];

for (int j = i; j < columnas; j++) {

matriz[i][j] /= centro;

// Eliminacion

for (int k = i + 1; k < filas; k++) {

float factor = matriz[k][i];

for (int j = i; j < columnas; j++) {

matriz[k][j] -= factor * matriz[i][j];

// Sustitucion hacia atras

for (int i = filas - 1; i >= 0; i--) {

for (int k = i - 1; k >= 0; k--) {

float factor = matriz[k][i];

matriz[k][i] -= factor * matriz[i][i];


matriz[k][columnas - 1] -= factor * matriz[i][columnas - 1];

// Metodo de Gauss-Jordan

void metodoGaussJordan(float matriz[MAX_SIZE][MAX_SIZE + 1], int filas, int columnas) {

// Eliminacion completa

for (int i = 0; i < filas; i++) {

// Hacer el elemento diagonal 1

float centro = matriz[i][i];

for (int j = i; j < columnas; j++) {

matriz[i][j] /= centro;

// Eliminar todos los elementos por encima y debajo

for (int k = 0; k < filas; k++) {

if (k != i) {

float factor = matriz[k][i];

for (int j = i; j < columnas; j++) {

matriz[k][j] -= factor * matriz[i][j];

int main() {

int filas, columnas, metodo;


float matriz[MAX_SIZE][MAX_SIZE + 1];

// Entrada de datos del usuario

printf("Ingrese el numero de ecuaciones (filas): ");

scanf("%d", &filas);

columnas = filas + 1; // Columnas con terminos independientes

// Ingreso de la matriz aumentada

printf("Ingrese los coeficientes de la matriz aumentada:\n");

for (int i = 0; i < filas; i++) {

for (int j = 0; j < columnas; j++) {

printf("Elemento [%d][%d]: ", i+1, j+1);

scanf("%f", &matriz[i][j]);

// Seleccion del metodo

printf("\nSeleccione el metodo:\n");

printf("1. Metodo de Gauss\n");

printf("2. Metodo de Gauss-Jordan\n");

printf("Opcion: ");

scanf("%d", &metodo);

// Presentar matriz original

printf("\nMatriz Original:\n");

imprimirMatriz(matriz, filas, columnas);

// Aplicar el metodo seleccionado

switch(metodo) {
case 1:

printf("\nAplicando Metodo de Gauss:\n");

metodoGauss(matriz, filas, columnas);

break;

case 2:

printf("\nAplicando Metodo de Gauss-Jordan:\n");

metodoGaussJordan(matriz, filas, columnas);

break;

default:

printf("Metodo invalido\n");

return 1;

// Imprimir resultados

printf("\nMatriz Resultante:\n");

imprimirMatriz(matriz, filas, columnas);

// Mostrar soluciones

printf("\nSoluciones:\n");

for (int i = 0; i < filas; i++) {

printf("x%d = %.2f\n", i+1, matriz[i][columnas-1]);

return 0;

También podría gustarte