Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Practica Pares ing Huanca, Ejercicios de Programación C

Practica del semestro por 10 pts a la nota final

Tipo: Ejercicios

2024/2025

Subido el 01/07/2025

mamani-benjamin
mamani-benjamin 🇧🇴

1 documento

1 / 30

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Universidad “Mayor de San Andrés”
Facultad de Ingeniería
PRACTICA GENERAL
Docente: Ing. Edwin Ruben Huanca
La Paz - Bolivia
2025
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e

Vista previa parcial del texto

¡Descarga Practica Pares ing Huanca y más Ejercicios en PDF de Programación C solo en Docsity!

Universidad “Mayor de San Andrés”

Facultad de Ingeniería

PRACTICA GENERAL

Docente: Ing. Edwin Ruben Huanca La Paz - Bolivia 2025

  1. Realizar un diagrama de flujo para cargar numéricamente un vector de N dimensión y mostrar el mayor y menor número. Analisis: Para resolver el problema se requiere:  Solicitar la dimensión del vector (N), validando que esté dentro de un rango aceptable (mayor que 0 y hasta 100).  Cargar N números en un vector mediante una entrada manual.  Recorrer el vector para identificar el mayor y el menor valor almacenado.  Mostrar ambos resultados al final. Condiciones a considerar:  Validar que N esté en el rango permitido.  Al menos un valor debe ser ingresado para poder comparar.  El algoritmo de búsqueda del mayor y menor debe considerar todos los elementos del vector. Diagrama de flujo:

Iteración i vector[i] mayor menor 1 1 5 12 5 2 2 23 23 5 3 3 7 23 5 4 4 16 23 5 Salida:  El mayor número es: 23  El menor número es: 5 Codigo c++: #include using namespace std; int main() { int N; cout << "Ingrese el tamaño del vector: "; cin >> N; if (N <= 0 || N > 100) { cout << "Error: N debe ser mayor que 0 y menor o igual a 100." << endl; return 1; } int vector[100]; // Cargar el vector cout << "Ingrese " << N << " números:\n"; for (int i = 0; i < N; i++) { cin >> vector[i]; } // Buscar mayor y menor int mayor = vector[0]; int menor = vector[0]; for (int i = 1; i < N; i++) { if (vector[i] > mayor) mayor = vector[i]; if (vector[i] < menor) menor = vector[i]; } // Mostrar resultados cout << "\nEl mayor número es: " << mayor << endl; cout << "El menor número es: " << menor << endl; return 0;

  1. Realizar un diagrama de flujo para cargar un número mayor a tres dígitos y verificar si es un numero capicúa. Definimos estos números como aquellos números que se leen igual de izquierda a derecha que derecha a izquierda. Ejemplos: 161, 2992, 3003, 2882. Analisis: Se requiere cargar un número como cadena de texto y validar que tenga más de tres dígitos. Luego, se debe verificar si el número es capicúa, es decir, que se lea igual de izquierda a derecha que de derecha a izquierda. Para esto, se comparan los caracteres en posiciones simétricas, desde los extremos hacia el centro. Si en algún punto los caracteres no coinciden, el número no es capicúa. Si se recorren todas las posiciones sin diferencias, entonces sí lo es. Se deben considerar las siguientes condiciones:  El número debe tener más de tres dígitos.  La comparación debe realizarse carácter por carácter hasta llegar al centro del número Diagrama de flujo: INICIO numero numero.length() <= 3 FIN esCapicua = true izquierda = 0 derecha = numero.length() - 1 izquierda < derecha numero[izq] != numero[der] esCapicua = false izquierda++ Si esCapicua no Si no derecha-- Es capigua No es capigua

} return 0; }

  1. Realizar un diagrama de flujo para cargar un vector de dimensión N, cargar datos numéricos por teclado y ordenar los pares en forma descendente y los impares en forma ascendente, mostrar el vector resultante y el vector original. Analisis: Se debe cargar un vector de dimensión N con números ingresados por el usuario, guardando una copia del vector original para mostrarlo posteriormente. Luego, el vector debe ser ordenado según la siguiente regla:  Los números pares se ordenan en forma descendente.  Los números impares se ordenan en forma ascendente. Para lograr esto, se compara cada par de elementos dentro del vector y se intercambian según corresponda, respetando la condición de ordenamiento para pares e impares por separado. Finalmente, se muestran tanto el vector original como el vector ordenado. Diagrama de flujo: INICIO N vec[N], original[N] i = 0; i < N; i++ vec[i] original[i] = vec[i] i = 0; i < N; i++ j = i + 1; j < N; j++ no vec[i] < vec[j] vec[j]%2== && vec[i]%2==0 && swap(vec[i], vec[j]) no Si vec[i] > vec[j] vec[j]%2!= && vec[i]%2!= && swap(vec[i], vec[j]) si

