0% encontró este documento útil (0 votos)
22 vistas19 páginas

Ejercicios de Programación en C++

Este documento contiene la práctica 2 de la asignatura Lenguaje de Programación de la Escuela Profesional de Ingeniería Electrónica de la Universidad Nacional Mayor de San Marcos. Presenta varios ejercicios resueltos con código en C++ que abordan temas como palabras invertidas, encontrar el máximo de una lista, promedios de notas, vectores simétricos y ordenados, números primos y menús con funciones.

Cargado por

Naraya Quispe
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas19 páginas

Ejercicios de Programación en C++

Este documento contiene la práctica 2 de la asignatura Lenguaje de Programación de la Escuela Profesional de Ingeniería Electrónica de la Universidad Nacional Mayor de San Marcos. Presenta varios ejercicios resueltos con código en C++ que abordan temas como palabras invertidas, encontrar el máximo de una lista, promedios de notas, vectores simétricos y ordenados, números primos y menús con funciones.

Cargado por

Naraya Quispe
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 PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Universidad del Perú, Decana de América

Escuela Profesional de Ingeniería Electrónica

Lenguaje de programación

Jueves : 15-17 PM

Practica 2

Apellidos y nombres: Chacon Quispe, Balarama Narayana

Código: 19190142

Lima, Perú

2020
EJERCICIOS DEL ARCHIVO NOTAS DEL CURSO

EJERCICIO 1: Se desea un algoritmo que proporcione la palabra inversa simétrica de


una dada. Por ejemplo, AMIL es la palabra inversa simétrica de LIMA

Programa:
#include <iostream>
#include <string.h>
#include <locale.h>
#include <iomanip>

using namespace std;

int main() {
setlocale(LC_ALL,"Spanish");
char palabra[50];

cout<<"\n Digite la palabra que quiere optener su inversa simetrica: ";


cin>>palabra;

strrev(palabra); // funcion que invierte una cadena de caracteres

cout<<"\n La palabra invertida es :"<< palabra;

return 0 ;
}
IMAGEN DEL PROGRAMA EJECUTADO:
EJERCICIO 2: Se dispone de una lista de cien números enteros. Calcular el valor máximo
y el orden que ocupa en la lista.

Programa

#include <iostream>
#include <string.h>
#include <locale.h>
#include <iomanip>

using namespace std;

#define N_elementos 100 // se puede hacer el cambio para la comprobación


int posicion_del_maximo(int lista[N_elementos]);

int main() {
setlocale(LC_ALL,"Spanish");
int lista[N_elementos],posicion;

for(int i=0;i<N_elementos;i++){
cout<< " Digite número entero posición "<< i+1 <<" : ";
cin>>lista[i];
}
posicion = posicion_del_maximo(lista);
cout<<"\n La posición del máximo es : "<<posicion+1; //porque en el vector los
componentes comiensan en 0
return 0 ;
}

int posicion_del_maximo(int lista[N_elementos]){


int mayor=0,posicion_mayor;

for(int i=0;i<N_elementos;i++){
if(lista[i]>mayor){ //ira alternando hasta terminar la lista y encontrar al mayor
mayor = lista[i];
posicion_mayor = i; // guardando la posición del maximo ( esta restado 1
porque
} // las lista comiensan desde la posicion 0)
}
return posicion_mayor;
}
Imagen del programa ejecutado con un vector de 5 números:
EJERCICIO 3: Calcular los promedios de las asignaturas de una clase. Deducir cuántas
son más altas que el promedio y cuántas son más bajas que el promedio.

Programa
#include <iostream>
#include <string.h>
#include <locale.h>
#include <iomanip>

using namespace std;


float calcular_promedio(int Nnotas[100],int n);
int main() {
int Nnotas[100],n,aux,Mayorpromedio=0,Menorpromedio=0;
float prom;

cout<<" Digite la cantidad de notas : ";


cin>>n;

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

cout<<" Digite la nota del alumno "<< i+1<<": ";


cin>>Nnotas[i];
if(Nnotas[i]<0 ||Nnotas[i]>20 ){ //restriccion de notas
do{
cout<<" Nota incorrecta, rango aseptado [0-20] Digite nuevamente: ";
cin>>Nnotas[i];
}while(Nnotas[i]<0 || Nnotas[i]>20);
}
}
prom = calcular_promedio( Nnotas, n); //llamando a la fucion

for(int i=0;i<n;i++){
if(Nnotas[i]>prom){
Mayorpromedio++;//Numero de notas mayores al promedio
}
if(Nnotas[i]<prom){
Menorpromedio++;//numero de notas menores al promedio
}
}
cout<<"\n Promedio de notas : "<<prom;
cout<<"\n Notas mayores al promedio: "<<Mayorpromedio;
cout<<"\n Notas menores al promedio: "<<Menorpromedio;
return 0 ;
}

float calcular_promedio(int Nnotas[100],int n){


float suma =0,promedio;

for(int i=0;i<n;i++){
suma = suma + Nnotas[i];
}
promedio=suma/n;
return promedio;
}

Imagen del programa ejecutado para 5 notas :


EJERCICIOS DEL ARCHIVO GUIA DE PRACTICAS
EJERCICIO 1: Programa que lea 20 números enteros, los almacene en un vector, y
calcule la suma de todos ellos, así como la media aritmética
Programa:
#include <iostream>
#include <string.h>
#include <locale.h>
#include <iomanip>
using namespace std;
int main() {
setlocale(LC_ALL,"Spanish");
int numero[20], SUMA = 0;
double promedio=0;
for (int i =0 ; i <20; i++){
cout<<" Digite el numero " <<i+1<<" : ";
cin >> numero[i];
}
for(int i=0; i<20;i++){
SUMA = SUMA + numero[i]; //calculando la suma
}
promedio = SUMA/20;
cout << " \nLa suma es : " <<SUMA;
cout<< " \nLa media aritmética es : "<<fixed<<setprecision(2)<<promedio; // con dos
decimales de presición
}

Imagen del programa ejecutado


EJERCICIO 2: Un vector se dice que es simétrico si el elemento que ocupa la posición
i_ésima coincide con el que ocupa la posición n_i_ésima, siempre que el número de
elementos que almacene el vector sea n. Por ejemplo, el vector que almacena los
valores 2,4,5,4,2 es simétrico. Elaborar un programa y una función que decida si el
vector de n datos que recibe como parámetro es simétrico
Programa
#include <iostream>
#include <string.h>
#include <locale.h>
#include <iomanip>

using namespace std;

int verificar_simetrico (int vector[100],int n); //función que verifica si es simetrico o no


int main() {
setlocale(LC_ALL,"Spanish");
int vector[100],n,verificacion=0; //definimos un vector de 100 espacios
cout<<" Digite cuantos elementos tendra el vector: ";
cin>>n;
cout<<"\n Digitará los elementos del vector";
cout<<"\n--------------------------------------";

for(int i=0;i<n;i++){ //pidiendo los elemetos del vector


cout<<"\n Digite el componente " <<i+1<<" del vector: ";
cin>>vector[i];
}
verificacion = verificar_simetrico(vector,n); //llamando a la funcion
if(verificacion == 1){
cout<<"\n EL VECTOR ES SIMÉTRICO";
}
else{
cout<<"\n El VECTOR NO ES SIMÉTRICO";
}
return 0 ;
}

int verificar_simetrico(int vector[100],int n){


int v;
for(int i=0;i<n;i++){

if(vector[i]==vector[n-1-i]){ //condicion para un vector simetrico


v=1;
}
else{
v=2;
}
return v;
}
}
Imagen del programa ejecutado
EJERCICIO 3: Escribir un programa que halle y escriba una tabla con los 10 primeros
números primos. Un número es primo si sólo tiene por divisores la unidad y el propio
número.
Programa:
# include <iostream>
# include <cstdlib>
using namespace std;
int main(){
int i,n=2,j=0,tabla[10];
do{
int sw=0;
for(i=2;i<=n-1;i++){
if(n%i==0){
sw=1;
}
}
if(sw==0){
tabla[j]=n;
j++;
}
n++;
}while(j<=9);
cout<<"\n Los diez primeros numeros primos: ";
for(int l=0; l<=9;l++){
cout<<"\n tabla["<<l+1<<"]="<<tabla[l];
}
return 0;
}

Imagen del programa ejecutado


EJERCICIO 6: Dado un vector de enteros de n elementos ordenar de menor a mayor

Programa:

#include <iostream>
#include <string.h>
#include <locale.h>
#include <iomanip>

using namespace std;


int main() {
int Nelementos[100],n,aux;
cout<<" Digite la cantidad de elementos del vector : ";
cin>>n;
//pidiendo los elementos del vector
for(int i=0;i<n;i++){
cout<<" Digite el elemento "<<i+1<<" del vector : ";
cin>>Nelementos[i];
}
//algoritmo metodo burbuja
for(int i=0;i<n;i++){
for(int j=0;j<n-1;j++){
if(Nelementos[j]> Nelementos[j+1]){
aux = Nelementos[j];
Nelementos[j] = Nelementos[j+1];
Nelementos[j+1]=aux;
}
}
}
cout<<" \nVector ordenado de menor a mayor ";
for(int j=0;j<n;j++){
cout<<Nelementos[j];
}
return 0 ;
}

Imagen del programa ejecutado


EJERCICIO 7: Elaborar un programa para presentar el siguiente menú de opciones, utilizando
funciones:

#include <iostream>
#include <string.h>
#include <locale.h>
#include <iomanip>

using namespace std;


void cargar_y_ordenar_des();
void factorial_de_numero();
int main() {
int opc;
cout<<"\n\t MENU "<<endl;
cout<<"\n 1. Factorial de un número entero positivo."<<endl;
cout<<" 2. Cargar y ordenar en orden descendente un vector de diez elementos"<<endl;
cout<<" 3. Salir"<<endl;
cout<<"\n opc: ";
cin>>opc;

switch(opc){
case 1 : factorial_de_numero();break;
case 2 : cargar_y_ordenar_des();break;
case 3 : return 0;
default : cout<<"\n Opción no válida";break;
}
return 0 ;
}
void cargar_y_ordenar_des(){
int Nelementos[100],n,aux;
cout<<"\n Digite la cantidad de elementos del vector : ";
cin>>n;
//pidiendo los elementos del vector
for(int i=0;i<n;i++){
cout<<" Digite el elemento "<<i+1<<" del vector : ";
cin>>Nelementos[i];
}
//algoritmo metodo burbuja
for(int i=0;i<n;i++){
for(int j=0;j<n-1;j++){
if(Nelementos[j]< Nelementos[j+1]){
aux = Nelementos[j];
Nelementos[j] = Nelementos[j+1];
Nelementos[j+1]=aux;
}
}
}
cout<<"\n Vector ordenado de mayor a menor ";
for(int j=0;j<n;j++){
cout<<Nelementos[j];
}
} //funcion que calcula el facorial
void factorial_de_numero(){
int numero,factorial=1;
cout<<"\n Digite un numero : ";
cin>>numero;
//la multiplicacion ira alternando
for(int i=1;i<=numero;i++){
factorial = factorial*i;
}
cout<<"\n El factorial del numero digitado es : "<<factorial;
}

Imagen del programa ejecutado:


EJERCICIO VARIOS 10: Escribir un programa para calcular el número de días que hay
entre dos fechas; declarar fecha como una estructura

#include <iostream>
#include <cmath>
#include <iomanip>
#include <locale.h>

using namespace std;

struct fecha{ //estructura fecha


int dia;
int mes;
int anyo;
}fecha[2] ;
//prototipos de función
void diferencia(int a,int b, int c, int d, int f, int g);
int verificar_fecha( int a, int b , int c);
int verificar_mesydia(int x );
int val=1;

int main(){
setlocale(LC_ALL,"Spanish");

for(int i=1;i<=2;i++){
do{
cout<<" \n Fecha : " << i <<endl;
cout<<" \n Ingrese el dia : ";
cin>>fecha[i].dia; //verificando valores permitidos para dia
if(fecha[i].dia<=0 || fecha[i].dia>31){
do{
cout<<" Día ingresado incorrecto, ingrese nuevamente: ";
cin>>fecha[i].dia;
}while(fecha[i].dia <=0 || fecha[i].dia>31); //vuelve a digitar dia
}

cout<<" Ingrese el mes : ";


cin>>fecha[i].mes;
if(fecha[i].mes <=0 || fecha[i].mes >12){ //verificando valores permitidos para mes
do{
cout<<" Mes ingresado incorrecto, ingrese nuevamente: "; //vuelve a dijitar mes
cin>>fecha[i].mes;
}while(fecha[i].mes<=0 || fecha[i].mes>12);
}

cout<<" Ingrese el año : ";


cin>>fecha[i].anyo;
if(fecha[i].anyo<0){ //verificando año
do{
cout<<" Año ingresado incorrecto, ingrese nuevamente: ";
cin>>fecha[i].anyo;
}while(fecha[i].anyo<0);
}
verificar_fecha(fecha[i].dia,fecha[i].mes,fecha[i].anyo); //funcion verica la fecha si es
correcta
// le doy los valores de la fecha paar que verifique por cada
for
} while( val == 1); //bucle para verificar la fecha cuando val = 1 se vuelve a escribir
fecha
}
//funcion que calcula la diferencia de dias de dos fechas
diferencia(fecha[1].dia,fecha[1].mes,fecha[1].anyo,fecha[2].dia,fecha[2].mes,fecha[2].
anyo) ;
return 0;
}

int verificar_fecha( int a, int b , int c){

switch(b){
case 1 : val = 2; break;
case 2 :
if(a==29 && c%4!=0){ //verificando si es año bisiesto
cout<<"\n Fecha incorecta, ingrese nuevamente"<<endl;
val =1;
}
if(a>29){
cout<<"\n Fecha incorecta,ingrese nuevamente"<<endl;
val =1;
};break;
case 3 :val = 2; break;
case 4 : verificar_mesydia(a);break; //funcion que verifica los dias 31 de cada mes
con el valor del dia digitado
case 5 :val = 2; break;
case 6 :verificar_mesydia(a);break;
case 7 :val = 2; break;
case 8 :val = 2; break;
case 9 :verificar_mesydia(a);break;
case 10 :val = 2; break;
case 11 :verificar_mesydia(a);break;
case 12 :val = 2; break;
default : cout<<"Error!"; break;
}
return val;
}

