jueves, 2 de febrero de 2023

Programación en C: Arreglos Suma, Multiplicación y Cubo (arrays)

arrays: suma y multiplicación

Para la universidad Fermín Toro, hemos creado un programa en lenguaje C, que debe cumplir con las siguientes especificaciones:

Dado dos arreglos de números enteros, el primero con una dimensión de 5 y el segundo de 10, se desea imprimir la multiplicación de ellos. Para que el arreglo de 10 dimensiones tenga el mismo tamaño que el primero, es decir, 5 posiciones, se modificará de la siguiente manera: sume cada 2 posiciones continuas para que se obtengan sólo 5 resultados y así poderlo multiplicar con el primer arreglo.

 



Tabla de contenido:


Para la resolución, primero insertamos las librerías:


#include stdio.h
#include conio.h

Ahora, el ejercicio dice que "dados dos arreglos, con números enteros", es decir, que el programador, tiene el conocimiento de dichos números, así se hace necesario inicializar ambos arreglos, con los valores respectivos:


int arre1[5]= {0,1,2,3,4}; //arreglo 1 con valores dados
int arre2[10] = {0,1,2,3,4,5,6,7,8,9}; //arreglo 2 con valores dados


Para dar respuesta, debemos tener un arreglo que guarde la suma, por lo que este arreglo sólo tendrá 5 elementos, y debe ser inicializado en cero. Además, crear otro arreglo, que guardará el resultado de la suma y la multiplicación. Es importante señalar, que crearemos 3 variables para manejar cada uno de los arreglos mencionados:

int i; //marcador de posición del tercer arreglos
int j; //marcador de posición del segundo arreglo
int e;
int arre3[5] ;//arreglo resultante de la multiplicación del arreglo 1 con la suma (el primero mas el segundo valor) del arreglo 2
int suma[5] ; //es el arreglo resultante del arreglo 2 dos ya sumado
void multiplicacion(); //método para multiplicar el arreglo 1 con el arreglo 2
void sum(); //método que suma dentro del mismo arreglo el primer elemento con el segundo
void imprimir(); //método para imprimir el resultado al usuario

Nuestro main o principal es muy sencillo, ya que sólo tendrá el orden en que aparecerán los procesos, que hemos descrito anteriormente.

main()
{
clrscr();
sum();
multiplicacion();
imprimir();
getch();
return 0;
}
La parte en donde se presenta confusión es en la suma de los elementos de un mismo arreglo. Trataré de explicarlo de una manera sencilla. La suma, siempre será entre un elemento par y otro elemento impar. Sin embargo, como los elementos son los primeros números enteros, lo podemos definir directamente en el arreglo, así:



void sum()
{
for (j=0; j<=4; j++)
{
suma[j] =(arre2[j] + arre2[j]+ 1) + (arre2[j] + arre2[j]) ;
} return;
}

La primera parte de la suma se refiere a los elementos impares del arreglo y la segunda parte, a los elementos pares del arreglo. Pueden verificar manualmente, que efectivamente estamos sumando el primer elemento con el segundo. Cada resultado, es guardado en otro arreglo. Se detiene el ciclo for en 4 porque el arreglo resultante es de 5 elementos.



void multiplicacion(){
for (e=0; e<=4; e++)
{ arre3[e]= arre1[e] * suma[e];
} return;
}

El arreglo 3 ya será el resultado, de la multiplicación del arreglo 1 mas la suma del arreglo 2.
Para mostrar el resultado, imprimimos el arreglo 3:



void imprimir()
{
clrscr();
printf("El resultado de la multiplicacion del arreglo nro 1\n");
printf("mas la suma del primer elemento con el segundo del \n");
printf("arreglo nro 2, es: \n");
for (i=0; i<=4; i++)
{
printf("%d\n", arre3[i]);
}
return;
}
Y ya tenemos listo nuestro arreglo.






arreglos: sumas y multiplicación

En el ejercicio anterior, trabajamos el siguiente enunciado: dado dos arreglos de números enteros, el primero con una dimensión de 5 y el segundo de 10, se desea imprimir la multiplicación de ellos. Para que el arreglo de 10 dimensiones tenga el mismo tamaño que el primero, es decir, 5 posiciones, se modificará de la siguiente manera: sume cada 2 posiciones continuas para que se obtengan sólo 5 resultados y así poderlo multiplicar con el primer arreglo. Pero ahora bien, en el caso en que los arreglos sean ingresados por el usuario, ¿cómo haríamos para resolver el ejercicio?
int arre1[5]= {0,0,0,0,0}; //arreglo 1 con valores dados
int arre2[10] = {0,0,0,0,0,0,0,0,0,0}; //arreglo 2 con valores dados

Vamos a crear dos variables nuevas, que indicarán la posición, se utilizarán al momento de sumar el primer elemento con el segundo elemento del arreglo dos.
int a; //variable posicion para el segundo arreglo
int b; //variable posicion para el segundo arreglo
Evidentemente vamos a crear dos métodos para pedir el llenado de los arreglos.
void pedirdatosarre1();
void pedirdatosarre2();
El orden del main, se alterará, puesto que vamos a solicitar los datos al usuario antes de ejecutar la suma y multiplicación.
main()
{
clrscr();
pedirdatosarre1();
pedirdatosarre2();
sum();
multiplicacion();
imprimir();
getch();
return 0;
}

Los métodos para pedir los datos del arreglo se hacen con un for, para evitar confundir al usuario, así sabrá cuantos elementos lleva cada arreglo y su posición:
void pedirdatosarre1()
{
clrscr();
for (e =0; e<=4; e++)
{
printf("Inserte el elemento nro %d del primer arreglo: \n", e);
scanf("%d",&arre1[e]);
}
}

void pedirdatosarre2()
{
clrscr();
for (j =0; j<=9; j++)
{
printf("Inserte el elemento nro %d del segundo arreglo: \n", j);
scanf("%d",&arre2[j]);
}
}


Y por último, las variables que habíamos declarado al principio, servirán para indicar la posición a la que deseamos accesar en la suma, la variable a es para los números impares y la variable b es para los números pares:
void sum()
{
for (j=0; j<=4; j++)
{
a = j + j + 1;
b = j + j;
suma[j] =(arre2[a] + arre2[b]);
}
}
Si ejecutan el programa y le dan unos valores de prueba, verán como efectivamente cumple con los requerimientos. Así que, a practicar!



Crear una función que se llame: cubos, en donde se pase como parámetro un arreglo unidimensional de 10 elementos enteros, dicha función debe calcular el cubo de cada uno de los elementos del arreglo y mostrarlos en pantalla.

Este ejercicio es similar al anterior. Debemos en primer lugar saber que un cubo de un número, es el mismo número multiplicado 3 veces por sí mismo. Esto quiere decir, que cada elemento del arreglo debe ser multiplicado por sí mismo 3 veces.

Pasos para resolver el ejercicio:
  • Incluir las librerías studio y conio.
  • Declarar la variable que será utilizada para mover la ubicación de un elemento dentro del arreglo.
  • Declarar el arreglo con los elementos a los cuales se les calculará el cubo. Los elementos deben ser números enteros.
  • Declarar el arreglo donde se almacenará la respuesta del cálculo.
  • Crear la función cubo y la función imprimir.
  • En el main, ordenadamente colocamos la función cubo y luego imprimir. Puesto, que primero debe realizar el cálculo que posteriormente va a mostrar.
  • En la función cubo se debe inicializar un contador para poder determinar el momento en que el arreglo ha sido recorrido en totalidad. Y dentro, realizar el cálculo del cubo.
  • En la función imprimir también se requiere el contador. Y vamos a imprimir en la misma línea el número del arreglo al cual se le va a calcular el cubo y su resultado.
El código es el siguiente:




ejercicios de programación lenguaje c


Calcular el monto a pagar en una cabina de Internet.
Si el costo por hora es de Bs/. 1.5 y por cada 5 horas te dan una hora de promoción gratis. (descuento)


Para la resolución de este ejercicio sabemos tanto el costo de la hora y el descuento que se debe aplicar, de modo que el usuario únicamente va a ingresar la cantidad de horas que estuvo en la cabina de internet. Ahora bien, la cantidad de horas debe dividirse entre 5 y el resultado debe redondearse hacia abajo. Es decir, si el resultado es 2,5 debe redondearse a dos. Ejemplo, un usuario estuvo 7 horas, es decir le corresponde descuento de 1 hora por haber estado 5 horas. Si dividimos 7 entre 5 el resultado es 1,4. Si multiplicamos 1,4 por 1,5 (que es el valor de la hora) estamos haciendo un cálculo erróneo, dado que el ejercicio establece que únicamente hay descuento de 1 hora por cada 5, por lo que multiplicar 1,5 por el 0,4 restante da un descuento total equivocado. Para evitar este mal cálculo, se debe redondear el resultado agregando la librería math y usando el comando floor. Floor hará que el resultado de la división vaya hacia abajo, en caso del ejemplo daría 1. Por lo que, ahora sí el cálculo sería correcto.

La ventaja de utlizar floor es que evita que tengamos que aplicar condicionales para dividir si el usuario estuvo mas de 5 horas o menos de 5 horas. Ya que si dividimos 4 horas entre 5, el floor hará que sea cero, y por ende cualquier número multiplicado por cero será cero, por lo que no habrá descuento y no se alterará la fórmula. Veamos el código, para comprender la idea a totalidad.



Ahora bien, pueden imaginar este mismo ejercicio en una evaluación de ingeniería. Seguramente, el profesor puede decir que se desconocen la cantidad de horas para dar un descuento y el costo de la hora. Por lo que los 3 datos deben ser solicitados al usuario. El cálculo sigue siendo igual, solo debemos agregar que el usuario ingrese los datos faltantes e inicializar las variables en cero. Para que tengas una mejor idea, el enunciado sería así: Calcular el monto a pagar en una cabina de Internet. Si el costo por hora es x y por cada x horas te dan una hora de promoción gratis. (descuento). El valor de la x debe ser ingresado por el usuario. Es importante tener cuidado, puesto que las horas de la promoción son el denominador de la división por lo que el descuento solo se calcula si las horas de promoción son mayores a cero. De lo contrario no hará ningún cálculo de descuento.





Una agencia de alquiler de autos cobra la hora de uso de su vehículo a un valor determinado de acuerdo a la temporada. Si el cliente usa el carro por más de 10 horas le hacen un descuento del 20%. Realice un programa que lea como entrada las horas de uso, valor por hora (2.00) de 10 vehículos y determine el total a pagar.

En primer lugar el cálculo se le debe aplicar a 10 vehículos por lo que será necesario crear un ciclo do - while, para que se puedan ingresar las horas de uso por cada carro. En el cálculo se debe utilizar un condicional ya que si excede a las 10 horas tiene un descuento fijo del 20% y sino, no tiene descuento. El valor de la hora se inicializa con la variable. El código se verá de la siguiente manera:





Un colegio cobra la colegiatura de acuerdo al número de materias que el estudiante cursa en el semestre (todas las asignaturas tienen el mismo costo). Para incentivar a los estudiantes el colegio ha diseñado la siguiente política de cobro:
  • Si el alumno tiene un promedio general de 90 o más, se le aplica un descuento del 10% sobre su colegiatura además de que no se le cobrará el IVA.
  • Si el alumno tiene un promedio general menor a 90, éste deberá pagar la colegiatura completa además del IVA correspondiente (16% sobre el total de la colegiatura).
¿Cuánto deberá pagar un alumno cualquiera por su colegiatura semestral?

Al leer el ejercicio, nos damos cuenta que debemos solicitar al usuario cantidad de materias a cursar, el promedio del alumno y el costo de la colegiatura para poder calcular el pago. El cálculo del monto a pagar se diferencia con un condicional. El pago del IVA por ser un valor fijo se inicializa con la variable. El código del ejercicio es el siguiente:



Es importante resaltar que al momento de calcular el pago, si el promedio es mayor a 90, no hemos agregado el impuesto en la ecuación porque no se cobrará. Y para poder agregar un descuento, es necesario calcularlo, por ello, hemos aprovechado de calcular el descuento dentro de la misma ecuación, simplemente utilizando paréntesis. De este modo, nos ahorramos líneas de código y es mas sencillo visualmente apreciar el programa. Lo mismo ocurre con el cálculo del impuesto, solo que en ese caso se debe sumar al monto a pagar.



1. Escriba un programa en C que pida un número y a continuación escriba si es par; positivo, haciendo uso de las estructuras selectivas simples.





2. Escriba un programa en C que pida un número y a continuación escriba si es par positivo, y sino, escriba que no es par positivo; haciendo uso de las estructuras selectivas dobles





