11/17/2005

Arreglos o arrays en C++

Un arreglo en C++ es un conjunto de datos que se alamacenan en memoria de manera contigua con el mismo nombre. Para difenciar los elementos de un arreglo se utilizan índices detrás del nombre del arreglo y encerrados por []. El elemento 5° (quinto) de un arreglo, es representado por el índice [4], ya que los índices comienzan en 0. Esto significa que un arreglo de 10 elementos tendría los índices del 0 al 9: [0...9]

Ejemplos:

int arregloEntero[10]; 
//Declaracion de un arreglo de 10 elementos, sin inicializar.  
arregloEntero[5] = 45; //Asignacion de 45 al elemento 6 del arreglo.


double arrPuntoFlotante[3] = {1.1,1.2,1.3}; 
//Declaracion y asignacion en un arreglo de 3 elementos double.

int a[4], b[5]; 
//Declaracion de dos arreglos enteros, de 4 y 5 elementos.

Ahora veamos un ejemplo, donde se trata un arreglo de 10 elementos con ciclos for:

//Uso de arreglos en C++
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
  int arregloEntero[10] = {0}; 
  //Arreglo entero de 10 elementos inicializados todos en 0.
  cout << "Arreglo recien declarado: " << endl;
  for (int i = 0 ; i < 10 ; i++) 
    //Notar el menor estricto (<) para ir desde 0 hasta 9
    cout << "arregloEntero["<<i<<"]="<<arregloEntero[i] << endl;
  cout << "Introduzca 10 nuevos valores " << endl;
  for (int i = 0 ; i < 10 ; i++) 
    //Notar el menor estricto (<) para ir desde 0 hasta 9
    {
      cout << " Introduzca nuevo valor para
arregloEntero["<<i<<"]" << endl;
      cin >> arregloEntero[i];
    }
  cout << "Luego de los valores introducidos, el arreglo quedo asi: " << endl;
  for (int i = 0 ; i < 10 ; i++) 
    //Notar el menor estricto (<) para ir desde 0 hasta 9
    cout << "arregloEntero["<<i<<"]="<<arregloEntero[i] << endl;
  return 0;
}

Ver como hacer para compilar este programa.

79 comentarios:

Programadora novata dijo...

No entendo...T_T

Anónimo dijo...

pregunta lo que no entiendas... así se que hace falta aclarar

Anónimo dijo...

¿Cómo puedo pasar un String^ (del sistema) a un arreglo de caracteres sin perder o cambiar la información?

Anónimo dijo...

Podrian informarme sobre los diferentes tipos de metodos en los arreglos

Tere Cristerna dijo...

Estoy haciendo un generador de números aleatorios y mi arreglo será definido por el usuario... cómo declaro un arreglo[i]???

Anónimo dijo...
Este blog ha sido eliminado por un administrador de blog.
Anónimo dijo...
Este blog ha sido eliminado por un administrador de blog.
enue dijo...

hola mira seria muy chido si me pudieras ayudar, estoy haciendo un programa de control escolar pero necesito saber como guardar en texto o binario.
gracias tu blog es genial

Ralkee dijo...

hola! me ha sido de mucha ayuda este post sobre arreglos. en la ayuda de microsoft no dicen que hay que hacer eso de using std::cout, para poder usar el cout.

Bueno muchas gracias.

Darkangel dijo...

para que el algoritmo funcione y muestre los valores despues de agregarlos se debe poner un system ("pause"); antes del return o; del main...

zearlot dijo...

hola oye una preguntacomo puedo hacer en un areglo k kuente la cantidad de palabras porke el char[20] solo te dise losespacio de caracteres k hay y si ponemos char[20][20] seria como una matris de caracteres mi pregutna es como poder meter una palabra en un areglo y seguir metiendo palabrasy al final k me imprima todas las k guarde ?? me puedes echar la mano ??

Anónimo dijo...

hola como estan quiero saber los tipos de arreglos de c++ para programas

Anónimo dijo...

hola como estan quiero saber los tipos de arreglos de c++ para programas

Anónimo dijo...

Hola, quisera saber cómo hacer un programa que desde un archivo (no del teclado) identifique los artículos (él, la , los, etc) y los coloree.

Javier Méndez dijo...

¿Como se hace en c++ para que una función retorne un arreglo? Por ejemplo para que retorne un arreglo de enteros. Gracias.

Joan dijo...

A ver, tengo una funcion que calcula la letra del DNI, el DNI es una array de 8 caracteres(DNI[8]), cuando el usuario pone mas de 8 caracteres por equivocació vuelve a pedir el numero, pero al enseñar el resultado da error porque ya ha salido de string, mi pregunta es, hay akguna manera de inicializar la string que no sea el arreglo de siempre que es declararla por ejemplo com DNI[20]?

