Instituto Superior de Formacin Tcnica N 177 Prof: Walter Carnero
PROGRAMACIN 1 EJ ERCICIOS RESUELTOS (Matrices y Fuciones)
El presente apunte contiene ejercicios resueltos en los cuales se utilizan, para su resolucin, arreglos unidimensionales (vectores) y bidimensionales (matrices). Adems se plantean soluciones mediante la utilizacin de funciones realizando pasajes por valor y por referencia.
Resuelto N 1: Se cargan datos a una matriz de enteros de 3x4, se pide informar:
a. Los datos cargados en la matriz. b. Promedio general. c. Porcentaje de positivos. d. Sumatoria de los N pares ingresados en la matriz.
#i ncl ude <i ost r eam. h> #i ncl ude <coni o. h> #i ncl ude <i omani p. h> voi d mai n( ) { i nt m[ 3] [ 4] , f , c, cpos=0, sumpar =0; f l oat pr om=0, por c=0, sum=0; cl r scr ( ) ; cout <<" I ngr ese dat os: " ; f or ( f =0; f <3; f ++) { f or ( c=0; c<4; c++) { ci n>>m[ f ] [ c] ; sum=sum+m[ f ] [ c] ; i f ( m[ f ] [ c] > 0) { cpos=cpos+1; } i f ( ( m[ f ] [ c] %2) ==0) { sumpar =sumpar +m[ f ] [ c] ; } } } pr om=sum/ 12; // Se calcula el promedio general por c=( cpos*100) / 12; // Se calcula el porcentaje de positivos cout <<" Los N i ngr esados en l a mat r i z son: " <<endl <<endl ; f or ( f =0; f <3; f ++) { f or ( c=0; c<4; c++) { cout <<m[ f ] [ c] ; } cout <<endl ; } cout <<endl <<" El Pr omedi o gener al es: " <<set pr eci si on( 2) <<pr om; cout <<endl <<" El por cent aj e de posi t i vos es: " <<por c<<" %" ; cout <<endl <<" La sumat or i a de l os par es es: " <<sumpar ; get ch( ) ; }
Programacin I Ejercicios Resueltos 1
Instituto Superior de Formacin Tcnica N 177 Prof: Walter Carnero
Resuelto N 2: Escribir un programa que permita a un usuario ingresar caracteres en una matriz de 4x4, informar luego la matriz completa pero con la primer y ltima fila ordenada alfabticamente, informar tambin cuantas letras a se ingresaron.
#i ncl ude <i ost r eam. h> #i ncl ude <coni o. h> voi d mai n( ) { char mat [ 4] [ 4] , aux; i nt cuent a=0, f , c; cl r scr ( ) ; cout <<" I ngr ese 16 car act er es: " ; f or ( f =0; f <4; f ++) { f or ( c=0; c<4; c++) { ci n>>mat [ f ] [ c] ; i f ( ( mat [ f ] [ c] ==' a' ) | | ( mat [ f ] [ c] ==' A' ) ) { cuent a++; } } } f or ( f =3; f >=0; f - - ) { f or ( c=0; c<f ; c++) { i f ( mat [ 0] [ c] >mat [ 0] [ c+1] ) { / / Se or dena l a pr i mer f i l a aux=mat [ 0] [ c] ; mat [ 0] [ c] =mat [ 0] [ c+1] ; mat [ 0] [ c+1] =aux; } i f ( mat [ 3] [ c] >mat [ 3] [ c+1] ) { / / Se or dena l a l t i ma f i l a aux=mat [ 3] [ c] ; mat [ 3] [ c] =mat [ 3] [ c+1] ; mat [ 3] [ c+1] =aux; } } } cout <<" Mat r i z con l a pr i mer y l t i ma f i l a or denadas: " <<endl ; f or ( f =0; f <4; f ++) { f or ( c=0; c<4; c++) { cout <<mat [ f ] [ c] ; } cout <<endl ; } cout <<endl <<" Cant i dad de a- A: " << cuent a; get ch( ) ; }
Resuelto N 3: Ingresar datos en una matriz de enteros de 5x5 e informar los N indicados con una X.
X X X X X 0 1 2 3 4 0 1 2 3 4 Programacin I Ejercicios Resueltos 2
Instituto Superior de Formacin Tcnica N 177 Prof: Walter Carnero
#i ncl ude <coni o. h> #i ncl ude <i ost r eam. h> voi d mai n( ) { i nt mat [ 5] [ 5] , f , c; cl r scr ( ) ; cout <<" I ngr ese dat os a l a mat r i z: " ; f or ( f =0; f <5; f ++) { f or ( c=0; c<5; c++) { ci n>>mat [ f ] [ c] ; } } cout <<endl <<" Dat os car gados en l a di agonal de l a mat r i z" <<endl ; c=4; f or ( f =0; f <5; f ++) { cout <<mat [ f ] [ c] ; c- - ; } get ch( ) ; }
Resuelto N 4: Escribir la funcin cuyo prototipo es void DatosCli(); la cual permitir ingresar el apellido, nombre, edad y DNI de 3 personas, luego informar.
#i ncl ude <i ost r eam. h> #i ncl ude <coni o. h> voi d Dat osCl i ( ) ; / / Pr ot ot i po de f unci n voi d mai n( ) { cl r scr ( ) ; cout <<endl <<endl <<" \ t \ t PROGRAMA DE CARGA DE DATOS" ; cout <<endl <<" \ t \ t ==========================" ; Dat osCl i ( ) ; / / Ll amada a l a f unci n get ch( ) ; } voi d Dat osCl i ( ) { / / i mpl ement aci n de l a f unci n Dat osCl i ( ) char apel l [ 3] [ 15] , nom[ 3] [ 20] , dni [ 3] [ 15] ; i nt edad[ 3] , f , c; f or ( f =0; f <3; f ++) { cout <<endl <<endl <<" I ngr ese Apel l i do: " ; ci n>>apel l [ f ] ; cout <<endl <<" I ngr ese Nombr e: " ; ci n>>nom[ f ] ; cout <<endl <<" I ngr ese Edad: " ; ci n>>edad[ f ] ; cout <<endl <<" I ngr ese DNI : " ; ci n>>dni [ f ] ; } cout <<endl <<endl <<" Los dat os i ngr esados f uer on: " ; f or ( f =0; f <3; f ++) { cout <<endl <<endl <<" Apel l i do: " ; cout <<apel l [ f ] ; cout <<endl <<" Nombr e: " ; cout <<nom[ f ] ; cout <<endl <<" Edad: " ; cout <<edad[ f ] ; Programacin I Ejercicios Resueltos 3
Instituto Superior de Formacin Tcnica N 177 Prof: Walter Carnero
cout <<endl <<" DNI : " ; cout <<dni [ f ] ;
} }
Resuelto N 5: Escribir una funcin que reciba por valor los catetos de un tringulo rectngulo y devuelva la hipotenusa del mismo.
Resuelto N 6: Se ingresan datos a un vector de enteros de 8 elementos, escribir la funcin int BuscaVal(int v[], int val); la cual recibir el vector por referencia y la variable val, dicha funcin devolver 1 si val existe en el vector, de lo contrario devolver -1.
#i ncl ude <i ost r eam. h> #i ncl ude <coni o. h> #def i ne di m8 i nt BuscaVal ( i nt v[ ] , i nt ) ; / / pr ot ot i po de f unci n voi d mai n( ) { i nt vect or [ di m] , x, val or ; cl r scr ( ) ; cout <<" I ngr esar 8 N ent er os: " ; f or ( i nt i =0; i <di m; i ++) { ci n>>vect or [ i ] ; } cout <<" I ngr ese un N a buscar en el vect or : " ; ci n>>x; val or =BuscaVal ( vect or , x) ; i f ( val or ==1) { Programacin I Ejercicios Resueltos 4
Instituto Superior de Formacin Tcnica N 177 Prof: Walter Carnero
cout <<" Val or encont r ado! ! ! " ; } i f ( val or ==- 1) { cout <<" No se encont r o val or ! ! ! " ; } get ch( ) ; } i nt BuscaVal ( i nt v[ ] , i nt val ) { f or ( i nt i =0; i <di m; i ++) { i f ( val ==v[ i ] ) { r et ur n ( 1) ; } } r et ur n ( - 1) ;
}
Resuelto N 7: Escribir la funcin void CargarMat(); la cual permitir cargar una matriz de enteros de 4x3, escribir tambin la funcin int SumaFilaPar(int mat[][3]); La cual recibir la matriz por referencia y devolver un entero correspondiente a la sumatoria de los datos cargados en las filas pares de la matriz. Se escribe tambin la funcin main() que utiliza dichas funciones.
#i ncl ude <i ost r eam. h> #i ncl ude <coni o. h> voi d Car gar Mat ( ) ; i nt SumaFi l aPar ( i nt mat [ ] [ 3] ) ; i nt mat [ 4] [ 3] , f , c; / / Decl ar aci n de var i abl es gl obal es voi d mai n( ) { cl r scr ( ) ; Car gar Mat ( ) ; cout <<" La sumat or i a de l as f i l as par es es: " <<SumaFi l aPar ( mat ) ; get ch( ) ; } voi d Car gar Mat ( ) { cout <<" I ngr ese N ent er os: " ; f or ( f =0; f <4; f ++) { f or ( c=0; c<3; c++) { ci n>>mat [ f ] [ c] ; } } } i nt SumaFi l aPar ( i nt mat [ ] [ 3] ) { i nt suma=0; f or ( f =0; f <4; f =f +2) { f or ( c=0; c<3; c++) { suma=suma+mat [ f ] [ c] ; } } r et ur n ( suma) ; }
Resuelto N 8: Se ingresan datos a dos vectores de caracteres mediante la funcin voi d CargaVec(); escribir la funcin int Compara(char vec1[], char vec2[]); la cul indicara si las cadenas de caracteres ingresadas mediante la funcin CargaVec() son iguales o no. Programacin I Ejercicios Resueltos 5
Instituto Superior de Formacin Tcnica N 177 Prof: Walter Carnero
#i ncl ude <i ost r eam. h> #i ncl ude <coni o. h> #i ncl ude <st r i ng. h> #def i ne di m10 voi d Car gaVec( ) ; i nt Compar a( char vec1[ ] , char vec2[ ] , i nt , i nt ) ; char v1[ di m] , v2[ di m] ; i nt l 1, l 2;
voi d mai n( ) { i nt x; cl r scr ( ) ; Car gaVec( ) ; x=Compar a( v1, v2, l 1, l 2) ; / / Se pasa v1, v2 y l as l ongi t udes de ambos i f ( x==0) { cout <<" Las pal abr as no son i gual es" ; } el se{ cout <<" Pal abr as i gual es" ; } get ch( ) ; } voi d Car gaVec( ) { cout <<" I ngr ese una pal abr a ( mxi mo 10 car act er es c/ u) : " ; ci n>>v1; cout <<endl <<" I ngr ese ot r a pal abr a: " ; ci n>>v2; l 1=st r l en( v1) ; l 2=st r l en( v2) ; }
i nt Compar a( char vec1[ ] , char vec2[ ] , i nt l en1, i nt l en2) { i nt cuent a=0; i f ( l en1==l en2) { / / Se compar an par a ver si l a l ongi t ud es l a mi sma f or ( i nt i =0; i <=l en1; i ++) { i f ( vec1[ i ] ==vec2[ i ] ) { cuent a++; } } } el se{ r et ur n( 0) ;