C/Visual C - Declarar Array

 
Vista:

Declarar Array

Publicado por angel (17 intervenciones) el 27/07/2005 09:53:00
Hola, soy nuevo en esto de la programacion de visual c++(se programar en otros lenguajes) pero no se como declarar un array de tipo string, seguro que para usted es muy facil, ¿me podrian explicar?¿y un array dinamico? por favor ponganme un ejemplo de array dinamico y uno estático.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Declarar Array

Publicado por El Mogur (202 intervenciones) el 27/07/2005 10:14:12
Una variable normal se declara (de tipo entero):

int miVariable;

Si quieres declarar un vector de enteros (estático), basta con poner después del nombre de la variable el número de posiciones:

int miVector[10];

Y tienes un vector al que puedes acceder con índices del 0 al 9:
miVector[0]; ... miVector[9];

Si quieres un array dinámico, supongo que te referirás a un vector en memoria dinámica. Para eso necesitas un puntero:

int *miVector;

Y luego inicializar ese puntero para que apunte a la zona de memoria que pides. Para pedir memoria, hay dos alternativas, la utilizada en C, con malloc:

miVector = (int*)malloc(10 * sizeof(int));

o la utilizada en C++ (más sencilla)

miVector = new int[10];

No olvides que luego hay que liberar esa memoria. En C:

free(miVector);

y en C++:

delete []miVector; // el [] son los corchetes abierto y cerrado sin nada en medio.

Por último, pregunta por un array de String... En C no hay tipo String, así que hay que utilizar arrays bidimensionales. Como hablas de "visual c++", supongo que querrás programar en C++, y no en C puro, así que puedes hacer:

// C++ standard, que funciona en cualqueir compilador y no
// solo en Micro$oft
#include < string >
using namespace std;

string miArrayDeCadenas[10];

Y ahora puedes acceder a cada cadena con miArrayDeCadenas[i];

// C++ utilizando clases que solo tiene Visual C++:

CString miArrayDeCadenas[10];

Es decir, en el primer caso utilizas la clase de C++ standard "string" (en minúsculas), y en el segundo caso utilizas la clase de las MFC de M$ "CString". Ese es el "tipo base" de tu vector, del que declaras 10 posiciones (en el ejemplo). Te toca elegir qué clase para la cadena quieres utilizar...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por angel (17 intervenciones) el 27/07/2005 10:34:28
Muchas gracias, pero a mi lo que me hace falta, es un array dinamico de tipo double, me podrias poner un ejemplo? Solo llevo un dia programando en c++ y estoy muy torpe te lo agradezco de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por angel (17 intervenciones) el 27/07/2005 10:42:59
Ademas no hace falta que te extiendas puesto que yo no soy programador de visual c++ y no lo voy a ser solo me hace falta programar este array y se acabó. Donde se ponen los includes en visual c++? no es igual que c++ eso seguro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por angel (17 intervenciones) el 27/07/2005 10:56:12
Con array dinamico me refiero a declarar un array que en un principio no tenga dimension, te cuento es para guardar el numero de telefono de los clientes que se encuentran en una base de datos, y claro no se cuantos van a ser poruqe pueden variar, como podria hacerlo? en visual basic no tendría ningun problema, pero aqui lo veo mas complicado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por El Mogur (202 intervenciones) el 27/07/2005 11:05:12
Qué de cosas...

Los include se ponen al principio del código fuente, tanto en C++ como en Visual C++; eso no se han atrevido a cambiarlo los de Microsoft :-D

En cuanto a lo del array, lo que tienes que hacer es lo mismo que te he puesto antes, pero cambiando "int" por "float" o "double" que son los tipos para almacenar reales.

Tienes algo como:

double *telefonos; // Puntero que guardará el array dinamico
int numeroDeTelefonos;

// Acceso a la base de datos
// con código de acceso usando lo que sea para conectarse,
// de forma que al final la variable numeroDeTelefonos tenga
// cuando hay que guardar...
...

// Peticion de memoria
telefonos = new double[numeroDeTelefonos];

// Y ahora lees de la base de datos para rellenarlo.
...


// Y después, cuando ya no los quieras tener en memoria más
// los borras:
delete []telefonos;

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por angel (17 intervenciones) el 27/07/2005 11:14:40
Vale, nos vamos acercando, ¿quieres decir que programe un proceso para saber cuantos telefonos hay en la base de datos y luego ya crear el array? muchisimas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por El Mogur (202 intervenciones) el 27/07/2005 11:59:20
Sí, yo creo que es lo más fácil, porque aunque el tamaño del array que necesitas no se conoce en tiempo de compilación (vamos, cuando estás programando), lo puedes pedir a la Base de Datos, y una vez conocido, supones que ya no va a cambiar...

Otra alternativa sería utilizar la clase std::vector de C++, que te permite ir añadiendo elementos, y ella misma se encarga de ir "creciendo" para guardarlos todos, pero en este caso particular, no creo que haga falta hacer eso.

Vamos, yo lo haría así... Ahora, yo no he utilizado C++ nunca con bases de datos; igual alguien más experto en el tema nos dice que lo normal en esos casos es hacerlo de otra forma ;-)

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por angel (17 intervenciones) el 27/07/2005 12:07:36
Muchisimas gracias Mogur, te debo una y bien gorda, enga salud y hasta siempre.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por angel (1 intervención) el 27/07/2005 17:24:11
Está muy bien pero no me deja declarar lo que me hace falta que sería esto

string numeros[RegistrosExistentes];

Me da un error: Constan no expecified, es decir que tengo que poner un numero entre los corchetes, y con lo de CString, tampoco funciona, dice que no existe ese identificador, como lo hago?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declarar Array

Publicado por El Mogur (202 intervenciones) el 27/07/2005 22:32:35
No, es que así no es ;)

Una vez que ya tienes en RegistroExistentes la cantidad de posiciones que necesitas, tienes que hacer el array con memoria dinamica:

string *numeros;

numeros = new string[RegistrosExistentes];

Y al final del programa, o cuando ya no lo necesites más, no olvides destruir el array dinamico con:

delete [] numeros;

Para que el string funcione, necesitas haber includo el fichero string y usar el namespace std... es decir:

#include < string >
using namespace std;

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar