Está en la página 1de 21

Universidad Mariano Gálvez de Guatemala

Ingeniería en sistemas de información y ciencia de


la computación
Curso: Algoritmos
Sección: ¨A¨
Segundo semestre
Licenciado: NILDA CAROLINA RIVERA LOPEZ

PROYECTO FINAL

Nombre: Carnet:
Alejandro Vinicio Chavez Archila 7691-21-15096
Marco Enrique Contreras Laú 7691-21-867
Douglas Alexander Yol Baten 7691-21-6387

GUATEMALA 06/11/2021
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

Problema No. 1 - Vectores/Arreglos


Desarrolle un programa en Python, que contenga un vector de 250 posiciones y que permita el
ingreso de números, el programa deberá imprimir el vector resultante y cuantos números fueron
ingresados más de una vez y cuantas veces.

Fases de Resolución de un problema:

Análisis (Datos de Entrada, Proceso, Salida)

Datos de Entrada:
1. Conocer tipo de dato ingresado
2. Conocer los números ingresados por el usuario

Proceso:
1. Guardar los datos ingresados por el usuario
2. Almacenar datos en vectores
3. Calcular cantidad de números ingresados

Salida:
1. Mostrar datos
2. Mostrar Resultados.

Diseño (Diagrama de Flujo)

Código del Programa

def ele(po):

return {i:po.count(i) for i in po}

N=int(input("Ingrese el tamaño de la lista:"))##muestra mensaje al usuario

po=[ None ]*(N+1)##este sera nuestro vector

for I in range (1,N+1,1):#ciclo que procesa las veces para el ingreso de datos

po[I]=int (input("Ingrese un numero: "))##muestra mensaje al usuario

resultado=ele(po)

maximo=max(po, key=resultado.get)### esto nos permite conocer la cuantas veces se ingreso un


numero

print("El valor mas repetido es el ",maximo," con ",resultado[maximo]," veces")##muestra la


cantidad

1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION
Corridas del Programa

2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

Problema No. 2 - Registros


Desarrolle un programa en C++, que permita crear un registro de vendedores donde nos pedirán
información sobre, Nombre, Apellido, Dirección, DPI, Artículos que vende, número de artículos
que tiene en inventario, artículos vendidos, artículos que quedan, precio de cada uno, el precio de
todos los artículos de cada vendedor.

Cumplir con las fases de Resolución de un problema:

Análisis (Datos de Entrada, Proceso, Salida)


Datos de Entrada:
1) Ingresar Datos de Vendedores
2) Ingresar Productos de Vendedores

Datos en Proceso:
1) Almacenar los datos ingresados
2) Ingresar Cantidades de Productos y Vendedores
3) Calcular Subtotal y Total de Productos Vendidos
4) Buscar vendedor por número y DPI
5) Eliminar Vendedor por número

Datos de Salida:
1) Mostrar los datos ingresados
2) Mostrar resultado final almacenado
Diseño (CASOS DE USO/ USO DE PLANTILLA)

Código del Programa en C++

#include <iostream> // BILBIOTECA PARAR EL ACCESO A LOS DISPOSITIVOS DE


ENTRADA/SALIDA //

#include <stdlib.h> // BIBLIOTECA PARA CAMBIO DE COLOR DE CONSOLA //

#define MAXCAD 50 // MAXCAD HACE REFERENCIA A LA LONGITUD MAXIMA DE LAS


CADENAS QUE SE USAN EN EL PROGRAMA //

#define MAX_V 100 // ACA COLOCAREMOS ESTA BIBLIOTECA PARA LA FUNCIÓN DEL
NUMERO DE VENDEDORES //

#define MAX_PV 100 // BIBLIOTECA PARA LA FUNCIÓN DEL MAXIMO DE LOS PRODUCTOS
VENDIDOS //

using namespace std;

struct unProducto {

char name_prod[MAXCAD]; // FUNCION PARA EL NOMBRE DEL PRODUCTO //

1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION
int cantidad;

int precio ;

int subtotal;

};

struct variosProductos {

int numProd ; // NO. DE PRODUCTO POR CADA VENDEDOR //

unProducto vp[MAX_PV]; // PRODUCTO POR CADA VECTOR //

int precioTotal ;

};

struct Vendedor {

char nombre[MAXCAD] ;

char apellido[MAXCAD] ;

char direccion[MAXCAD];

int DPI ;

variosProductos P ;

};

struct Vendedor lista[MAX_V]; // REALIZAREMOS UN ARRAY PARA VENDEDORES //

struct Vendedor aux;

void registrar_productos(int nv, int np)

// NV= NO. VENDEDOR

for(int i=0; i<np; i++)

cout<<"\n\tPRODUCTO "<< i+1 <<endl;

cin.ignore();

cout<<"\t\tNOMBRE : " ;

cin.getline( lista[nv].P.vp[i].name_prod, MAXCAD );


2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

//cin.ignore();

cout<<"\t\tCANTIDAD : ";

cin>> lista[nv].P.vp[i].cantidad ;

//cin.ignore();

cout<<"\t\tPRECIO : ";

cin>> lista[nv].P.vp[i].precio ;

lista[nv].P.vp[i].subtotal = lista[nv].P.vp[i].cantidad * lista[nv].P.vp[i].precio ; // EL SUBTOTAL


LO SACAREMOS CON PRECIO * CANTIDAD = SUBTOTAL //

if(lista[nv].P.vp[i].subtotal==0)

cout<<"SUBTOTAL 0";

lista[nv].P.precioTotal = lista[nv].P.precioTotal + lista[nv].P.vp[i].subtotal ;

void registrar_vendedores(int n)

int np ; // FUNCION PARA NUMEROS DE PRODUCTOS PARA EL VENDEDOR //

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

cout<<"\nVENDEDOR "<< i+1 << "\n";

cin.ignore(); cout << " NOMBRES : "; cin.getline( lista[i].nombre, MAXCAD );

cin.ignore(); cout << " APELLIDOS : "; cin.getline( lista[i].apellido, MAXCAD );

cin.ignore(); cout << " DIRECCION : "; cin.getline( lista[i].direccion, MAXCAD);

cin.ignore(); cout << " DPI : "; cin>> lista[i].DPI ;

cout<<"\n > NO. DE PRODUCTOS: "; cin>> lista[i].P.numProd ;

registrar_productos( i ,lista[i].P.numProd );

1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION
}

void datosVendedor(int x, int num)

if(num>0)

cout<<endl<<endl;

cout << "\t" << lista[x].nombre <<' '<< lista[x].apellido << endl;

cout << " DPI : "<< lista[x].DPI << endl;

cout << " DIRECCION: "<< lista[x].direccion << endl;

else

cout<<"\n\tERROR!! REGISTRO NO INGRESADO";

void prodVendedor(int x, int num)

if(num>0)

cout<<endl<<endl;

cout << " Productos de " << lista[x].nombre <<' '<< lista[x].apellido << endl<<endl;

for(int i=0; i<lista[x].P.numProd; i++)

cout<<"\n PRODUCTO "<< i+1 <<endl;

cout<<"\tNOMBRE : " << lista[x].P.vp[i].name_prod <<endl;

cout<<"\tCANTIDAD: " << lista[x].P.vp[i].cantidad <<endl;

cout<<"\tPRECIO : " << lista[x].P.vp[i].precio <<endl;

cout<<"\tSUBTOTAL: " << lista[x].P.vp[i].subtotal <<endl ;


2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

cout<<endl;

cout<<" ___________________________"<<endl;

cout<<" EL PRECIO TOTAL ES DE : "<< lista[x].P.precioTotal;

else

cout<<"\n\tERROR!! REGISTRO NO INGRESADO";

void mostrar_productos(int nv)

cout<<" PRODUCTOS: \n";

for(int i=0; i<lista[nv].P.numProd; i++)

cout<<"\t- " << lista[nv].P.vp[i].name_prod <<endl ;

void mostrar_vendedores(int num)

if( num>0)

cout<<"\n\nLISTA DE VENDEDORES\n";

for(int i=0; i<num; i++)

cout<<endl<<endl;

cout<< i+1<<". "<< lista[i].nombre <<' '<< lista[i].apellido << endl;

cout << " DPI : "<< lista[i].DPI << endl;


1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION
cout << " DIRECCION: "<< lista[i].direccion << endl;

mostrar_productos( i );

cout<<endl;

else

cout<<"\n\tERROR!! REGISTRO NO INGRESADO";

void eliminar_vendedor( int x, int &num)

if(num>0)

for(int i=x; i<num-1; i++)

lista[i] = lista[i+1];

num--;

else

cout<<"\n\tERROR!! REGISTRO NO INGRESADO";

void buscar_vendedor( int num)

int band = 0;

if(num>0)

for(int i=0; i<num; i++)

{
2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

if(lista[i].DPI==aux.DPI)

cout<<"\n\n LA DIRECCION ES "<<lista[i].nombre<<" "

<<lista[i].apellido<<" ES : "

<<lista[i].direccion <<endl ;

band = 1 ;

break;

else

cout<<"\n\tERROR!! REGISTRO NO INGRESADO";

if(band==0)

cout<<"\n\n\tERROR!! VENDEDOR NO INGRESADO! :S"<<endl;

void menu1()

cout<<"\n\tREGISTRO DE VENDEDORES\n\n";

cout<<" 1. INGRESAR VENDEDORES "<<endl;

cout<<" 2. IMPRIMIR REGISTRO VENDEDOR Y PRODUCTOS "<<endl;

cout<<" 3. IMPRIMIR DATOS DE VENDEDORES "<<endl;

cout<<" 4. IMPRIMIR PRODCTOS VENDIDOS POR VENDEDOR "<<endl;

cout<<" 5. ELIMINAR VENDEDOR DEL REGISTRO "<<endl;

cout<<" 6. BUSCAR RESIDENCIA DE VENDEDOR DPI "<<endl;

cout<<" 7. SALIR "<<endl;


1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION
cout<<"\n POR FAVOR, ELIJA SU OPCION : ";

int main()

int num=0; // FUNCIÓN NUMERO DE VENDEDORES //

int op; // FUNCION PARA LA OPCION DEL MENÚ //

int num_vendedor ;

system("color 0A"); // CÓDIGO PARA CAMBIAR COLOR A LA CONSOLA //

do

menu1(); cin>> op;

switch(op)

case 1:

cout<<"\n NO. DE VENDEDORES: ";

cin>> num;

registrar_vendedores(num); cout<<endl;

break;

case 2:

mostrar_vendedores(num);

break;

case 3:

cout<<"\n POR FAVOR, INGRESE NUMERO DE VENDEDOR: ";

cin>> num_vendedor ;

datosVendedor( num_vendedor-1, num);

break;
2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

case 4:

cout<<"\n POR FAVOR, INGRESE NUMERO DE VENDEDOR: ";

cin>> num_vendedor ;

prodVendedor( num_vendedor-1, num);

break;

case 5:

cout<<"\n POR FAVOR, INGRESE NUMERO DE VENDEDOR: ";

cin>> num_vendedor ;

eliminar_vendedor( num_vendedor-1, num);

cout<<"\n\n\t\tVendedor eliminado ..!"<<endl;

break;

case 6:

cout<<"\n INSERTE NO. DPI: ";

cin>> aux.DPI;

buscar_vendedor(num);

break;

cout<<endl<<endl;

system("pause"); system("cls");

} while(op != 7);

return 0;

1
Diseño (CASOS DE USO/ USO DE PLANTILLA)
Corridas del Programa
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

Problema No. 3 - ARCHIVOS


Desarrolle un programa que almacene la información de una guía telefónica: Apellidos, Nombres,
Dirección, Teléfono.

Desplegar lo siguiente:
1. Listado General de Personas.
2. Listado de Personas por Departamento.
3. Listado de Personas por Municipio.

Cumplir con las fases de Resolución de un problema:

Análisis (Datos de Entrada, Proceso, Salida)

Datos de Entrada:

1) Ingresar Datos del contacto (Nombre, Apellido, Dirección, Municipio, Departamento y Teléfono.)

Datos en Proceso:

1) Almacenar los datos ingresados en un documento TXT.

