0

¿Cómo le doy un valor a un arreglo no definido? O sea, yo acostumbro hacer esto, pero se que está mal, al menos hasta donde he leído, alguien me puede decir, como definir el valor de un arreglo bien, o como meterle exactamente los valores que quiero, digo se que si lo declaro por ejemplo #define arreglo[100] y solo guardo los primeros 5 valores y luego muestro 5, quedan sobrando 95 espacios, eso esta bien o que sería mejor?. Estoy aprendiendo espero su grata respuesta

#include <iostream>


using namespace std;
int main() {

    int valor;
    int valores;

    cout<<"Digite el valor del arreglo"<<endl;
    cin>>valor;
    int arreglo[valor];

    cout<<"Indique los valores a guardar"<<endl;

    for(int i=0; i<valor; i++){
        cin>>valores;
        arreglo[i]=valores;

    }
    for(int i=0; i<valor; i++){

        cout<<arreglo[i];

    }





    return 0;
}
TomuRain
  • 644
  • 4
  • 16
Xetine
  • 59
  • 6
  • 2
    [`std::vector`](https://en.cppreference.com/w/cpp/container/vector). Si ves complicada esa documentacion, tambien tienes [este video de The Cherno](https://www.youtube.com/watch?v=PocJ5jXv8No). – Pablochaches May 02 '21 at 20:58
  • Tambien puedes usar memoria dinamica:realloc(); Pero recuerda liberarla despues: free(arreglo);: – Daniel Briceño May 02 '21 at 21:16

2 Answers2

0

Una solución es usar punteros, crear una variable de tipo puntero entero y definir su espacio después de pedir el tamaño. La unica línea que tendrías que cambiar es la definición de tu arreglo.

int *arreglo = new int[valor];

Y como buena practica liberar el espacio si es requerido con:

delete [] arreglo;
denso
  • 401
  • 3
  • 12
0

¿Cómo le doy un valor a un arreglo no definido?

No lo haces, si no lo defines no puedes usarlo.


En , los arreglos en memoria automática necesitan que su tamaño sea una constante, no una variable. Por lo tanto este código está mal:

cin>>valor;
int arreglo[valor];

Si quieres una colección de datos cuyo tamaño se ajuste automáticamente, deberás usar la librería de contenedores, lee este hilo para decidir qué contenedor te conviene en cada caso.

Te pongo un ejemplo con std::vector:

using namespace std;
int main() {

    using namespace std;

    cout << "Digite el tamaño del arreglo\n";
    int tamanyo;
    cin >> tamanyo

    vector<int> arreglo(tamanyo, 0); // Un vector de 'tamanyo' elementos inicializados a '0'

    cout << "Indique los valores a guardar\n";
    for (auto &valor : arreglo)
        cin >> valor;

    for (const auto &valor : arreglo)
        cout << valor;

    return 0;
}
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82