Está en la página 1de 28

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE TOLUCA

SEP SES TecNM

INSTITUTO TECNOLÓGICO DE TOLUCA

NOMBRE DEL DEPARTAMENTO ACADÉMICO


Ingeniería Industrial a Distancia.

NOMBRE DE LA MATERIA
Algoritmos y Lenguajes de Programación

NOMBRE DE LA ACTIVIDAD
Act. EJERCICIOS FUNCIONES - Tema.6_ Funciones

NOMBRE DEL ESTUDIANTE


+ Enrique Valtierra Zamorano

NOMBRE DEL DOCENTE


Marelis Carrillo Lara

METEPEC, ESTADO DE MÉXICO, MAYO 13 DE 2023


Departamento de Sistemas y Computación
Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

Reporte de Prácticas
Practica No # 2023 13/05/2023
Fecha de
Título de la Práctica: EJERCICIOS ARCHIVOS Periodo Escolar
Elaboración
Diseño de Documento WORD por: Enrique Valtierra Zamorano

Introducción del tema tratado


 Revisando en esta actividad sobre este TEMA 6 sobre "FUNCIONES", encontramos que al tener que las
estructuras generales básicas en los Programas de Lenguaje "C" que dichas se forman de una o más funciones donde
su función principal "main” contando de argumentos y sentencias como de datos básicos para crear datos
complejos con variables globales, locales a los ficheros, o locales a un bloque de códigos, en esto pues dichos
programas almacenan información en las variables, pero además visualizando que esas variables utilizadas guardan
datos, aquí podemos encontrar de misma manera que en C++ las funciones son una herramienta indispensable
para el programador, tanto las funciones creadas por él mismo como las que le son proporcionadas por otras
librerías, cualquiera que sea el caso, las funciones permiten automatizar tareas repetitivas, encapsular el código
que utilizamos, e incluso mejorar la seguridad, confiabilidad y estabilidad de nuestros programas.

Entonces como la sintaxis “C” en programación y en especial al ser una serie de reglas y procesos que lideran la
estructura de un programa entendidas por compilador para crear dichos programas en “C” válido, es como para
éste presente trabajo al ser actividad sobre FUNCIONES también servirá para la resolución de planteamientos, que
como ingenieros industriales nos podrá ayudar para mejorar habilidad para desarrollar algoritmos eficaces,
enriquecer vocabulario de construcciones útiles de programación, y para sistemas de producción, entre otros.

Definición de Problema
Con la definición de identificadores y todo lo necesarios en estructuras de lenguajes "C" y con
FUNCIONES, resolver problemáticas con solución en -devC++
Objetivo General
El alumno de ingeniería industrial desarrollará problemáticas con FUNCIONES con solución en -
devC++ para poner en práctica los conocimientos durante unidad VI de esta materia de Algoritmos
y Lenguajes de programación.
Objetivos Específicos
+ Definir identificadores para correcta lectura y visualización de los tipos de datos, + Conocer y
programar en -DevC++

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PROCESO A REALIZAR – Problema 1)

1). Desarrolle una solución en donde al usuario le dé la oportunidad de resolver


cualquiera de las siguientes opciones: A. Dado dos ángulos saber si son
complementarios; B. Dados dos lados indicar el área del triángulo; y C. Dados dos
catetos conocer el valor de la hipotenusa.

PASO 1 - Dar clic en “Abrir nuevo” -> “Proyecto” -> Seleccionar “Console Application” -> Dar clic en ACEPTAR.

PASO 2 – Escribir un nombre para llamar al proyecto -> Seleccionar “DevC++ Project (*dev)” -> Dar clic en
GUARDAR.

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PASO 3 – Problema a resolver.


PSEUDOCÓDIGO – 1) Triángulo

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

EL CÓDIGO FUENTE O PSEUDOCÓDIGO:

//PROBLEMA.1_Triangulo
#include <iostream>
#include <cmath>
using namespace std;
int main() {
char opcion;
do {
cout << "Seleccione una opcion:" << endl;
cout << "A. Dados dos angulos, saber si son complementarios." << endl;
cout << "B. Dados dos lados, indicar el area del triangulo." << endl;
cout << "C. Dados dos catetos, conocer el valor de la hipotenusa." << endl;
cout << "D. Salir del programa." << endl;
cin >> opcion;
switch(opcion) {
case 'A': {
double angulo1, angulo2;
cout << "Ingrese el primer angulo (en grados): ";
cin >> angulo1;
cout << "Ingrese el segundo angulo (en grados): ";
cin >> angulo2;
if(angulo1 + angulo2 == 90) {
cout << "Los angulos son complementarios." << endl;
} else {
cout << "Los angulos no son complementarios." << endl;
}
break;
}
case 'B': {
double lado1, lado2, area;
cout << "Ingrese el primer lado: ";
cin >> lado1;
cout << "Ingrese el segundo lado: ";
cin >> lado2;
area = (lado1 * lado2) / 2;
cout << "El area del triangulo es: " << area << endl;
break;
}
case 'C': {
double cateto1, cateto2, hipotenusa;
cout << "Ingrese el primer cateto: ";
cin >> cateto1;
cout << "Ingrese el segundo cateto: ";
cin >> cateto2;
hipotenusa = sqrt(pow(cateto1, 2) + pow(cateto2, 2));
cout << "La hipotenusa es: " << hipotenusa << endl;
break;
}
case 'D': {
cout << "Saliendo del programa..." << endl;
break;
}
default: {
cout << "Opcion invalida. Por favor ingrese una opcion valida." << endl;
break;
}
}
} while(opcion != 'D');
return 0;
Departamento de Sistemas y Computación
}
Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

SU FUNCIONAMIENTO:

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PROCESO A REALIZAR – Problema 2)

2). Desarrolle una solución en donde al usuario le dé la oportunidad de resolver


cualquiera de las siguientes opciones, solicite dos vectores de valores enteros (el
tamaño del vector lo da el usuario): 1. Ordene los vectores en uno solo de forma
ascendente; 2. Ordene los vectores en uno solo de forma descendente; 3. Según el
usuario capture los valores los coloque en vector pares, o vector nones; y 4. Muestre
los vectores capturados originalmente.

PASO 1 - Dar clic en “Abrir nuevo” -> “Proyecto” -> Seleccionar “Console Application” -> Dar clic en ACEPTAR.

PASO 2 – Escribir un nombre para llamar al proyecto -> Seleccionar “DevC++ Project (*dev)” -> Dar clic en
GUARDAR.

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PASO 3 – Problema a resolver.


PSEUDOCÓDIGO – 2) Ordenar Vectores

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

EL CÓDIGO FUENTE O PSEUDOCÓDIGO:

//PROBLEMA.2_Ordenar Vectores
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int size, value;
vector<int> vec, vec_pares, vec_nones;
char opcion;
// Solicitar tamaño del vector
cout << "Ingrese tamano de vector: ";
cin >> size;
// Capturar los valores del vector
for (int i = 0; i < size; i++)
{
cout << "Ingrese un valor: ";
cin >> value;
vec.push_back(value);
}
// Solicitar al usuario si desea ingresar más valores o cerrar el programa
while (true)
{
cout << "Desea ingresar otro valor? (s/n): ";
cin >> opcion;
if (opcion == 's' || opcion == 'S')
{
cout << "Ingrese un valor: ";
cin >> value;
vec.push_back(value);
}
else if (opcion == 'n' || opcion == 'N')
{
break;
}
else
{
cout << "Opcion no valida. Intente de nuevo :(." << endl;
}
}

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

// Ordenar el vector en forma ascendente o descendente según la opción del usuario