Prueba de escritorio: N = 6 Paso i j vec[i] vec[j] Condición pares o impares Acción Vector actual Inicial - - 8 - - - 8, 3, 4, 7, 2, 5 Comparación 0 2 8 (par) 4 (par) 8 < 4? No No swap 8, 3, 4, 7, 2, 5 Comparación 0 4 8 (par) 2 (par) 8 < 2? No No swap 8, 3, 4, 7, 2, 5 Comparación 1 3 3 (impar) 7 (impar) 3 > 7? No No swap 8, 3, 4, 7, 2, 5 Comparación 1 5 3 (impar) 5 (impar) 3 > 5? No No swap 8, 3, 4, 7, 2, 5 Comparación 2 4 4 (par) 2 (par) 4 < 2? No No swap 8, 3, 4, 7, 2, 5 Comparación 3 5 7 (impar) 5 (impar) 7 > 5? Sí Swap 8, 3, 4, 5, 2, 7 Comparación 0 2 8 (par) 4 (par) 8 < 4? No No swap 8, 3, 4, 5, 2, 7 Comparación 2 4 4 (par) 2 (par) 4 < 2? No No swap 8, 3, 4, 5, 2, 7 Comparación 0 4 8 (par) 2 (par) 8 < 2? No No swap 8, 3, 4, 5, 2, 7 Comparación 2 4 4 (par) 2 (par) 4 < 2? No No swap 8, 3, 4, 5, 2, 7 Comparación 2 4 4 (par) 2 (par) 4 < 2? No No swap 8, 3, 4, 5, 2, 7 Comparación 0 4 8 (par) 2 (par) 8 < 2? No No swap 8, 3, 4, 5, 2, 7 Mostrar final Vector ordenado: 8, 3, 4, 5, 2, 7 Codigo c++: #include using namespace std; int main() { int N; cout << "Ingrese la dimension del vector: "; cin >> N;

INICIO N A[N][N], B[N][N], Suma[N][N] i = 0; i < N; i++ j = 0; j < N; j++ A[i] [j] i = 0; i < N; i++ j = 0; j < N; j++ B[i] [j] i = 0; i < N; i++ j = 0; j < N; j++ Suma[i][j] = A[i][j] + B[i] [j]

Prueba de escritorio: N = 2 Matriz A: 1 2 3 4 Matriz B: 5 6 7 8 i j A[i][j] B[i][j] Suma[i][j] Observación 0 0 1 5 6 1 + 5 = 6 0 1 2 6 8 2 + 6 = 8 1 0 3 7 10 3 + 7 = 10 1 1 4 8 12 4 + 8 = 12 Matriz suma: 6 8 10 12 Codigo c++: #include using namespace std; int main() { int N; cout << "Ingrese el tamaño N de las matrices (NxN): "; cin >> N; int A[N][N], B[N][N], Suma[N][N]; // Ingreso de la primera matriz cout << "Ingrese los elementos de la primera matriz A:\n";

 La matriz debe ser cuadrada (misma cantidad de filas y columnas).  N debe ser mayor a 0 Diagrama de flujo: INIC IO N A[N][N], T[N][N] i = 0; i < N; i++ j = 0; j < N; j++ A[i ][j] T[j][i] = A[i][j] i = 0; i < N; i++ j = 0; j < N; j++ i = 0; i < N; i++

Prueba de escritorio: N = 3 Matriz A: 1 2 3 4 5 6 7 8 9 Se construye la matriz transpuesta T de la siguiente forma: | T[j][i] = A[i][j] | T[0][0] = A[0][0] = 1 T[1][0] = A[0][1] = 2 T[2][0] = A[0][2] = 3 T[0][1] = A[1][0] = 4 T[1][1] = A[1][1] = 5 T[2][1] = A[1][2] = 6 T[0][2] = A[2][0] = 7 T[1][2] = A[2][1] = 8 T[2][2] = A[2][2] = 9 Matriz transpuesta resultante: 1 4 7 2 5 8

 El interior de la matriz (elementos que no están en los bordes) se llena con 0. Esto implica recorrer cada posición de la matriz y asignar 1 si el índice de fila o columna corresponde a un borde, y 0 en caso contrario. Diagrama de flujo: INIC IO N matriz[N ][N] i = 0; i < N; i++ j = 0; j < N; j++ N o i == 0 || i == N-1 || j == 0 || j == N- matriz[i][j] = 1 matriz[i][j] = 0 S i i = 0; i < N; i++ j = 0; j < N; j++

Prueba de escritorio: N = 4 i j Condición borde? Valor asignado Observación 0 0 i=0 borde fila 1 Primer elemento, borde 0 1 i=0 borde fila 1 Borde superior 0 2 i=0 borde fila 1 Borde superior 0 3 i=0 borde fila 1 Borde superior 1 0 j=0 borde columna 1 Borde izquierdo 1 1 interior (no borde) 0 Centro 1 2 interior (no borde) 0 Centro 1 3 j=N-1 borde columna 1 Borde derecho 2 0 j=0 borde columna 1 Borde izquierdo 2 1 interior (no borde) 0 Centro 2 2 interior (no borde) 0 Centro 2 3 j=N-1 borde columna 1 Borde derecho 3 0 i=N-1 borde fila 1 Borde inferior 3 1 i=N-1 borde fila 1 Borde inferior 3 2 i=N-1 borde fila 1 Borde inferior 3 3 i=N-1 borde fila 1 Borde inferior Matriz generada: 1 1 1 1 1 0 0 1

Para implementarlo, se recorren todas las posiciones de la matriz y se asigna:  1 si el índice de columna es 0 o N-1 (bordes verticales), o si el índice de fila es N-1 (última fila).  0 en cualquier otro caso. Diagrama de flujo: INICI O N matriz[N] [N] i = 0; i < N; i++ j = 0; j < N; j++ N o S i j == 0 || j == N-1 || i == N- matriz[i][j] = 1 matriz[i][j] = 0 matriz[i ][j] i = 0; i < N; i++ j = 0; j < N; j++

Prueba de escritorio: N = 4 i j Condición borde Valor asignado Observación 0 0 j=0 1 Borde izquierdo 0 1 - 0 Interior 0 2 - 0 Interior 0 3 j=N-1 1 Borde derecho 1 0 j=0 1 Borde izquierdo 1 1 - 0 Interior 1 2 - 0 Interior 1 3 j=N-1 1 Borde derecho 2 0 j=0 1 Borde izquierdo 2 1 - 0 Interior 2 2 - 0 Interior 2 3 j=N-1 1 Borde derecho 3 0 i=N-1 1 Última fila 3 1 i=N-1 1 Última fila 3 2 i=N-1 1 Última fila 3 3 i=N-1 1 Última fila Matriz generada: 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 Codigo c++: