1.1. Ejercicios de Sobrecarga

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

Página 1 de 7

UNMSM FACULTAD DE INGENIERÍA INDUSTRIAL


ALGORITMOS Y ESTRUCTURAS DE DATOS
PROFESOR: EDGAR RUIZ LIZAMA
SEMANA 1
TEMA: SOBRECARGA DE FUNCIONES

EJEMPLO 1
Página 2 de 7

EJEMPLO 2
Página 3 de 7

EJEMPLO 3
Página 4 de 7

EJERCICIOS:

1. Defina la función Areas, tal que esté sobrecargada y permita evaluar el área de las
siguientes figuras geométricas.
a) Cuadrado
b) Rectángulo
c) Circulo
d) Rombo
e) Trapecio
f) Pentágono

2. (2010-1) Sobrecargar la función llamada hayRepetidos de acuerdo a los siguientes


prototipos:
a) bool hayRepetidos ( int a[N], int na );
Donde na es la cantidad de elementos del arreglo a. La función devuelve true si
existen elementos repetidos en el arreglo. En caso contrario devuelve false.

b) bool hayRepetidos ( int x );


La función devuelve true si existen dígitos repetidos en el número x. En caso
contrario devuelve false.

3. (2010-2) El chino Sun Tsu en


el año 400 a.C. halló un
número entero que al dividirlo
por 3, el resto sea 2; al
dividirlo por 5, el residuo sea
3, y al dividirlo por 7, el
residuo sea igual a 2. Se pide
implementar la sobrecarga de
funciones proceso de
acuerdo al detalle que
aparece en la función
principal y que al ejecutar el
programa nos permita mostrar la salida indicada.

#include <iostream>
using namespace std;
//Acá van las funciones sobrecargadas

//Función principal
int main()
{
char p='A';
int m, n, t;
bool q;
float o;
proceso(m, n); /* Esta función lee 2 números enteros asegurando que m
es menor que n. 1 pto. */
q = proceso(m, n, o); /* Es función muestra todos los números en base a
la condición indicada por el chino SunTsu. 2 pts*/
if( q == true)
Página 5 de 7

proceso(o); /*Esta función reporta la cantidad de números encontrados


según Sun Tsu. 1 pto*/
else
cout<<"No existen ningun numero"<<endl;
cout<<endl;

cout<<"Ingrese la constante en el rango 1-26:";


cin>>t;
proceso(p, t); /*Esta función muestra los 26 caracteres del alfabeto,
además la otra salida según t. 2 pts*/

int a[] = {2,5,9,7,1,4,5,1,6,2,4,10,5,2,1};


int tam = sizeof(a)/sizeof(int);
int b = 1, r = 17;
proceso(a, tam, b, r);/*Esta función busca los b en a y los reemplaza con
r, luego reporta la cantidad de reemplazos. 2pts*/
return 0;
}

4. (2007-0) Sobrecargar la función denominada playa de la siguiente manera:

a) Si el parámetro que recibe es un numero entero x; devuelve true si sus dígitos están
en orden ascendente, false en caso contrario.

b) Si los parámetros son dos arreglos unidimensionales a y b de n números reales,


devuelve true si los elementos de a están almacenados en orden contrario a los de
b. En otro caso devuelve false.

c) Si el parámetro m es una matriz cuadrada de caracteres de orden n; devuelve true si


no hay elementos repetidos en su diagonal principal, false en caso contrario.

5. (2007-1) En el siguiente programa, escriba el código de las funciones que faltan para su
correcto funcionamiento. Tener en cuenta que no está permitido el uso de las sentencias if ni
if - else, por lo que debe usar el operador ternario.

#include <iostream>
using namespace std;

const int N = 10;

bool esprimo( int x ); // devuelve true si x es primo, sino devuelve false


int quitaprimos( int n );
int quitaprimos( int a[N], int na , int b[N] );

void print( int a[N], int na )


{
int i;
for( i = 0; i < na; i++ )
cout<<a[i]<<"\t";
cout<<endl<<endl;;
}

int main()
{
int x,y,nz;
int w[N] = { 12 , 23, 31, 40, 47, 50, 53, 62, 71, 80 } , z[N];
cout<<endl<<"Ingrese un entero positivo: ";
cin>>x;
y = quitaprimos( x );
Página 6 de 7

cout<<endl<<"Quitandole a "<<x<<" sus digitos primos se obtiene


"<<y<<endl;
nz = quitaprimos( w, 10, z );
cout<<endl<<endl<<"Arreglo W"<<endl<<endl;
print( w, 10 );
cout<<"Arreglo obtenido al quitar los valores primos del Arreglo W"<<
endl<<endl;
print( z, nz );
return 0;
}

Un ejemplo de corrida del programa se muestra a continuación:

6. (2007-2) (Propuesta por Edgar Ruiz L.) Dado el siguiente programa escriba el código
de las funciones que faltan

#include <iostream>
using namespace std;
void print(float x[], int n) // imprime en pantalla el array x
// devuelve true si los elementos del array son todos iguales si no, false
bool proceso(float x[], int n);
/* devuelve true si los elementos de a son equidivisores de los de b sino
false */
bool proceso(float a[], float b[], int n);
/* guarda true en bandera si los elementos de a son equimultiplos de los de
b sino false */
void proceso(float a[], float b[], int n, bool &bandera);

int main() // p1_072pc1.cpp


{
float x[] = {5,6,7,9}, y[] = {20,24,28,36};
int n = sizeof( x )/sizeof( float );
int m = sizeof( y )/sizeof( float );
if ( n == m )
{ cout<<"Array X = "; print(x,n);
cout<<"Array Y = "; print(y,n);
if (proceso(x,y,n) == true)
cout<<"\nLos de x son equidivisores de y !..."<<endl;
else
cout<<"\nLos de x NO son equidivisores y !...."<<endl;
}
Página 7 de 7

float w[] = {14,38,24,40,66,10}, z[] = {7,19,12,20,33,5};


int p = sizeof( w )/sizeof( float );
int q = sizeof( z )/sizeof( float );
if ( p == q )
{ cout<<"\nArray W = "; print(w,p);
cout<<"Array Z = "; print(z,p);
bool band;
proceso(w,z,p,band);
if ( band == true)
cout<<"\nLos de w son equimultiplos de z !..."<<endl;
else
cout<<"\nLos de w NO son equimultiplos de z !..."<<endl;
}
cout<<endl;
return 0;
}

EQUIDIVISORES.- Dos o más números son equidivisores de otros cuando están


contenidos en estos el mismo número de veces. Ejemplo: 5,6 y 7 son equidivisores de 20,
24 y 28 porque el 5 esta contenido en 20 cuatro veces, el 6 en el 24 cuatro veces, y el 7 en
el 28 cuatro veces.

EQUIMULTIPLOS.- Son dos o mas números que contienen a otros un mismo número de
veces. Ejemplo: 14, 24 y 36, son equimultiplos de 7, 12 y 18, porque el 14 contiene al 7
dos veces, el 24 contiene al 12 dos veces, y el 36 contiene al 18 dos veces.

Una corrida del programa se presenta a continuación.

 Profesor Edgar Ruiz Lizama – 2014-2

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy