0% encontró este documento útil (0 votos)
16 vistas13 páginas

Programacion 2

El documento describe la configuración de un proyecto en C++ en Visual Studio y presenta cinco ejercicios prácticos. Estos ejercicios incluyen la gestión de estudiantes con estructuras, ordenamiento de arrays, gestión de inventario, manejo de archivos para empleados y búsqueda binaria en un array ordenado. Cada ejercicio destaca características avanzadas como el uso de funciones, estructuras y algoritmos de ordenamiento y búsqueda.
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)
16 vistas13 páginas

Programacion 2

El documento describe la configuración de un proyecto en C++ en Visual Studio y presenta cinco ejercicios prácticos. Estos ejercicios incluyen la gestión de estudiantes con estructuras, ordenamiento de arrays, gestión de inventario, manejo de archivos para empleados y búsqueda binaria en un array ordenado. Cada ejercicio destaca características avanzadas como el uso de funciones, estructuras y algoritmos de ordenamiento y búsqueda.
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

Configuración en Visual Studio:

1. Crear un nuevo proyecto: Empty Project en C++

2. Agregar un archivo .c (Source Files → Add → New Item → C++ File, pero
guardar con extensión .c)

Ejercicio 1: Gestión de estudiantes con estructuras

Enunciado: Crear un programa que gestione información de estudiantes usando


estructuras.

#include <stdio.h>

#include <string.h>

// Definición de la estructura

struct Estudiante {

char nombre[50];

int edad;

float promedio;

};

int main() {

struct Estudiante estudiante1;

// Capturar datos

printf("Ingrese el nombre del estudiante: ");

fgets([Link], 50, stdin);

[Link][strcspn([Link], "\n")] = 0; // Eliminar salto de


línea

printf("Ingrese la edad: ");


scanf("%d", &[Link]);

printf("Ingrese el promedio: ");

scanf("%f", &[Link]);

// Mostrar datos

printf("\n--- Datos del Estudiante ---\n");

printf("Nombre: %s\n", [Link]);

printf("Edad: %d años\n", [Link]);

printf("Promedio: %.2f\n", [Link]);

return 0;

Características avanzadas:

• Uso de estructuras (struct)

• fgets para cadenas con espacios

• Manipulación de strings

Ejercicio 2: Ordenamiento de un array con funciones

Enunciado: Implementar el algoritmo de ordenamiento burbuja usando


funciones.

#include <stdio.h>

// Prototipo de funciones

void ordenarBurbuja(int arr[], int n);

void imprimirArray(int arr[], int n);


int main() {

int numeros[10];

int n, i;

printf("¿Cuántos números desea ingresar? (máx 10): ");

scanf("%d", &n);

printf("Ingrese %d números:\n", n);

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

printf("Número %d: ", i + 1);

scanf("%d", &numeros[i]);

printf("\nArray original: ");

imprimirArray(numeros, n);

ordenarBurbuja(numeros, n);

printf("Array ordenado: ");

imprimirArray(numeros, n);

return 0;

// Función para ordenar usando algoritmo burbuja

void ordenarBurbuja(int arr[], int n) {

int i, j, temp;

for(i = 0; i < n-1; i++) {


for(j = 0; j < n-i-1; j++) {

if(arr[j] > arr[j+1]) {

// Intercambiar elementos

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

// Función para imprimir array

void imprimirArray(int arr[], int n) {

int i;

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

printf("%d ", arr[i]);

printf("\n");

Características avanzadas:

• Funciones con arrays como parámetros

• Algoritmo de ordenamiento

• Modularización del código

Ejercicio 3: Gestión de inventario con arrays de estructuras

Enunciado: Sistema simple de inventario que maneje múltiples productos.

#include <stdio.h>
#include <string.h>

#define MAX_PRODUCTOS 5

struct Producto {

int codigo;

char nombre[30];

float precio;

int stock;

};

int main() {

struct Producto inventario[MAX_PRODUCTOS];

int i, cantidad;

printf("=== SISTEMA DE INVENTARIO ===\n");

// Ingresar productos

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

printf("\nProducto %d:\n", i + 1);

inventario[i].codigo = i + 1;

printf("Nombre: ");

getchar(); // Limpiar buffer

fgets(inventario[i].nombre, 30, stdin);

inventario[i].nombre[strcspn(inventario[i].nombre, "\n")] = 0;
printf("Precio: ");

scanf("%f", &inventario[i].precio);

printf("Stock: ");

scanf("%d", &inventario[i].stock);

// Mostrar inventario

printf("\n=== INVENTARIO ACTUAL ===\n");

printf("%-5s %-20s %-10s %-5s\n", "Código", "Nombre", "Precio", "Stock");

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

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

printf("%-5d %-20s $%-9.2f %-5d\n",

inventario[i].codigo,

inventario[i].nombre,

inventario[i].precio,

inventario[i].stock);

return 0;

Características avanzadas:

• Array de estructuras

• Formato de salida con printf

• Manejo de buffers de entrada

Ejercicio 4: Manejo de archivos - Registro de empleados


Enunciado: Programa que guarda y lee información de empleados desde un
archivo.

#include <stdio.h>

#include <stdlib.h>

struct Empleado {

int id;

char nombre[50];

char departamento[30];

float salario;

};

void guardarEmpleados();

void leerEmpleados();

int main() {

int opcion;

do {

printf("\n=== SISTEMA DE EMPLEADOS ===\n");

printf("1. Guardar empleados\n");

printf("2. Leer empleados\n");

printf("3. Salir\n");

printf("Seleccione una opción: ");

scanf("%d", &opcion);

switch(opcion) {
case 1:

guardarEmpleados();

break;

case 2:

leerEmpleados();

break;

case 3:

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

break;

default:

printf("Opción inválida!\n");

} while(opcion != 3);

return 0;

void guardarEmpleados() {

FILE *archivo;

struct Empleado emp;

int n, i;

archivo = fopen("[Link]", "wb");

if(archivo == NULL) {

printf("Error al crear el archivo!\n");

return;

}
printf("¿Cuántos empleados desea ingresar? ");

scanf("%d", &n);

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

printf("\nEmpleado %d:\n", i + 1);

[Link] = i + 1;

printf("Nombre: ");

getchar();

fgets([Link], 50, stdin);

[Link][strcspn([Link], "\n")] = 0;

printf("Departamento: ");

fgets([Link], 30, stdin);

[Link][strcspn([Link], "\n")] = 0;

printf("Salario: ");

scanf("%f", &[Link]);

fwrite(&emp, sizeof(struct Empleado), 1, archivo);

fclose(archivo);

printf("Datos guardados correctamente!\n");

void leerEmpleados() {

FILE *archivo;
struct Empleado emp;

archivo = fopen("[Link]", "rb");

if(archivo == NULL) {

printf("No hay datos guardados!\n");

return;

printf("\n=== LISTA DE EMPLEADOS ===\n");

printf("%-5s %-20s %-15s %-10s\n", "ID", "Nombre", "Departamento", "Salario");

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

while(fread(&emp, sizeof(struct Empleado), 1, archivo)) {

printf("%-5d %-20s %-15s $%-9.2f\n",

[Link], [Link], [Link], [Link]);

fclose(archivo);

Características avanzadas:

• Manejo de archivos binarios (fopen, fwrite, fread)

• Funciones con estructuras

• Menú interactivo

Ejercicio 5: Búsqueda binaria en array ordenado

Enunciado: Implementar búsqueda binaria con funciones recursivas.

#include <stdio.h>
// Prototipos

int busquedaBinaria(int arr[], int inicio, int fin, int objetivo);

void ordenarArray(int arr[], int n);

int main() {

int numeros[10];

int n, i, objetivo, resultado;

printf("Ingrese la cantidad de números (máx 10): ");

scanf("%d", &n);

printf("Ingrese %d números ordenados:\n", n);

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

printf("Número %d: ", i + 1);

scanf("%d", &numeros[i]);

// Asegurar que el array esté ordenado

ordenarArray(numeros, n);

printf("Array ordenado: ");

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

printf("%d ", numeros[i]);

printf("\n");

printf("Ingrese el número a buscar: ");


scanf("%d", &objetivo);

resultado = busquedaBinaria(numeros, 0, n-1, objetivo);

if(resultado != -1) {

printf("El número %d se encuentra en la posición %d\n", objetivo, resultado);

} else {

printf("El número %d no se encuentra en el array\n", objetivo);

return 0;

// Función de búsqueda binaria recursiva

int busquedaBinaria(int arr[], int inicio, int fin, int objetivo) {

if(inicio <= fin) {

int medio = inicio + (fin - inicio) / 2;

if(arr[medio] == objetivo) {

return medio;

if(arr[medio] > objetivo) {

return busquedaBinaria(arr, inicio, medio - 1, objetivo);

return busquedaBinaria(arr, medio + 1, fin, objetivo);

}
return -1; // No encontrado

// Función para ordenar (usando selección)

void ordenarArray(int arr[], int n) {

int i, j, min_idx, temp;

for(i = 0; i < n-1; i++) {

min_idx = i;

for(j = i+1; j < n; j++) {

if(arr[j] < arr[min_idx]) {

min_idx = j;

// Intercambiar

temp = arr[i];

arr[i] = arr[min_idx];

arr[min_idx] = temp;

Características avanzadas:

• Algoritmo de búsqueda binaria

• Recursividad

• Algoritmo de ordenamiento por selección

También podría gustarte