while (true)
{
int orden;
cout << "Seleccione el orden de los elementos del vector (1 = ascendente, 2 = descendente): ";
cin >> orden;
if (orden == 1)
{
sort(vec.begin(), vec.end());
break;
}
else if (orden == 2)
{
sort(vec.rbegin(), vec.rend());
break;
}
else
{
cout << "Opcion no valida. Intente de nuevo." << endl;
}
}
// Separar los valores pares y nones en vectores diferentes
for (int i = 0; i < vec.size(); i++)
{
if (vec[i] % 2 == 0)
{
vec_pares.push_back(vec[i]);
}
else
{
vec_nones.push_back(vec[i]);
}
}
// Mostrar los vectores originales capturados
cout << "Vector -> original: ";
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
cout << endl;
cout << "Vector -> pares: ";
for (int i = 0; i < vec_pares.size(); i++)
{
cout << vec_pares[i] << " ";
}
cout << endl;
cout << "Vector -> nones: ";
for (int i = 0; i < vec_nones.size(); i++)
{
cout << vec_nones[i] << " ";
}
cout << endl;
Departamento
return 0; de Sistemas y Computación
Docente:
} Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

SU FUNCIONAMIENTO:

PROCESO A REALIZAR – Problema 3)

3). Desarrolle una solución en donde genere una Agenda Telefónica empleando
archivos y funciones con las siguientes funciones: A. Altas de Amigos (Los datos a
solicitar son nombre, dirección, teléfono, nickname, el registro lleva un identificador
que es incremental, el usuario no lo ingresa); B. Búsqueda de Amigos (se busca por
nombre o por identificador); C. Actualización de Amigos (se modifica cualquier dato
excepto el identificador); D. Eliminación de Amigos (se busca por nombre o por
identificador, se pide confirmar si elimina o no); y E. Mostrar todos los Amigos.

PASO 1 - Dar clic en “Abrir nuevo” -> “Proyecto” -> Seleccionar “Console Application” -> Dar clic en ACEPTAR.

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PASO 2 – Escribir un nombre para llamar al proyecto -> Seleccionar “DevC++ Project (*dev)” -> Dar clic en
GUARDAR.

PASO 3 – Problema a resolver.


PSEUDOCÓDIGO – 3) Amigos-agenda

PARTE
1

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PARTE
2
PARTE
3

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PARTE
4
PARTE
5

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

PARTE
6

PARTE
7

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

EL CÓDIGO FUENTE O PSEUDOCÓDIGO:

//PROBLEMA.3_Amigos-agenda
#include <stdio.h>
#include <stdlib.h>
#define TAM 100
typedef struct {

int id;
char nombre[20],
direccion[20],
telefono[20],
nickname[20];

}Amigo;
Amigo leerDatos();
void ingresar(Amigo [], int *, Amigo );
int buscar(Amigo [], int, int );
void actualizar(Amigo [], int, int );
void eliminar(Amigo [], int *, int );
void mostrar(Amigo [], int );
void leerArchivo(Amigo [], int *);
void guardarEnArchivo(Amigo [], int );
int main() {

int opcion;
Amigo amigos[TAM], amigo;
int totalAmigos = -1, id, posicion;
leerArchivo(amigos, &totalAmigos);
while(1) {

printf("\n\t\t\tMENU OPCIONES\n\n\n\n1. Alta de AMIGOS :D\n"

1
"2. Buscar AMIGO\n"
"3. Actualizar AMIGO\n"
"4. Eliminar AMIGO\n"
"5. Mostrar TODOS LOS AMIGOS\n"
"6. Salir\n");
printf("Elija opcion a ejecutar: ");
scanf("%d", &opcion);

switch(opcion) {

case 1:

amigo = leerDatos();

ingresar(amigos, &totalAmigos, amigo);

break;

case 2:

printf("Digite ID -> buscar: ");


scanf("%d", &id);

posicion = buscar(amigos, totalAmigos, id);

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

if(posicion != -1) {

printf("Datos del AMIGO: \n");


printf("Nombre> %s\nDireccion> %s\nTelefono> %s\nNickname> %s",
amigos[posicion].nombre, amigos[posicion].direccion,
amigos[posicion].telefono, amigos[posicion].nickname);

} else {

printf("NO SE ENCUENTRA el ID %d", id);

break;

case 3:

printf("Digite ID -> actualizar: ");


scanf("%d", &id);

actualizar(amigos, totalAmigos, id);

break;

case 4:

printf("Digite ID -> eliminar: ");


scanf("%d", &id);

eliminar(amigos, &totalAmigos, id);

break;

case 5:

2
mostrar(amigos, totalAmigos);

break;

case 6:

printf("Saliendo del programa..........");

guardarEnArchivo(amigos, totalAmigos);

exit(0);

break;

default:

printf("Opcion invalida");

printf("\n");

returnde
Departamento 0; Sistemas y Computación
}
Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

Amigo leerDatos(){

static int id = 0;
Amigo amigo;

printf("INGRESE DATOS DEL AMIGO: \n");

amigo.id = ++id;

printf("Nombre: ");
scanf("%s", amigo.nombre);

printf("Direccion: ");
scanf("%s", amigo.direccion);
printf("Telefono: ");
scanf("%s", amigo.telefono);

printf("Nickname: ");
scanf("%s", amigo.nickname);

return amigo;
}
void ingresar(Amigo amigos[], int *totalAmigos, Amigo amigo) {

if(*totalAmigos == TAM - 1) {

3
printf("SE TERMINO OPCION PARA ingresar mas amigos.");

} else {

(*totalAmigos)++;

amigos[*totalAmigos] = amigo;

printf("SE HA ingresado correctamente al amigo.\n");

}
int buscar(Amigo amigos[], int totalAmigos, int idBuscar) {

if(totalAmigos == -1) {

return -1;

} else {

int menor = 0;
int mayor = totalAmigos;
int posicion = (menor + mayor) / 2;

while(menor <= mayor && idBuscar != amigos[posicion].id) {

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

if(idBuscar > amigos[posicion].id) {

menor = posicion + 1;

} else {

mayor = posicion - 1;

posicion = (menor + mayor) / 2;

if(menor > mayor) {

return -1;

} else {

return posicion;

}
void actualizar(Amigo amigos[], int totalAmigos, int idModificar) {

4
if(totalAmigos == -1) {

printf("NO SE HAN ingresado amigos aun.");

} else {

int posicion = buscar(amigos, totalAmigos, idModificar);

if(posicion != -1) {

int opcion;

do {

printf("\n\nMENU DE MODIFICACION: \n1. Nombre\n2. Direccion\n3.


Telefono\n4. Nickname\n5. Regresar al menu\n");
printf("Elija opcion: ");
scanf("%d", &opcion);

switch(opcion) {

case 1:
Departamento de Sistemas y Computación
Docente: Marelis Carrillo Lara printf("a) Modifique Nombre: ");
scanf("%s", amigos[posicion].nombre);

break;
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

case 2:

printf("b) Modifique Direccion: ");


scanf("%s", amigos[posicion].direccion);

break;

case 3:

printf("c) Modifique Telefono: ");


scanf("%s", amigos[posicion].telefono);

break;

case 4:

printf("d) Modifique Nickname: ");


scanf("%s", amigos[posicion].nickname);

break;

case 5:

printf("REGRESANDO AL MENU");

break;

5
default:

printf("Opcion invalida");

} while(opcion != 5);

} else {

printf("NO SE encontro el ID %d a modificar.", idModificar);

}
}
void eliminar(Amigo amigos[], int *totalAmigos, int idEliminar) {

if(*totalAmigos == -1) {

printf("NO SE HAN ingresados amigos aun.");

} else {

int posicion = buscar(amigos, *totalAmigos, idEliminar);

Departamento de Sistemas y Computación


if(posicion != -1) {
Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

for(i = posicion; i < *totalAmigos - 1; i++) {

amigos[i] = amigos[i + 1];

(*totalAmigos)--;

printf("Amigo con ID %d HA SIDO ELIMINADO.", idEliminar);

} else {

printf("NO SE encontro ID %d A ELIMINAR.", idEliminar);

}
void mostrar(Amigo amigos[], int totalAmigos) {

int i;

if(totalAmigos == - 1) {

6
printf("NO SE HAN ingresados amigos aun.");

} else {

printf("DATOS DE AMIGOS: \n\n");

for(i = 0; i <= totalAmigos; i++) {

printf("Id: %d\nNombre: %s\nDireccion: %s\nTelefono: %s\n"


"Nickanme: %s\n\n", amigos[i].id, amigos[i].nombre,
amigos[i].direccion, amigos[i].telefono,
amigos[i].nickname);

}
void guardarEnArchivo(Amigo amigos[], int totalAmigos) {

if(totalAmigos > -1) {

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

int i;
FILE* archivo;

archivo = fopen("amigos.txt", "w");

for(i = 0; i <= totalAmigos; i++) {

fprintf(archivo, "%d %s %s %s %s\n", amigos[i].id, amigos[i].nombre,


amigos[i].direccion, amigos[i].telefono,
amigos[i].nickname);

fclose(archivo);

}
void leerArchivo(Amigo amigos[], int *totalAmigos) {
FILE* archivo;

Amigo amigo;

7
archivo = fopen("amigos.txt", "r");

if(! ftell(archivo)) {

fscanf(archivo, "%d %s %s %s %s", &amigo.id, amigo.nombre, amigo.direccion,


amigo.telefono, amigo.nickname);

while(! feof(archivo)) {

ingresar(amigos, &(*totalAmigos), amigo);

fscanf(archivo, "%d %s %s %s %s", &amigo.id, amigo.nombre, amigo.direccion,


amigo.telefono, amigo.nickname);

printf("\n\n\n");

} else {

printf("Archivo vacio");

fclose(archivo);
}

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

SU FUNCIONAMIENTO:

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

REGISTRO AMIGOS-AGENDA EN BLOC DE NOTAS O IGUAL A DOCUMENTO .txt

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

-Conclusión Puedo comentar en conclusión con ésta actividad, que si tenemos en

cuenta que la programación utilizando lenguaje "C" para resolución de situaciones o


planteamientos ya sean matemáticos o de otra índole como lo fue en esta actividad especial
en el tema de FUNCIONES, pues más que nada el poder dominar su uso es de gran
importancia, ya que permiten modularizar nuestro código, separarlo según las tareas que
requerimos Por Ejemplo, una función para abrir, otra para cerrar, otra para actualizar, para
buscar, para añadir, etc. y que con ello básicamente deben contener la implementación de
una utilidad de nuestra aplicación, es decir que por cada utilidad básica (abrir, cerrar, cargar,
mover, etc.) sería adecuado tener al menos una función asociada a ésta. Y es porque en
realidad, dichas herramientas en el lenguaje "C" con el software tal como C++, pues como
ingenieros industriales nos podrá ayudar para mejorar nuestras habilidades para desarrollar
algoritmos eficaces, enriquecer vocabulario de construcciones de programación, y en sistemas
de producción, entre otros o mejor aún para diseñar resultados de serie de pasos para resolver
situaciones planteadas y así poder tomar decisiones eficaces.

-Referencias-
1.- Wikilibros. Programación en C++/Lo más básico-Lenguage en C - Wikilibros. (s. f.). Wikilibros. Recuperado
13 de mayo de 2023, de
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C++/Lo_m%C3%A1s_b%C3%A1sico

2.- TylerMSFT. (2023, 3 abril). Funciones (C++). Microsoft Learn. Recuperado 13 de mayo de 2023, de
https://learn.microsoft.com/es-es/cpp/cpp/functions-cpp?view=msvc-170

3.- Funciones en C++ — Fundamentos de Programación en C++. (s. f.). Recuperado 13 de mayo de 2023, de
https://www2.eii.uva.es/fund_inf/cpp/temas/8_funciones/funciones.html

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TOLUCA

-ANEXO RECUPERADO DE INTERNET-

FUNCIONES EN C++

Referencia: A. (s. f.). Funciones en C++ Ejemplos. Blogspot. Recuperado 13 de mayo de 2023, de
http://ejercicioscpp.blogspot.com/2013/10/funciones-en-c-ejemplos.html

Departamento de Sistemas y Computación


Docente: Marelis Carrillo Lara

También podría gustarte