Hikky dijo...

Pregunta, yo puedo en mi main ... en ves de int poner VOID MAIN y ahorrarme el RETURN...?

Anónimo dijo...

PODRIAS MOSTRARME UN PROGRAMA QUE CAPTURE 30 ALUMNOS CON 3 CALIFICACIONES CADA UNO Y OBTENER EL PROMEDIO INDIVIDUAL, PROMEDIO POR MATERIA DE TODO EL GRUPO Y PROMEDIO GENERAL DE TODO EL GRUPO.

math dijo...

como puedo retor nar los valores de un a funcion al programa principal me podria ayudar alguien?

Anónimo dijo...

como puedo hackear el msn???

Anónimo dijo...

Cómo puedo crear y leer un archivo.txt e ingresar el valor(que son 4 números) en un arreglo que se va a enviar a una función y finalmente se imprime el resultado??????????

Vane dijo...

alguien me puede decir si en c se puede pasar string de un archivo en un arreglo o como hago?

ejemplo: mi archivo dice
"Hola que tal"
y yo quiero pasar
palabra[0]="hola"
palabra[1]="que"
palabra[2]="tal"

se puede...? en pascal no tuve problemas pero en c si...

Diego dijo...

Bueno, esto no lo entendi muy bien, aunque si se cual es la idea de un array de carcteres. Para la niña que pregunta como pasar HOLA QUE TAL, pues, creo que te toca con la funcion STRCPY(en minusculas trabaja todo c++), que esta en la libreria string.h, creo que eso esta explicado mas adelante.

Diego dijo...

Bueno, ahora si pude entenderlo, mirandolo bien, esta bien interesante ese codigo. Bueno sigo leyendo y observando algoritmos y programas.

Anónimo dijo...

QUE CHIDO ME AYUDARON MUCHO

Anónimo dijo...

kiss men kiss!! una vez mas porfavor no uses cin o cout para los programadores principiantes, usa el printf y el scanf clasicos de la programacion estructurada, tere cristerna, lo que esta haciendo es rellenar el arreglo con un ciclo for lo que pasa es que el contador 'i' va cambiando su valor de 0,1, 2 ,3,... hasta q acaba el arreglo, y zearlot para poder meter un arreglo de dimension 'n' debes implementar el uso de apuntadores y de la instruccion sizeof!!

Anónimo dijo...

hola estudio ingenieria informatica, ¿como retornar arreglos desde una funcion en c++?

gedeon silvestre dijo...

quiero hacer un programa q capture las calificaciones de n personas (n=5)q calcule el promedio y despliegue arriba de la media lo q este por encima de la media de esas personas

Mägo dijo...

Hola, quisiera saber como declara un arreglo dentro de una estructura. Especificamente, necesito hacer el registro de 25 personas mediante una estructura, y mostrar con un arreglo los datos introducidos

Gracias.

romina dijo...

hola....estoy en primer año de analista de sistemas...segundo cuatrimestre!! y me dieron un algoritmo para hacer utilizando lo basico de programacion estructurada..include stdio.h, include conio.h,printf,scanf,int,longint,while,if y tambien tengo q usar estas es la parte nueva arreglos!!! el algoritmo dice..."dado un numero ingresado (long)ordenar sus digitos en forma creciente o decreciente segun rekiera el usuario..."
excelente si me pueden ayudar a hacerlo!!!
gracias!!

Ivette dijo...

y que pasa si aun no tengo el tamanio del arreglo, como lo voy a declarar, y como lo voy a inicializar cuando ya tenga el tamanio deseado?

William dijo...

como hago para q al arreglo le pueda ingresar variables tipo char??

no he podido!!!!

gracias.

monica dijo...

HOLA POR FA NECESITO URGENTE COMO ORDENAR LOS VALORES DECLARADOS EN EL ARREGLO DE MENOR A MAYOR O EN ORDEN ACENDENTE O DECENDENTE!!!! AUXILIO ANDO MAL EN LA U POR ESO NO SE COMO HACERLO, EL QUE ME PUEDA AYUDAR MANDENME EL CODIGO CON UNA EXPLICACION CHIQUIS AL CORREO: monik_6812@yahoo.com
ES URGENTE POR FIS

Melissa dijo...

Hola!!!Estoy desesperada, tengo qeu hacer un programa en c++, en dev c++, que tenga mantiene en unos archivos de .txt, y que busque en ellos palabras claves y que con esto despliegue la el nombre del archivo y la linea donde está,... pero soy tan novata, que ni siquera se en cual archivo debo ponerlo, en el main, en el cpp, en .h!!!!!
Ayúdenme!!!
marina

gartuz dijo...

Tengo una duda se que un arreglo se puede inicializar sin indicar el tamaño dentro de los parentesis cuadrados (arreglo[] = "Casa", pero he querido hacer una clase llamada String pero no puedo hacer lo mismo dentro de esa clase ya que en el encabezado (.h) me pide que le ponga tamaño y yo quiero definir el tamaño hasta que se le introduzca el primer dato,

Anónimo dijo...

hola
estoy tratando de hacer una dll en c++ que calcule la tranfomada de wavelet, pero no estoy muy familiarizado con el lenguaje y mucho menos con el uso de arrays. por favor pudiera alguien echarle un ojo al codigo y decirme cual es el problema. gracias


double transform( double a[], int n )
{
if (n >= 4)
{
int i, j;
int half = n >> 1;

double tmp[] = new double[n];

i = 0;
for (j = 0; j < n-3; j = j + 2) {
tmp[i] = a[j] * 0.4830 + a[j+1] * 0.8365 + a[j+2] * 0.2241 + a[j+3] * (-0.1294);
tmp[i+half] = a[j] * (-0.1294) + a[j+1] * (-0.2241) + a[j+2] * 0.8365 + a[j+3] * (-0.4830);
i++;
}

tmp[i] = a[n-2] * 0.4830 + a[n-1] * 0.8365 + a[0] * 0.2241 + a[1] * (-0.1294);
tmp[i+half] = a[n-2] * (-0.1294) + a[n-1] * (-0.2241) + a[0] * 0.8365 + a[1] * (-0.4830);

for (i = 0; i < n; i++) {
a[i] = tmp[i];
}
}
} // transform


el error que obtengo al compilar es el siguiente:

error C2440: 'initializing' : cannot convert from 'double *' to 'double []'

gracias por su tiempo
saludos

Anónimo dijo...

tengo que hacer un trabajo y no se como hacerlo. lo que me piden es:
Un problema clásico de la Teoría de Grafos es el de encontrar la distancia más corta entre una
serie de lugares, separados por caminos de longitud variable. Por ejemplo, si tenemos n ciudades,
Ciudad1, . . . , Ciudadn, denimos aij como la distancia de un camino directo entre la Ciudadi y la
Ciudadj . Podemos guardar estos datos en una matriz (aij) de tamaño n × n.
Sin embargo, los datos que tenemos que manejar no son n2, ya que aii = 0 para todo i,
y aij = aji para todo i, j. (¾Cuántos datos tenemos que manejar entonces?). Es decir, toda
la información necesaria se puede guardar en una matriz simétrica.
Encontrar la distancia mínima entre dos ciudades (posiblemente pasando por otras) no es un
problema trivial, sobre todo si el número de datos es grande. Para resolver este problema podemos
utilizar el Algoritmo de Floyd-Warshall. El algoritmo consiste en lo siguiente: sea A0 la matriz
de las longitudes de los caminos entre las n ciudades. Calculamos entonces las matrices A1, . . . ,
An, donde
Ak(i, j) = mínimo{Ak−1(i, j),Ak−1(i, k) + Ak−1(k, j)}
para k = 1, . . . , n. Las distancias mínimas son las entradas de An.
(Observa que, aunque hay un camino directo entre Ciudad2 y Ciudad3, de longitud 4, podemos
llegar de una ciudad a otra utilizando un camino de longitud 2 que pasa por Ciudad1).
Para manejar los datos de este tipo de matrices simétricas, podemos utilizar un array 1-
dimensional, ya que sólo tenemos que guardar los datos por debajo de la diagonal principal
(esto es, sólo nos importan las entradas aij con i > j). Por ejemplo, la matriz anterior se
podría representar mediante el vector (1, 1, 4). Para esto, tenemos que hacer corresponder el
par (i, j) con el correspondiente índice del array 1-dimensional.
Escribe los procedimientos necesarios para manejar este tipo de datos: leer los datos de una
matriz, escribir una matriz por pantalla, . . . .
Escribe un procedimiento que implemente el algoritmo de Floyd-Warshall, es decir, que reciba
una matriz con las longitudes de los caminos y devuelva una matriz con las distancias
mínimas.

ZULMA GUERRERO dijo...

necesito explicacion sobre arreglos y profundizar en ciclos do while y for GRACIAS ribir a zhummy44@hotmail.com

Anónimo dijo...

esto del c++ no me gusthaa!!

=S

te odiio VALENTE!!

:p

Anónimo dijo...

Como puedo ingresar valores pedidos con un JOptionPane.showInputDialog a un arreglo

Xilena dijo...

Como puedo ingresar valores con un JOptionPane.showInputDialog en un arreglo

Anónimo dijo...

por favorr, como hago para pasar de una matriz a un vector??

estoy muriendo en programacion...
si alguien sabe
agregue
evelyn_354@hotmail.com

adioss

Anónimo dijo...

hola amigo, mira me estoy volviendo loko, me gustaria sabes como hago para crear un programa que me tome un arreglo de las dimenciones que desee
(a travez de ciclos con "cin>>...") y luego trabajar con este arreglo.
espero que me entiendas... te agradeceria tu respuesta, chau amigo....
daniloperassi@hotmail.com

victor dijo...

desearía cómo hacer un programa que permita manejar dos archivos, uno que almacene números aleatorios, una línea un arreglo de 10 enteros. Y que los almacene ordenados en otro archivo de menor a mayor.
por favor si pudieras me mandas la respuesta a
victorvalro@hotmail.com..
slds y gracias...

Anónimo dijo...

De acuerdo con novata

FMV dijo...

tiendo nada :S

Anónimo dijo...

necesito elaborar un programa que lea e imprima en una matriz o un arreglo, varios nombres.

David dijo...

necesito elaborar un programa que lea e imprima una lista de nombres en c++

C3S4R dijo...

me pueden decir que son las Variables con funciones especificas, y para que se utilizan arreglos???

Anónimo dijo...

olaaa.... tengo que ingresar tres puntos de un plano catesiano, que corresponde a los vertices de un triangulo, y sacar sus puntos medios respectivos....
mira, como cada punto con dos coordenadas, (x, y) pensé en ingresarlo como un arreglo, pero no me resulta...
ayudanmeee plisss!!!

Rosa dijo...

hola buenas necesito con urgencia un codigo para dev Cque me dibuje una matriz de 11 por 11 esto es lo que tengo
#include "stdio.h"
#include "conio.h"
matriza[11][11];

int main()
{
for (char i; i<=11;i++){
}
for (char j; j<=11;j++){
matriza[i][j]="*";
}


printf ("Matriz A \n");
scanf ("%c", matriza);

getch();
return 0;
}


he estado 5 hora intentadolo y acabo de encontrar este blog ayudenme por favor

lo vago dijo...

groso

Anónimo dijo...

estoy tratando de hacer un programa de una tabla de 8 equipos de futbol con arreglos soy novato en esto y no se como hacerlo realmente

Josmell Jimenez dijo...

Esta sencillo por lo poco que vi.

Se declaran los arreglos inicializados en 0, entonces usas el FOR para que el usuario vaya llenando los arreglos con el otro FOR. De esa manera el arreglo 0 seria igual al primer numero que intrudujiste, el arreglo 1 seria igual al segundo numero que introdujiste, hasta que llega al tamaño maximo del arreglo.
THANX ;)

The_five_peaks_of_chaos dijo...

mira sabe sque tengo ke hacer un proyecto en dev c++ y keria saber si me podias ayudar porke tengo ke crear un arraid como si fuera un album de canciones con el nombre de la cancion y ciertos datos y cada cancion asignarle un numero (numero ke es la ubicacion del mismo en el arraid) y crear un .h y un .c y en el .h crear unas funciones para agregar canciones a la arraid(ingreso por usuario) y uno para eliminar las canciones ke estan dentro de el arraid (indentificando el eliminado con el numero) ademas que no keden espacios vacios , no se si me explico y mi profe digamoslo asi no explico nada simplemente dijo haganlo, si puedes ayudarme te lo agradeceria

Freeman dijo...

Buena explicacion.

Anónimo dijo...

muchas gracias me sirvio mucho!!
:P

Anónimo dijo...

porfavor necesito porfa alguien q m ayud q m espliq como aces para ordnar un arreglo en c++ 4,6,9,3,8,1 ordenarlos de manor a mayor 1,3,4,6,8,9 con con el operador FOR porfa se los agradceria mucho

Anónimo dijo...

Alguien me puede ayudar en aprende a programar, solo necesito tutoriales en pdf les dejo mi correo ojit05@hotmail.com

Anónimo dijo...

ayudeme con ejemplos de arreglos y punteros mas especificos, en el momento de declarar variables y estblecerlos programas.

Oscar dijo...

buenas noches, es que tengo que inicializar un arreglo dinamico en 0... pero no se si el ejecutable tiene que mostrarme el arreglo? osea imprimirlo? o que? ... pdta: no puedo utilizar for, ni ningun otro auxiliar....

gracias

Anónimo dijo...

cuando no devo de ocupar arreglos

Anónimo dijo...

cuando serian los arreglos un estorbo

Anónimo dijo...

Hola debo hallar la media artimetica de las estaturas de una clase hasta hay todo bien, pero ademas debo determinar las estaturas mas altas que el resultado de la media y las mas bajas que la media el codigo lo llevo asi:

float max = 2.00;
float min = 1.00;

float arreglo[4];
int i,limite;
float suma = 0;
float media = 0;
limite = 5;
printf("Inserte 5 numeros a calcular\n\n");
for(i = 0; i<5; i++){
scanf("%f", &arreglo[i]);
suma = suma + arreglo[i];

media = suma / limite;
}

Anónimo dijo...

hola :D necesito un programa en c++ que almacene 15 alumnos y escribir un nombre lo imprima si esta n la lista y si no esta en la lista imprima que no se encuentra en la lista

Anónimo dijo...

Hola necesito hacer un programa ke calule una integral definida con arreglo numerico , no tengo ni la menor idea de komo hacerlo , me podrian ayudar?

Anónimo dijo...

hasme un zing :)

Anónimo dijo...

PARA LA PERSONA QUE QUIERE DIBUJAR UNA MATRIZ 11X11

#include
#include
#include
#define MAX 11

//función principal
int main(){

//datos de entrada
int MA[MAX][MAX];

int i=0;
int j=0;

for(i=0;i<n;i++){ //ciclo para filas
for(j=0;j<n;j++){ //ciclo para columnas
printf("Dame el valor de elemento [%d][%d] de MA",i,j);
scanf("%d",&MA[i][j]);
printf("La matriz A es:\n\n");
for(i=0;i<n;i++){//ciclo para filas
for(j=0;j<n;j++){ //ciclo para columnas
printf("%d ",MA[i][j]);
}
}
}

Leila Keller dijo...

¿Es preferente usar ciclo for para funciones de arreglos?

Anónimo dijo...

ola disculpa me podrias ayudar con la sintaxis de declaracion de un arreglo. por fis. gracias

Anónimo dijo...

HOLA ocupo ayuda urgente mente tego que realizar un arreglo bidimencional de 2 columnas y 15 filas la primera columna se ingresaran numeros aleatorios no mayores al numero 100 y no me nores al numero 1.una vez capturados los numeros de la columna numero 1 en orden acendente y al terminar el ordenamiento de dichos numeros se debe imprimir la posicion elo valor de la columna 1 y el valor de la columna 2 por favor ocupo ayuda!!

Anónimo dijo...

QUIERO GENERAR UN ARREGLO A PARTIR DE OTRO PREVIAMENTE Y A HECHO
EJM
PRIMER AREGLO 1 7 5 8 9
DAR UNA POSICION DE INICIO DEL OTRO EJM 4
EL NUEVO ARREGLO Q SEA
8 9 1 7 5

Anónimo dijo...

Hola, como podria crear un array, para poder lanzar una clase (de una bola por ejemplo) cada vez que haga click, de manera que cada vez que se haga click se crea una nueva bola.
Gracias!

Anónimo dijo...

Hola. Como hago si no se la cantidad de espacios que necesito en el vector, por ejemplo: que el programa pregunte cuantos hijos tiene, ejemplo 3, y que el vector sea de 3 posiciones. Osea que dependo del dato "cantidad" para armar mi vector.

Anónimo dijo...

Hola,necesito hacer un programa que ingrese un valor ex. 1,300. y un arreglo q contenga las denominaciones de monedas (500, 100, 50, 20, 10, 5, 2, 1) y que luego el programa imprima cuanto de cada moneda necesito, siguiendo el ejemplo de 1,300. = 500 (ocupa 2, 100 (ocupa 3)

Anónimo dijo...

Asignación del número 49 a un arreglo entero. como seria??

Anónimo dijo...

COMO LE HAGO PARA DECLARAR UNA TABLA O ARREGLO, DONDE TENGO QUE USACAR VALORES DE CENTIMETROS = A GALONES,,, YA QUE QUIERO CUBICAR UN CILINDRO ACOSTADO Y EL CLIENTE TIENE UNA TABLA AFORADA CADA CENTIMETRO

Anónimo dijo...

tengo un archivo de 10 filias dos columnas y necesito meter esa informacion en un arreglo me podrian ayudar

Anónimo dijo...

DAFAAAC no entiendo