• Ir al contenido
  • Ir a la navegación
  • Ir al buscador
 
Portada Boludo
ING English
Directorio WAP para móvil, Tablet, iPhone o Smartphone

Centro de Noticias de la Universidad de Oriente

Categorías

 

Inicio  |  Contacto  |  Posts  |  TIENDA PUBLISHOP  |  Sobre nosotros  |  Registro y Planes  |  Pagos  |  Donaciones

Ver Código QR de esta página

Campaña #AyudemosaYuli  |  Campaña #AyudemosaStephany.  |  ¿Interesado(a) en cursos y resolución de ejercicios de materias prácticas? Para más información, contáctenos por: Teléfono: +58 (412) - 8226575. WhatsApp y Telegram: +58 (426) - 6836955 o escriba al correo: [email protected]. Únete al grupo: SISTEMAS (UDOMO).

[»] **Musica para tu celular

WEB TRANSLATOR

LINK for English Language

Use this link for translate into English


+ Buscar en BolUDO

 

Parámetros de métodos de tipo puntero

Tweet
 

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.zip

Es 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.

  1. Crear una matriz de 3 filas por 3 columnas. Implementar un método que permita cargar todas sus componentes, otro que la imprima y otra método que retorne la fila y columna (retorna dos datos el método) donde se encuentra el mayor elemento del vector (si está repetido retorne la posición de cualquiera de ellos)
Solución
#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();
}

Este proyecto lo puede descargar en un zip desde este enlace :ParametrosPuntero2.zip

— @bolUDOoficial

— Síguenos en Twitter@bolUDOoficial

Categorías: #C++, #


[0] Atrás | Directorio
« Inicio
Apps Infoudo
Apps Infoudo ¡Descarga el icono directo en el menú de tu equipo!
[»] Las mejores Apps para tu celular
[»] Imágenes Gratis


Comenta o lee lo que otros opinan

COMPÁRTELO:

Indica que te gusta y comparte

Me Gusta :)Facebook Tuiteame :)Twitter .WhatsApp .Telegram . LinkedIn

También te puede interesar:

NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Material de Apoyo del Curso de Programación - Lenguaje C++ - Periodo (Feb - May) del año en curso
Parámetros por valor y por referencia de objetos
Parámetros por valor y por referencia de datos simples
Métodos constantes (const)
Parámetros de un método constante (const)
Definición de constantes (const)
Directiva #define
Puntero this
Métodos estáticos de una clase


« Los punteros en C++  |  Vectores y punteros »
 
Apps Infoudo
 
Buscador:
Powered by Google:


Web móvil
Imágenes
La Web

 

Síguenos por RSS


Puedes leerlos mediante el navegador Firefox, lectores de noticias en la computadora o el móvil o usando el servicio de Feedburner de Google para recibir las notificaciones por correo electrónico.
RSS - Suscribirse usando Feedburner de Google

email Recibir las nuevas publicaciones de Boludo por email

Atom


»Ir a URL
.....
Registra Gratis Tu Negocio
....
Sugerir un nuevo sitio WAP

...
¡Bloguea Ya!

..
Registro de Profesionales(Abogados, escritores, doctores, licenciados, ingenieros, etc.)
.
Soporte

Síguenos en las redes sociales

Síguenos en Facebook facebook.com/boludooficial Síguenos en Twitter @bolUDOoficial Síguenos en Instagram @boludooficial Síguenos en Telegram t.me/Boludooficial
Síguenos en WhatsApp BolUDOoficial Síguenos en YouTube youtube.com/@boludo.oficial
Síguenos en Facebook facebook.com/SergioAlemanFans Síguenos en Twitter @SergioAleman1 Síguenos en Instagram @sergioalemanfans
Síguenos en WhatsApp wa.me/qr/Y7Q232VLZPR5O1 Síguenos en Tiktok @sergioalemanoficial Síguenos en Tiktok @sergioalemanfans
Síguenos en Telegram t.me/SergioAlemanOficial Síguenos en YouTube youtube.com/@sergioaleman
Síguenos en Facebook facebook.com/INFOUDO.OFICIAL Síguenos en Twitter @infoudomon Síguenos en Instagram @infoudooficial Síguenos en Telegram t.me/Infoudooficial
Síguenos en Facebook facebook.com/tuinfou Síguenos en Twitter @infoudomonagas
Síguenos en WhatsApp INFO UDO Síguenos en YouTube youtube.com/@infoudooficial

Mis cuentas sociales

FB
Twitter
Pinterest
Instagram
Otras

Móvil: (0426 683 6955 - 0412 8226575) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55


Copyscape
Volver arriba

Protocolo  |  Mapa del Sitio  |  Report Abuse - DMCA  |  Términos y Condiciones  |  Ayuda  |  Privacidad de Datos  |  Política de Cookies  |  Reportar un bug  |  Licencia: CC BY-NC-ND 3.0

Copyright ©2023 Boludo. Todos los derechos reservados. Diseñado y Desarrollado por Sergio Alemán Mi perfil en GitHub


SUBIR