2) Ingresar Contactos en el archivo txt.

3) Desplegar todos los datos registrados en el archivo txt.

4) Buscar contactos por Departamento.

5) Buscar contactos por Municipio.

Datos de Salida:

1) Mostrar los datos ingresados

2) Mostrar resultado final almacenado

Código del Programa en C++

#include <iostream> // BILBIOTECA //


#include <fstream>// BILBIOTECA //
#include <windows.h>// BILBIOTECA //

using namespace std;

struct dDatos{
string nombre,apellido,direccion,departamento,municipio,telefono;
}datos; /*Declaramos nuestras variable para las funciones que utilizaremos*/

void agregar_contacto(); //Fumciom para registrar um contacto//

1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION
void visualizar_contacto(); //Esta Funcion nos permite ver todos los dartos
registrados//
void buscar_Dep(); //Esta funcion nos permite Buscar los
contactos por Departamento//
void buscar_Muni();

int menu(){ //Esto nos permitira visualizar un menu al correr el programa//


int x;
system("cls");
cout<<"<<----------Bienvenido--------------"<<endl<<endl;
cout<<"1. agregar contacto"<<endl;
cout<<"2. Ver contactos"<<endl;
cout<<"3. Buscar Por Departamento"<<endl;
cout<<"4. Buscar por Municipio"<<endl;
cout<<"5. Salir"<<endl;
cout<<"opcion";
cin>>x;
return x;
}

void agregar_contacto(ofstream &es){ //Fumciom para registrar um contacto//


system("cls");
char rpt; //DECLARAMOS ESTA VARIABLE PARA PODER CREAR UNA FUNCION
REPETITIVA//

es.open("GuiaTelefonica.txt", ios::out | ios::app); //AQUI LE DECIMOS AL PROGRAMA


QUE ABRA EL ARCHIVO TXT. LLAMADO "GuiaTelefonica", y si no existe que lo cree.

if(es.fail()){ //ESTE IF NOS DIRA SI EL ARCHIVO NO


SE PUDO ABRIR POR QUE ESTE DAÑADO,//
cout<<"No se pudo abrir el archivo";
exit(1);
}

do{
fflush(stdin); //NOS SOLICITARA TODOS LOS DATOS QUE NECESITAMOS //
cout<<"\nDigite su nombre: ";
getline(cin,datos.nombre);
cout<<"Digite su apellido: ";
getline(cin,datos.apellido);
cout<<"Digite su direccion: ";
getline(cin,datos.direccion);
cout<<"Digite su Departamento: ";
getline(cin,datos.departamento);
cout<<"Digite su Municipio: ";
getline(cin,datos.municipio);
cout<<"Digite su telefono: ";
getline(cin,datos.telefono);
cout<<"\n";

es<<"\nNombre: "<<datos.nombre<<endl; //REGISTRARA TODOS LOS DATOS SOLICITADOS


EN EL ARCHIVO TXT EN EL ORDEN QUE DECEAMOS//
es<<"Apellido: "<<datos.apellido<<endl;
2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

es<<"Direccion: "<<datos.direccion<<" "<<datos.municipio<<"


"<<datos.departamento<<endl;
es<<"Telefono: "<<datos.telefono<<endl;

cout<<"\nDesea agregar otro contacto(S/N): "; // AL TERMINAR EL PRIMER REGISTRO NOS


CONSULTARA SI DESEAMOS REGISTRAR A ALGUIEN MAS "S" PARA CONTINUAR Y "N" PARA REGRESAR AL
MENU//
cin>>rpt;
}while(rpt == 'S' || rpt == 's'); // CON ESTA FUNCION NOS CONSULTARA TODAS LAS VESE QUE
TERMINEMOS DE REGISTRAR CADA CONTACTO ASTA QUE YA NO QUERAMOS//

es.close(); //AQUI LE INDICAMOS AL PROGRAMA QUE CUANDO TERMINEMOS DE REGISTRAR CADA


CONTACTO NOS CIERRE EL ARCHIVO PARA QUE NO AYA NINGUN ERROR.//
}

void visualizar_contacto(){ //ESTA FUNCION NOS PERMITRA VISUALIZAR TODOS LOS CONTACTOS
REGISTRADOS//
ifstream es; //DECLARAMOS NUESTRO ARCHIVO COMO ES//
string texto; //DECLARAMOS LA VARIABLE TEXTO//
system("cls");

es.open("GuiaTelefonica.txt", ios::in); // LE INDICAMOS AL PROGRAMA QUE ABRA EL ARCHIVO


EXISTENTE PARA VISUALIZAR EL CONTENIDO//

if(es.fail()){ /*Esta es una condicional la cual nos dara el mensaje "No se pudo crear el archivo"
si ubo un problema a la hora de crear el archivo*/
cout<<"No se pudo abrir el archivo"<<endl;
exit(1);
}

while(!es.eof()){
getline(es,texto); //NOS DESPLEGARA TODA LA INFORMACION DEL ARCHIVO//
cout<<texto<<endl;
}
es.close(); //CERRARA EL ARCHIVO//
}

void buscar_Dep(ifstream &es){//ES UNA FUNCION PARA BUSCAR UN REGISTRO//


system("cls");
es.open("GuiaTelefonica.txt", ios::in);
string Dep;
bool encontrado;
cout<<"Digite el Departamento: "<<endl;
cin>>Dep;
es>>datos.nombre;
while(es.eof() && !encontrado){
es>>datos.apellido;
es>>datos.nombre;
es>>datos.telefono;
es>>datos.direccion;
es>>datos.municipio;
1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION
es>>datos.departamento;
if(datos.departamento == Dep){
cout<<"Nombre-----: "<<datos.nombre<<endl;
cout<<"Apellido---: "<<datos.apellido<<endl;
cout<<"Direccion--: "<<datos.direccion<<" "<<datos.municipio<<"
"<<datos.departamento<<endl;
cout<<"Telefono---: "<<datos.telefono<<endl;
encontrado = true; // EN ESTE IF LE ESTAMOS DICIENDO QUE SI LA VARIABLE
DEPARTAMENTO ES = A DEP NOS IMPRIMIRA LOS DATOS DEL CONTACTO//
}
es>>datos.nombre;
}
es.close(); //CIERRA EL ARCHIVO DE REGISTROS//
}

void buscar_Muni(ifstream &es){//ES UNA FUNCION PARA BUSCAR UN REGISTRO//


system("cls");
es.open("GuiaTelefonica.txt", ios::in);
string Mun;
bool encontrado;
cout<<"Digite el Municipio: "<<endl;
cin>>Mun;
es>>datos.nombre;
while(es.eof() && !encontrado){
es>>datos.apellido;
es>>datos.nombre;
es>>datos.telefono;
es>>datos.direccion;
es>>datos.municipio;
es>>datos.departamento;
if(datos.municipio == Mun){
cout<<"Nombre-----: "<<datos.nombre<<endl;
cout<<"Apellido---: "<<datos.apellido<<endl;
cout<<"Direccion--: "<<datos.direccion<<" "<<datos.municipio<<"
"<<datos.departamento<<endl;
cout<<"Telefono---: "<<datos.telefono<<endl;
encontrado = true; // EN ESTE IF LE ESTAMOS DICIENDO QUE SI LA VARIABLE
DEPARTAMENTO ES = A DEP NOS IMPRIMIRA LOS DATOS DEL CONTACTO//
}
es>>datos.nombre;
}
es.close(); //CIERRA EL ARCHIVO DE REGISTROS//
}

int main(){
ofstream Esc;
ifstream es;
int op;
do{ //ESTA ES LA ESTRUCTURA DE NUESTRO MENU//
system("cls");
op = menu();
switch(op){
case 1:
2
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

agregar_contacto(Esc);
break;
case 2:
visualizar_contacto();
system("pause");
break;
case 3:
buscar_Dep(es);
system("pause");
case 4:
buscar_Muni(es);
system("pause");
}
}while(op !=6);

return 0;
}

Corridas del Programa

1
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
INGENIERIA EN SISTEMAS DE INFORMACION Y CIENCIA DE COMPUTACION

DIAGRAMA DE
CASO DE USO

También podría gustarte