int verificar_mesydia( int x ){


if(x>30){ //verificando los dias 31 de cada mes
cout<<"\n Fecha incorecta,ingrese nuevamente"<<endl;
val = 1 ;
}
return val;
}
void diferencia(int a,int b, int c, int d, int f, int g){
int diferencia_dias;

diferencia_dias = (c - g)*365 + (b-f)*30 + a-d; //calculando el numero de dias

cout<<"\n La dierencia es de dias es : "<<diferencia_dias;

IMAGEN DEL PROGRAMA EJECUTADO:


Arduino

Arduino es una plataforma de electrónica “open-source”o de código abierto cuyos


principios son contar con software y hardware fáciles de usar. Es decir, una forma
sencilla de realizar proyectos interactivos para cualquier persona.
Arduino se puede utilizar para desarrollar elementos autónomos, o bien conectarse a
otros dispositivos o interactuar con otros programas, para interactuar tanto con el
hardware como con el software. Sirve tanto para controlar un elemento, pongamos por
ejemplo un motor que nos suba o baje una persiana basada en la luz que haya gracias a
un sensor conectado al Arduino, o bien para transformar la información de una fuente,
como puede ser un teclado, y convertir la información a algo que entienda, por ejemplo,
un ordenador.
¿Cómo funciona el Arduino?
Las funciones de Arduino, como ocurre con la mayoría de las placas de
microcontroladores, se pueden resumir en 3 factores:
Cuenta con una interfaz de entrada. Esta puede estar directamente unida a los
periféricos, o conectarse a ellos a través de puertos.
La interfaz de entrada tiene como objetivo trasladar la información al microcontrolador.
El microcontrolador es la pieza que se encarga de procesar esos datos. Además, varía
dependiendo de las necesidades del proyecto en el que se desee usar la placa, y existe
una gran variedad de fabricantes y versiones disponibles.
También cuenta con interfaz de salida. Este se encarga de llevar la información
procesada a los periféricos autorizados de hacer el uso final de esos datos. En algunos
casos puede tratarse de otra placa en la que se centraliza y procesa la información de
forma totalmente renovada, o sencillamente, puede ser una pantalla o un altavoz
encargado de mostrar la versión final de los datos.
Lenguaje de la programación con Arduino: C++
¿Qué lenguaje utiliza este tipo de programación? La plataforma Arduino se programa
con un lenguaje propio basado en el lenguaje de programación de alto nivel Processing,
lo que significa que es similar a C++.
¿Qué quiere decir esto? Que se trata de un lenguaje de programación de propósito
general asociado a un sistema operativo llamado UNIX.
Este lenguaje de medio nivel, trata con objetos básicos como caracteres, números, bits y
direcciones de memoria, entre otros.

Ejemplo sentencia if else con Arduino


La idea con este ejercicio práctico es encender el LED integrado en la placa
de Arduino (está conectado al pin 13) cuando el valor analógico supere los
500. En caso contrario, que apague el LED.

El código sería el siguiente.


// Variable con pin analogico
const byte pinAnalogico = A0;
// Variable pin LED
const byte pinLed = 13;

void setup() {
// Iniciar comunicación serie
[Link](9600);

// Modo del pin


pinMode(pinLed, OUTPUT);
}

void loop() {
// Leer pin analogico
int valor = analogRead(pinAnalogico);

// Mostrar valor pin analógico


[Link](valor);

// Sentencia if con Arduino


if (valor > 500) {
// Encender LED
digitalWrite(pinLed, HIGH);
}else{
// Apagar LED
digitalWrite(pinLed, LOW);
}

// Retardo de 100 ms
delay(100);
}
La primera parte del código es la declaración de variables. Necesitamos dos para
almacenar el número de los pines. Son constantes del tipo byte.
La variable pinAnalogico almacena el pin analógico donde está conectado el
potenciómetro, el pin A0.
La variable pinLed almacena el pin digital donde está conectado el LED, el pin 13.
En la función setup() iniciamos la comunicación serie con [Link]() y ponemos en
modo OUTPUT el pin del LED.
Dentro de la función loop() leemos el pin analógico con analogRead() y lo
almacenamos en la variable del tipo int valor. Luego la mostramos por el monitor serie.
En la siguiente línea empieza la sentencia condicional if else con Arduino. Como
siempre, ponemos la palabra if y entre paréntesis la condición. En este caso es si valor
(es el valor obtenido del pin analógico) es mayor que 500, entonces entra dentro del if.
Entre llaves ponemos el código que queremos que se ejecute cuando se cumpla la
condición. En este caso que se encienda el LED con la sentencia digitalWrite().
Luego ponemos el else y entre llaves el código que queremos que se ejecute. En este
caso que se apague el LED con la sentencia digitalWrite().
Por último, un delay de 100 ms para que podamos seguir lo que se muestra por el
monitor serie.
Si cargas el código a la placa y juegas con el potenciómetro verás cómo se enciende y
apaga cuando pasas de 500 o bajas de 500.
Lo último que nos queda por ver es si queremos tener 3 o más sentencias condicionales
if else anidadas. Eso lo podemos hacer con else if, otra forma de escribir un if con
Arduino.

También podría gustarte