3. Escriba un programa en C que pida un número y a continuación escriba si es par; positivo, par negativo, impar positivo o impar negativo; haciendo uso de las estructuras selectivas múltiples





estructura selectiva lenguaje c

Calcular el cambio de monedas, en dólares y euros al ingresar cierta cantidad en Bs. (tipo de cambio $: 2150Bs, Euros: 1,45$)

La solución de este ejercicio viene dada por el uso de la regla de tres y hemos utilizados dos métodos, para que tengan una gama de opciones para resolver futuros programas. También observarán cómo se han solventado pequeños inconvenientes que se dieron sobre la marcha.







sueldo trabajadores lenguaje c



Realizar un programa para calcular el sueldo de un trabajador a partir de las horas trabajadas y la clase a la que pertenece: Trabajadores Clase “A”, se les paga 10.000 gs. por hora. Trabajadores Clase “B”, se les paga 8.000 gs por hora. y trabajadores Clase “C”, se les paga 5.000 gs. por hora.

Para la resolución de este ejercicio es necesario incluir la librería string.h ya que es la encargada de permitirnos realizar comparaciones con strings o cadenas de texto. Es importante señalar, que aún si la variable tiene almacenada una sola variable se considera una cadena de texto. Seguro se preguntarán por qué la comparación se realiza con un texto? Y esto se debe a que la clase de los trabajadores está expresada con letras: a, b y c. En cambio, si el ejercicio estuviera expresando las clases de los trabajadores con números, se abarcaría de forma diferente.

Dentro de un nido de if se utiliza el puntero, no se utiliza directamente la variable clase. Para ejercicios mas avanzados es necesario realizar una validación; esto se refiere a verificar que el usuario realmente colocó una de las 3 opciones tal como se le solicitó y en caso contrario, pedirle un nuevo intento. Pero como estamos haciendo un ejercicio sencillo, he omitido este paso.

Código del programa para calcular el sueldo de los trabajadores:





Elabore un programa en C que mediante el uso de una función tipo void y calcule e imprima el promedio de los números pares entre 2 y 20, incluyéndolos.



Para la elaboración de dicho programa utilizaré dos métodos, para que se visualice el rango de opciones que existen para la respuesta al ejercicio.

Método 1

Método 2



Escribir un programa que use el tipo enumerate para mostrar el nombre de un mes, su predecesor y su sucesor. El mes se ingresa desde el teclado dando un número entre 1 y 12.

El propósito del uso del tipo enumarate en lenguaje c es que permite mejorar la legibilidad del código. Lo hace más fácil de entender porque estamos reemplazando el nombre de las variables por números. Asimismo, reducimos las posibilidades de argumentos incorrectos o inválidos para una variable.

Por otro lado, cuando no se específica un valor para un elemento del tipo enumerate, los valores se incrementarán automáticamente en 1, comenzando desde cero. En este ejercicio en particular, se han definido los valores de cada mes comenzando con uno, dado que el usuario ingresará los datos entre 1 y 12. Si el programador no define el valor, deberá restarle 1 al dato ingresado por el usuario para obtener el resultado apropiado.

Por ejemplo: si no se le colocan los valores a cada mes, enero sería llamado automáticamente por el número cero. Pero el usuario, va a ingresar como primer número es el 1. Por ende, el programa le mostraría el mes de febrero si el programador no le resta 1 al dato ingresado. Para evitar complicaciones con restar uno a la variable ingresada, es mejor definir en la lista el valor a cada mes.

Hay diferentes formas de realizar este ejercicio. He tomado la más sencilla, porque los tutoriales y ejercicios aquí mostrados son para estudiantes principiantes de lenguaje c. Deberás revisar el material propuesto por tu profesor en clases para verificar que la respuesta publicada aquí corresponda con la esperada. Haremos uso de un switch para movernos a través de toda la lista y dar los diferentes resultados. Ya que acorde a cada número, se mostrarán 3 meses diferentes en cada caso. La lista solo llega hasta el mes de mayo, ustedes deben completarla, pero manteniendo la estructura ya propuesta. El ejercicio se ejecuta a la perfección. Sin embargo, depende al programa que utilices puede saltar la alarma de que el dato tipo enumerate es tanto entero como de caracteres, pero es normal, igual el programa se ejecutará y mostrará los datos asignados, así que no te vayas a asustar cuando ocurra.





