Autor Tema: Array de objetos en funciones (con punteros en c++)

0 Usuarios y 1 Visitante están viendo este tema.

09 Diciembre, 2009, 11:38 pm
Leído 2534 veces

Watt

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 328
  • Karma: +0/-0
  • Sexo: Masculino
  • Dos numeros manejan el mundo?
Hola, supongamos que quiero simplemente inicializar un array de objetos con una funcion, el siguiente programa anda correctamente lo que les queria preguntar es si esta correctamente programado.

Código: [Seleccionar]

#include<iostream>
#define MAX 5

using namespace std;


class clase
{
     int a;

public:

     clase(){} ~clase(){}
 
     void setA(int n)
     {
           a=n;
     }
};

void ingreso(clase*);

int main(void)
{
      clase *p=new clase[MAX];

      ingreso(p);

      cin.get();
      return 0;
}

void ingreso(clase *p)
{
     int i,a;

     for(i=0;i<MAX;i++) //Mi duda principal esta aca
     {
             cout << "Inserte un numero: ";
             cin >> a;
             p->setA(a);
             p++;
     }
}


Es correcto manejar un array de objetos pasado por referencia con un for?

10 Diciembre, 2009, 05:21 am
Respuesta #1

topo23

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 937
  • Karma: +0/-0
Depende de lo que quieras decir con "correcto", no lo probe pero creo que el programa compila, no tiene problemas al ejecutarse y hace bien para lo que esta programado. El resto es mas subjetivo.
.

10 Diciembre, 2009, 05:06 pm
Respuesta #2

Watt

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 328
  • Karma: +0/-0
  • Sexo: Masculino
  • Dos numeros manejan el mundo?
Mira te explico, viste que en la función ingreso estoy usando un for para recorrer el array? Generalmente cuando usas el for es para manejar un array por sub inidice, pero cuando manejas un array por punteros usas un while, como es el caso de casi todas los funciones del string.h de c.

10 Diciembre, 2009, 06:50 pm
Respuesta #3

topo23

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 937
  • Karma: +0/-0
Digamos que a veces se suele utilizar el ciclo for cuando la cantidad de iteraciones es conocido "antes" de comenzar el ciclo, y while cuando la condicion de salida depende de la iteracion anterior.

Pero esto no es una regla general.
.

14 Diciembre, 2009, 06:17 am
Respuesta #4

cheroky

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 143
  • País: 00
  • Karma: +0/-0
  • Sexo: Masculino
  • Un globo, dos globos, tres globos...
Un pequeño "error" esta en no liberar la memoria asignada con delete.
 El código desde un punto de vista didáctico es correcto, aunque utilizar un contador e incrementar un puntero es un costo innecesario.
Elegir entre un bucle for o while es principalmente una cuestión "cosmética", para el primero siempre existe una versión del segundo y viceversa.

Un saludo.
\( \color{black} \overrightarrow{\mathbb{C} h\exists \mathbb{R} \varnothing k Y} \)