s9163+4
Ejercicio 1
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
using namespace std;
struct trabajador{
char nombre[10];
char apellido[20];
char direccion[20];
};
void actualizarFichero(string name, trabajador lst[], int count);
void agregarTrabajador(trabajador lst[], int &count);
void ingresarInfo(trabajador &trab);
void modificarTrabajador(trabajador &trab);
void eliminarTrabajador(trabajador lst[], int &count, int index);
void menuOpciones();
void menuTrabajador();
void mostrarTrabajadores(trabajador lst[], int &count);
int main(){
string name = "agenda.dat";
FILE *fich;
trabajador lista[64];
int opc, topc, count = 0;
bool salir = false;
if ((fich=fopen(name.c_str(), "w"))==NULL){
cout<<"ERROR AL ABRIR FICHERO" << endl;
}
fclose(fich);
while(salir == false){
menuOpciones();
cin >> opc;
switch(opc){
case 1:
agregarTrabajador(lista,count);
cout << "Presione cualquier tecla para continuar..";
break;
case 2:
cout << "Lista de trabajadores"<<endl;
mostrarTrabajadores(lista,count);
cout << "Elija el trabajador a modificar: " << endl;
cin>> topc;
topc--;
modificarTrabajador(lista[topc]);
cout<< "Presione cualquier tecla para continuar..";
getch();
break;
case 3:
cout << "Lista de trabajadores"<<endl;
mostrarTrabajadores(lista,count);
cout << "Elija el trabajador a eliminar: " << endl;
cin>> topc;
topc--;
eliminarTrabajador(lista,count,topc);
cout<< "Presione cualquier tecla para continuar..";
getch();
break;
case 4:
cout << "Lista de trabajadores"<<endl;
mostrarTrabajadores(lista,count);
cout<< "Presione cualquier tecla para continuar..";
getch();
break;
case 5:
salir=true;
break;
}
actualizarFichero(name, lista, count);
system("cls");
}
return 0;
}
void actualizarFichero(string name, trabajador lst[], int count){
FILE*fich;
if ((fich=fopen(name.c_str(),"w"))==NULL) {
cout<<"ERROR AL ABRIR FICHERO" << endl;
return;
}
fputs("Lista de trabajadores: \n", fich);
for (int i = 0; i < count; i++){
fputs(lst[i].nombre, fich); fputc('\t', fich);
fputs(lst[i].apellido, fich); fputc('\t', fich);
fputs(lst[i].direccion, fich); fputc('\t', fich);
}
fclose (fich);
}
void agregarTrabajador(trabajador lst[], int &count){
trabajador tmp;
ingresarInfo(tmp);
lst[count] = tmp;
count++;
cout << "Informacion ingresada correctamente" << endl;
}
void ingresarInfo(trabajador &trab)
{
cout << endl << "Ingrese la informacion del trabajador:" << endl;
cout << "Ingrese el nombre del trabajador: ";
cin >> trab.nombre;
cout << "Ingrese el apellido del trabajador:" << endl;
cin >> trab.apellido;
cout << "Ingrese la direccion del trabajador:" << endl;
cin >> trab.direccion;
}
void menuOpciones()
{
cout << "LISTA TRABAJADORES" << endl;
cout << "1.- Agregar trabajador" << endl;
cout << "2.- Modificar trabajador" << endl;
cout << "3.- Eliminar trabajador" << endl;
cout << "4.- Mostrar registro" << endl;
cout << "5.- Salir" << endl;
}
void menuTrabajador()
{
cout << "LISTA DE DATOS" << endl;
cout << "1.- Nombre" << endl;
cout << "2.- Apellido" << endl;
cout << "3.- Direccion" << endl;
}
void modificarTrabajador(trabajador &trab){
int opc;
menuTrabajador();
cin >> opc;
char tmp[30];
switch(opc){
case 1:
cout << "Ingrese el nuevo nombre: ";
cin>> tmp;
strcpy(trab.nombre, tmp);
break;
case 2:
cout << "Ingrese el nuevo apellido: ";
cin>> tmp;
strcpy(trab.apellido, tmp);
break;
case 3:
cout << "Ingrese la nueva direccion: ";
cin>> tmp;
strcpy(trab.direccion, tmp);
break;
}
cout << "Informacion ingresada correctamente " << endl;
}
void eliminarTrabajador(trabajador lst[], int &count, int index){
int new_count = 0;
for(int i = 0;i < count; i++){
lst[new_count] = lst[i];
if (i !=index){new_count++; }
}
count = new_count;
cout << "Eliminado correctamente" << endl;
}
void mostrarTrabajadores(trabajador lst[], int &count){
for(int i = 0;i < count; i++){
cout<< i + 1 << '\t';
cout<< lst[i].nombre << '\t';
cout<< lst[i].apellido << '\t';
cout<< lst[i].direccion << '\t';
}
}
EJERCICIO 2
#include <iostream>
#include <conio.h>
using namespace std;
int max(int a, int b) {
if (a > b) {
return a;
}
return b;
void mostrarMenu();
int** crearMatriz(int rows, int cols);
void eliminarMatriz(int** m, int rows, int cols);
void mostrarMenu() {
cout << "**************" << endl;
cout << "** E **" << endl;
cout << "** L **" << endl;
cout << "** E 2 **" << endl;
cout << "** C 0 **" << endl;
cout << "** C 2 **" << endl;
cout << "** I 3 **" << endl;
cout << "** O **" << endl;
cout << "** N **" << endl;
cout << "** E **" << endl;
cout << "** S **" << endl;
cout << "**************" << endl;
cout << "** OPCIONES **" << endl;
cout << "**************" << endl;
cout << " 1. LLENAR VOTOS" << endl;
cout << " 2. IMPRIMIR VOTOS" << endl;
cout << " 3. MOSTRAR GANADOR" << endl;
cout << " 0. SALIR" << endl;
cout << "Ingrese la opcion que desee: ";
}
int** crearMatriz(int rows, int cols) {
int** m = new int* [rows];
for (int i = 0; i < rows; i++) {
m[i] = new int[cols];
}
return m;
}
void eliminarMatriz(int** m, int rows, int cols) {
for (int i = 0; i < rows; i++) {
delete[] m[i];
}
delete[] m;
void llenarVotosC(int* v, char* can, int n_can, int n_dist) {
cout << "Candidato " << can[n_can] << endl;
for (int i = 0; i < n_dist; i++) {
cout << "Ingrese la cantidad de votos [" << i + 1 << "]: ";
cin >> v[i];
}
}
void llenarVotos(int** m, char* can, int n_can, int n_dist) {
cout << "**************" << endl;
cout << "** LLENADO DE VOTOS **" << endl;
cout << "**************" << endl;
for (int i = 0; i < n_can; i++) {
llenarVotosC(m[i], can, i, n_dist);
void imprimirVotosC(int* v, char* can, int n_can, int n_dist) {
cout << "Candidato " << can[n_can] << endl;
int sum = 0;
for (int i = 0; i < n_dist; i++) {
cout << "Distrito [" << i + 1 << "]: " << v[i] << endl;
sum += v[i];
}
cout << "La suma total de los votos del candidato " << can[n_can] << " es: "
<< sum << endl;
void imprimirVotos(int** m, char* can, int n_can, int n_dist) {
cout << "**************" << endl;
cout << "** IMPRESION DE VOTOS **" << endl;
cout << "**************" << endl;
for (int i = 0; i < n_can; i++) {
imprimirVotosC(m[i], can, i, n_dist);
cout << "**************" << endl;
}
}
void obtenerGanador(int** m, char* can, int n_can, int n_dist) {
cout << "**************" << endl;
cout << "** GANADOR **" << endl;
cout << "**************" << endl;
int sumas[4] = { 0,0,0,0 };
int ganador = 0, may;
for (int i = 0; i < n_can; i++) {
for (int j = 0; j < n_dist; j++) {
sumas[i] += m[i][j];
}
}
may = sumas[0];
for (int i = 1; i < 4; i++) {
if (may < max(may, sumas[i])) {
may = sumas[i];
ganador = i;
}
}
cout << "El ganador es el candidato " << can[ganador] << " con una suma de "
<< sumas[ganador] << " votos." << endl;
int main() {
int opc;
bool salir = false;
char candidatos[5] = "ABCD";
int** votos = crearMatriz(4, 5);
while (salir == false) {
mostrarMenu();
cin >> opc;
system("cls");
switch (opc) {
case 0:
salir = true;
break;
case 1:
llenarVotos(votos, candidatos, 4, 5);
break;
case 2:
imprimirVotos(votos, candidatos, 4, 5);
break;
case 3:
obtenerGanador(votos, candidatos, 4, 5);
}
_getch();
system("cls");
}
eliminarMatriz(votos, 4, 5);