Escribir un programa que contenga una función que pueda recibir dos estructuras que contienen las coordenadas en el plano de dos puntos dados, de los cuales se desea conocer su punto medio.

El punto medio es la función donde se suman dos puntos dados y se divide entre dos para encontrar la mitad de la trayectoria. Por lo tanto, el programa requiere que el usuario ingrese el punto a y el punto b. Pero, no se calculará en el main el punto medio porque el ejercicio nos pide una función.

Las funciones consisten en modularizar un programa, de este modo es más sencillo reutilizar partes del código. Recordemos, que los ejercicios propuestos son cortos y no parece tener mucho sentido realizar una función, pero en el ámbito laboral, la cantidad de datos es mil veces mayor, por lo que el uso de funciones se convierte en una estrategia que ahorra tiempo, recursos y facilita el trabajo en equipo.

Lo primero que tenemos que hacer es declarar la función y el tipo de función que es. En este caso, la he declarado de tipo entero. Luego, en el principal he declarado una variable para cada punto que el usuario nos va a dar. Solicitamos los puntos y enviamos los datos a la función. Notarás que hemos enviado los datos dentro del imprimir, para ahorrar líneas de código y ejecutar de forma eficiente el programa. Por último, definimos la función con la operación matemática.





Proponer un programa que permita leer un número y calcule:

  • Su raíz cúbica
  • Su potencia
  • Su inverso (1/x)
**Para validar utiliza un valor de un solo dígito.

Para realizar este ejercicio necesitamos dominar conceptos básicos de matemática. En primer lugar, la raíz cúbica de un número es el mismo número multiplicado por sí mismo 3 veces. La potencia de un número, es el número elevado a sí mismo y su inverso es dividir 1 entre el número.

Es importante que el número solicitado al usuario sea mayor que cero puesto que la división entre cero en programación hará colapsar el sistema. Para evitarlo, utilizaremos un if antes de ejecutar cualquier tipo de operación matemática. De este modo, si el usuario ingresa un numero mayor que 9 o un número menor que 1, el programa no hará ningún cálculo.

Por otro lado, para poder calcular la potencia de un número es necesario agregar la librería math.h. Y para calcular el inverso, la variable debe ser de tipo float, porque el inverso de un número siempre tendrá decimales.





Lecturas Recomendadas
  • Curso de programación en C para principiantes: Aprende a programar en C desde cero
  • C: Guía final paso por paso a la Programación C
  • Introducción a la programación con el lenguaje C++. C++ es uno de los lenguajes de programación más populares y extendidos a día de hoy. Entre sus virtudes, destaca su eficiencia, así como la simpleza para el desarrollo de sistemas en tiempo real, aplicaciones con bibliotecas gráficas y el desarrollo de juegos. Asimismo, junto con Python, se ha convertido en uno de los lenguajes referentes en los campos de seguridad, redes e Internet de las cosas.
  • Aprender a programar en C. El libro está orientado a las personas que no saben programar y necesitan una guía para aprender C desde cero. Si ya sabes programar y quieres profundizar en tus conocimientos, es posible que no sea tu mejor elección.
  • Aprender Programación en C. A partir de C se derivan muchos lenguajes de programación modernos, principalmente C++, Objective-C, Java y C#. Estos lenguajes comparten en distinto grado el léxico, la sintaxis y la lógica de C. Muchos profesionales consideran que el aprendizaje de C es la base para el aprendizaje de estos lenguajes.El lenguaje C es un lenguaje de programación que sigue el paradigma de programación imperativa. Este lenguaje ha desempeñado, y sigue desempeñando un papel importante en la tecnología informática.


Note: I earn a commission on qualifying purchases as an Amazon Associate, at no additional cost to you.

Disclaimer: The coloring pages available on this blog are created as fan art and are intended for personal and non-commercial use only. The characters and images depicted in these coloring pages are the property of their respective copyright holders. We do not claim ownership of the characters or images used in these coloring pages. The availability of these coloring pages on this blog is not intended to infringe upon any copyright laws. If you are the rightful owner of any content used and wish for it to be removed, please contact us directly, and we will promptly address your concerns. Thank you for understanding.
Violeta León. Con la tecnología de Blogger.