Introduccion A La computación-EFinal-solucionario

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Facultad de Ciencias, Curso: BIC01 Introducción a la Computación, 2023-1

EXAMEN FINAL – A
SOLUCIONARIO
Tiempo: 120 min.
Nota: No esta permitido el uso de celulares, usb, programas de chats, intercambio de información
con otros alumnos.
________________________________________________________________________________

Preg. 1. Un elemento min-max de una matriz es aquel elemento que es mínimo en su fila y máximo
en su columna. Escribir un programa que pida al usuario una matriz m x n de números enteros y
encuentre todos los elementos min-max de la matriz. Ejemplos:
Entrada: {{7,9},{1,-2}} Salida Elementos min-max: 7
Entrada: {{2,9,4,2},{9,3,8,7},{14,13,12,11}} Salida Elementos min-max: 11

Preg. 2. Escribir un programa que pida al usuario una cadena de caracteres y a continuación realice
las siguientes acciones:
1. Devuelva el número de veces que aparece un determinado carácter en la cadena ingresada.
2. Devuelva el carácter que más se repite en la cadena ingresada.
3. Devuelva en otra cadena las siglas de la cadena ingresada.
Ejemplo: Entrada: “El trabajo dignifica la existencia…”
Salida: “El número de ocurrencias del carácter e es: 3
“El carácter más repetido es: a
“Siglas: ” E.T.D.L.E.

Preg. 3.
a) Hacer una función que recibe las coordenadas de 2 puntos en el plano cartesiano y
calcula la distancia entre ellos.
b) Una función que genere un conjunto de 10 puntos (x,y) y llene dos arreglos: uno para las x y otro
para las y. Las coordenadas pueden tener valores entre -50 y 50.
c) Una función principal que imprima todas las coordenadas y halle los 2 puntos generados que
tengan la menor distancia entre ellos, e imprima la distancia mínima.
Ej. de salida:

[0]=(32,-38) ; [1]=(40,-10) ; [2]=(-37,32) ; [3]=(-39,12) ; [4]=(-45,5) ; [5]=(-49,38) ; [6]=(-39,-22) ;


[7]=(29,-38) ; [8]=(-38,-37) ; [9]=(1,30) ;
la distancia minima es: 3 donde (x1,y1) y (x2,y2)= (32,-38) y (29,-38)

Preg. 4.
Haga un programa que utiliza la recursividad para calcular el factorial de diez números
generados aleatoriamente entre 1 y 15.

Ejemplo del resultado del programa:


Factoriales de los numeros generados aleatoriamente:
Numero #1 : 13, Factorial es : 1932053504
Numero #2 : 1, Factorial es : 1
Numero #3 : 2, Factorial es : 2
Numero #4 : 4, Factorial es : 24

1
Facultad de Ciencias, Curso: BIC01 Introducción a la Computación, 2023-1

Numero #5 : 14, Factorial es : 1278945280


Numero #6 : 10, Factorial es : 3628800
Numero #7 : 11, Factorial es : 39916800
Numero #8 : 15, Factorial es : 2004310016
Numero #9 : 14, Factorial es : 1278945280
Numero #10 : 7, Factorial es : 5040

Sol P1:
#include <iostream>
#include <climits>
using namespace std;

