Qué son los arreglos
Comenzaremos con lo básico, un arreglo o “array” en ingles es una estructura de datos que nos sirve para almacenar múltiples datos en una sola variable. Imaginemos que tienes que realizar un programa que capture 100 calificaciones, tendrías que recurrir a la declaración de 100 variables, bueno todo eso se puede evitar con un solo arreglo en donde se almacenen los datos ingresados.
Un arreglo esta conformado por el nombre que desees usar para este y se debe reservar un espacio de memoria para este (esto dependerá del tamaño que se necesite en cada programa)
un ejemplo seria
1 2 3 4 |
float calificacion[45]; // Se necesita declarar el tipo de dato de la variable // Se le da un nombre al arreglo // El numero que esta entre corchetes es el numero de espacios de memoria para el arreglo |
Una vez que definimos el nombre del arreglo, el tipo de dato y su tamaño se puede comenzar a agregar datos a el.
Un dato importante de los arreglos es que comienzan desde el espacio 0 y no desde el espacio uno como imaginas ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { float calificacion[5]={1,2,3,4,5};//En esta parte le damos un valor a cada espacio de memoria cout<<calificacion[0]<<endl;//Imprime la primera posición del arreglo el cual es 1 cout<<calificacion[1]<<endl;//Imprime la segunda posición del arreglo el cual es 2 cout<<calificacion[2]<<endl;//Imprime la tercera posición del arreglo el cual es 3 cout<<calificacion[3]<<endl;//Imprime la cuarta posición del arreglo el cual es 4 cout<<calificacion[4]<<endl;//Imprime la quinta posición del arreglo el cual es 5 return 0; } |
Nota: Es muy importante que el ultimo espacio del array quede vacío ya que si se saturan dará error para dejarlo mas claro el espacio [5] debe dejarse vacío por cuestiones de memoria.
Ahora bien que ya tenemos una pequeña idea de que es un arreglo y como se define pasaremos a los arreglos numéricos.
Arreglos numéricos
Los arreglos numéricos como su nombre lo dice son utilizados para guardar números ya sea en forma de vectores o en forma de matriz
Aquí un ejemplo de un arreglo numérico mejorando el ejemplo anterior (Nota: se hace uso del ciclo for)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <iostream> using namespace std; int main() { float calificacion[10],cali;// Se definen las variables a usar de tipo float int i;// Es mi variable para el'for' for(i=1; i<6; i++){// se utiliza para recorrer espacio por espacio de los espacios del array cout<<"Ingresa la calificacion num."<<i<<endl;//lo inicialize en 1 para utilizarlo de contador cin>>cali;//ingresa el dato a la variable que se utilizara para agregar datos al arreglo calificacion[i]=cali;//Guarda la variable cali en el [i] que esta en uso } for(i=1; i<6; i++){//Este ciclo es usado para leer dato por dato del arreglo cout<<"La calificacion No. "<<i<<" es "<<calificacion[i]<<endl;//imprime lugar por lugar del arreglo } return 0; } |
Arreglos de caracteres
Entrando al tema de los arreglos de caracteres hay algunas diferencias tales como la declaración, la manera de imprimir el valor completo de su contenido, etc.
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { char arreglo[20]; //Se declara como tipo char para cadenas return 0; } |
Se puede inicializar un arreglo con datos en el pero debemos tener cuidado si hacemos eso ya que si quedan espacios libres en la memoria puede tirar “basura” a la pantalla. Pueden compilar este ejemplo para que vean de lo que hablo.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> using namespace std; int main() { char arreglo[]={'j','o','r','g','e'};//Se declara como tipo char para cadenas // notese que no se le dio un espacio definido al arreglo cout<<"\nTu nombre es "<<arreglo<<endl;// imprime todo el arreglo y su contenido return 0; } |
Esto puede arreglarse definiendo el numero de espacios de memoria para el arreglo o poniendo un ” \0 ” al terminar los datos necesarios.
1 |
char arreglo[]={'j','o','r','g','e','\0'}; |
Con ese \0 le das la instrucción a la computadora que la cadena terminó eh imprime todo hasta que encuentre este carácter
Así como se puede trabajar con caracteres se puede con cadenas y esto lo haríamos mas o menos así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> using namespace std; int main() { char arreglo[20];//Se declara como tipo char para cadenas cout<<"\nIngresa tu nombre "<<endl;// pide al usuario que digite su nombre cin>>arreglo;//Guarda los datos ingresados en el arreglo cout<<"Tu nombre es "<<arreglo<<endl;//imprime el arreglo return 0; } |
Este pequeño pedazo de código imprime la cadena que el usuario escriba aquí el problema que recibe todos los datos hasta que el usuario da un espacio, en ese momento deja de guardar lo que esta recibiendo y solo se queda con lo que fue escrito antes del espacio.
Bueno esto se puede solucionar utilizando la función llamada “getline” y se usa así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> using namespace std; int main() { string arreglo[20];//Se declara como tipo char para cadenas cout<<"\nIngresa tu nombre "<<endl;// pide al usuario que digite su nombre cin.getline(arreglo,20);//Guarda los datos ingresados en el arreglo con todo y espacios cout<<"Tu nombre es "<<arreglo<<endl;//imprime el arreglo return 0; } |
Para usar esta función también es necesario darle el numero de espacios de memoria que puede utilizar y así es como puede recibir cadenas completas con todo y espacios ademas que se agrega automáticamente el espacio delimitador \0.
Podemos usar muchas variables de estas funciones como “getline” y variantes pero eso depende de la persona y como se necesite en el programa si lo manejamos como string o como char etc.
En teoría los arreglos numéricos y los de caracteres se pueden utilizar de muchas formas y sus diferencias es como se declaran y como los manejamos ya sea como caracteres, cadenas o simplemente ir almacenando números enteros o flotantes. Intente ser muy claro en los ejemplos y explicaciones y se que puede parecer un poco confuso al principio pero con practica y experiencia se lograra.
El que tiene getline no funciona.
del putas mija