![]() Directorio WAP para móvil, Tablet, iPhone o Smartphone Centro de Noticias de la Universidad de Oriente |
|
|
||
lunes julio 11, 2016 Hemos visto que cuando un método debe retornar un dato disponemos al principio del método el tipo de dato que retornará (int, float etc.) y dentro del método especificamos con la palabra return el valor que devuelve. ¿Qué sucede si queremos retornar dos valores o más en un solo método? Una forma de solucionar este problema es pasar la dirección de dos variables y que las reciban dos parámetros de tipo puntero, luego por medio de estos punteros modificamos las variables que les pasamos por ejemplo desde la main.Problema 1:Confeccionar una clase que permita administrar un vector de 5 enteros. Definir dos métodos: uno que permita cargar el vector y otro que retorne el mayor y el menor valor del vector. Emplear dos punteros para poder retornar dos datos en un único método. Programa:#include<iostream> using namespace std; class Vector { int vec[5]; public: void cargar(); void retornarMayorMenor(int *pmay, int *pmen); }; void Vector::cargar() { for (int f = 0; f < 5; f++) { cout << "Ingrese componente:"; cin >> vec[f]; } } void Vector::retornarMayorMenor(int *pmay, int *pmen) { *pmay = vec[0]; *pmen = vec[0]; for (int f = 1; f < 5; f++) { if (vec[f]>*pmay) { *pmay = vec[f]; } else { if (vec[f]<*pmen) { *pmen = vec[f]; } } } } void main() { Vector vector1; vector1.cargar(); int ma, me; vector1.retornarMayorMenor(&ma, &me); cout << "El elemento mayor del vector es:" << ma << ""; cout << "El elemento menor del vector es:" << me << ""; cin.get(); cin.get(); } Este proyecto lo puede descargar en un zip desde este enlace : ParametrosPuntero1.zipEs muy importante entender como funciona el método retornarMayorMenor. En la main definimos dos variables de tipo entera: int ma, me; Y llamamos al método rotornarMayorMenor enviándole la dirección de estas dos variables (recordemos que mediante el operador & se accede a la dirección de una variable): vector1.retornarMayorMenor(&ma, &me); Como estamos enviando direcciones de variables el método debe tener parámetros de tipo puntero como lo son *pmay y *pmen: void Vector::retornarMayorMenor(int *pmay, int *pmen) Mediante estos dos punteros estamos accediendo a las variables definidas en la main llamadas: ma y me. Cargamos en las dos variables definidas en la main (accediendo a las mismas por los punteros) la primer componente del vector: *pmay = vec[0]; *pmen = vec[0]; Luego mediante un for recorremos el resto del vector para ver si hay alguna componente más grande a la que hemos considerado hasta ahora la mayor (lo mismo hacemos para la menor componente): for (int f = 1; f < 5; f++) { if (vec[f]>*pmay) { *pmay = vec[f]; } else { if (vec[f]<*pmen) { *pmen = vec[f]; } } } Como podemos observar luego en la main cuando imprimimos los contenidos de las variables ma y me aparecen en pantalla el valor mayor y menor del vector: cout << "El elemento mayor del vector es:" << ma << ""; cout << "El elemento menor del vector es:" << me << ""; Como vemos en ningún momento asignamos valores directamente a las variables ma y me, sino que lo hicimos con los parámetros que apuntan a dichas variables.
#include<iostream> using namespace std; class Matriz { private: int mat[3][3]; public: void cargar(); void imprimir(); void retornarFilaColumna(int *pf, int *pc); }; void Matriz::cargar() { for (int f = 0; f < 3; f++) { for (int c = 0; c < 3; c++) { cout << "Ingrese componente:"; cin >> mat[f][c]; } } } void Matriz::imprimir() { for (int f = 0; f < 3; f++) { for (int c = 0; c < 3; c++) { cout << mat[f][c] << " "; } cout << "";; } } void Matriz::retornarFilaColumna(int *pf, int *pc) { int mayor = mat[0][0]; *pf = 0; *pc = 0; for (int f = 0; f < 3; f++) { for (int c = 0; c < 3; c++) { if (mat[f][c] > mayor) { mayor = mat[f][c]; *pf = f; *pc = c; } } } } void main() { Matriz matriz1; matriz1.cargar(); matriz1.imprimir(); int fila, columna; matriz1.retornarFilaColumna(&fila, &columna); int fi, co; cout << "Fila donde se encuentra el mayor:" << fila <<""; cout << "Columna donde se encuentra el mayor:" << columna<< ""; cin.get(); cin.get(); } |
||
— @bolUDOoficial
Comenta o lee lo que otros opinan |
||
COMPÁRTELO:Indica que te gusta y comparte |
||
![]() ![]() ![]() ![]() ![]() |
||
También te puede interesar: NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS. |
||
« Los punteros en C++ | Vectores y punteros » |
||
![]() |
||
Buscador:
|
||
Síguenos en las redes sociales![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mis cuentas socialesOtrasMóvil: (0426 683 6955 - 0412 8226575) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55 ![]() |
||
|
||
|