int main() {
int fils, cols, cont = 0;
cout << "Ingrese el número de filas: "; cin >> fils ;
cout << "Ingrese el número de columnas: "; cin >> cols;
int matriz[fils][cols];
int minfils[fils], maxcols[cols], elemsminmax[fils*cols];
// Leer los elementos de la matriz
cout << "Ingrese los elementos de la matriz: " << endl;
for (int i = 0; i < fils; i++) {
for (int j = 0; j < cols; j++) {
cin >> matriz[i][j];
}
}

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


minfils[i] = INT_MAX;

for (int j = 0; j < cols; j++)


maxcols[j] = INT_MIN;

// Encontrar el mínimo de cada fila y el máximo de cada columna


for (int i = 0; i < fils; i++) {
for (int j = 0; j < cols; j++) {
minfils[i] = min(minfils[i], matriz[i][j]);
maxcols[j] = max(maxcols[j], matriz[i][j]);
}
}

for (int i = 0; i < fils; i++) { //Verificar elementos min-max


for (int j = 0; j < cols; j++) {
if (matriz[i][j] == minfils[i] && matriz[i][j] == maxcols[j]) {
elemsminmax[cont++] = matriz[i][j];
}
}
}

cout << "Elementos mini-max: ";


for (int i = 0; i < cont; i++) { //Imprimir elementos min-max
cout << elemsminmax[i] << " ";
}
cout << endl;

return 0;

2
Facultad de Ciencias, Curso: BIC01 Introducción a la Computación, 2023-1

=================

SolP2:

#include<iostream>
using namespace std;

int cuenta_char (char cad[], char caracter){


int pos=0; /* Posición por la que vamos buscando en cad. */
int total = 0; /* Total de ocurrencias encontradas. */
for ( ; cad[pos] ; pos++)
if (cad[pos]==caracter ||cad[pos] == toupper(caracter))
total++;

return total;
}

char encontrarCaracterMasRepetido(const char cadena[]) {


int frecuencia[256] = {0}; // Inicializar todas las frecuencias a 0

// Calcular la frecuencia de cada carácter en la cadena


for (int i = 0; cadena[i] != '\0'; i++) {
frecuencia[(int)cadena[i]]++;
}

char caracterMasRepetido = cadena[0];


int maxFrecuencia = frecuencia[(int)caracterMasRepetido];

// Encontrar el carácter más repetido


for (int i = 1; cadena[i] != '\0'; i++) {
if (frecuencia[(int)cadena[i]] > maxFrecuencia) {
caracterMasRepetido = cadena[i];
maxFrecuencia = frecuencia[(int)caracterMasRepetido];
}
}

return caracterMasRepetido;
}

string siglascad (char cad[], char siglas[]) {


int i=0, // Indice para seguir la cadena cad
s=0; // Indice para seguir la cadena siglas
for ( ; cad[i]==' ' ; i++ ); //Saltamos los blancos iniciales
if (cad[i] !='\0') {
siglas [s++]=toupper(cad [i] ) ; //Primera letra.
siglas [s++] = '.'; // Punto.
i++;
}

for ( ; cad[i] != '\0' ; i++ )


if (cad[i]==' ') {
for ( ; cad[i]==' ' ; i++ ); // Salta blancos entre palabras
if (cad[i] != '\0') {
siglas[s++]=toupper(cad[i]);

3
Facultad de Ciencias, Curso: BIC01 Introducción a la Computación, 2023-1

siglas[s++] = '.';
}
}
siglas[s]='\0';
return siglas;
}

int main(){
int maximo = 0;
char c[] = "El trabajo dignifica la existencia...";
char siglas[sizeof(c)];
char caracter ='e';
cout << "El número de ocurrencias del caracacter "<< caracter <<" es: "
<< cuenta_char(c,caracter)<<endl;
cout << "El caracter más repetido es: " << encontrarCaracterMasRepetido(c)
<<endl;
cout << "Siglas: " << siglascad(c,siglas)<<endl;
}

===================================

Sol P3:

#include <iostream>
#include <cmath>
using namespace std;
float distancia(int, int,int,int);
void generaCoordenadas(float Arrx[],float Arry[], int longitud);
const int L=10;
float Ax[L]={}, Ay[L]={};

float distancia(int x1, int y1, int x2, int y2){


float Dist;
Dist=sqrt(pow ((x2-x1),2) + pow ((y2-y1),2) ) ;
return Dist;
}

void generaCoordenadas(float Arrx[],float Arry[], int longitud){


int i, x1, y1;
srand(time(0));

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


x1= -50 + rand()%(100) +1;
y1 = -50 + rand()%(100) +1;
Arrx[i]= x1;
Arry[i]= y1;
cout<< " ["<< i << "]=" << "(" << x1 <<","<<y1<<") ;" ;
}
cout<< endl;
}

int main()
{
int longitud = L;
float distTemp=0.0, distTempMin=1000.0 ;

4
Facultad de Ciencias, Curso: BIC01 Introducción a la Computación, 2023-1

int x1,x2,y1,y2;

generaCoordenadas( Ax, Ay, longitud);

for (int j=0; j<longitud; j++){


for (int i=0; i<longitud;i++){
distTemp=distancia(Ax[i],Ay[i],Ax[j],Ay[j]);
if(distTemp <= distTempMin && distTemp!=0){
distTempMin=distTemp;
x1=Ax[i]; x2=Ax[j]; y1=Ay[i]; y2=Ay[j];
}
}
}
cout << "la distancia minima es: " << distTempMin ;
cout << " donde (x1,y1) y (x2,y2)= (" << x1 <<","<<y1<<") y (" << x2
<<","<<y2 <<")" << endl;
return 0;
}

====================

Sol P4:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else{
return n * factorial(n - 1);
}

int main() {
srand(time(0)); // Inicializar la semilla del generador de números
aleatorios
cout << "Factoriales de los numeros generados aleatoriamente:" << endl;
for (int i = 0; i < 10; i++) {
int num = rand() % 15 + 1;
cout << "Numero #"<<i+1<<" : " << num << ", Factorial es : " <<
factorial(num) << endl;
}
return 0;
}

También podría gustarte