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;