Declare an array with a length entered by the user

2

Suppose I put 10 in the length of the vectors in the following code. The problem is that even if I put 10 in the length, I can only enter 6 coordinates to the vector using the keyboard.

Why does that problem happen?

int main(){
    int i=0;
    int j=0;
    int largovector=0;
    int vector1[largovector];
    int vector2[largovector];
    int minimo=999999;
    int maximo=-999999;
    int contador=1;

    printf("Ingrese el largo del vector\n"); //Definimos el largo del vector
    scanf("%d",&largovector);
    for(j=1; j<=largovector; j++) //Definimos los numeros del vector
    {
        printf ("Ingrese el valor de la coordenada %d del vector: \n",j);
        scanf ("%d",&vector1[j]);
    }
    for(i=largovector; i>=0; i--,contador++) //Asignar los valores del vector1 al vector2
    {
        vector2[contador]=vector1[i];
    }
    printf("El vector 1 esta formado por los numeros: ");//Imprimimos el primer vector
    for(j=1; j<=largovector; j++)
    {
        printf(" %d ",vector1[j]);
    }
    printf("\n");
    printf("El vector 2 esta formado por los numeros: "); //Imprimimos el segundo vector

    for (i=1; i<=largovector; i++)
    {
        printf(" %d ",vector2[i]);
    }
    printf("\n");
}
    
asked by Jefren 28.04.2018 в 06:25
source

2 answers

3

Be sure to size the array after entering the capacity of it and remember that the array in C begin with index 0.

int main ()
{
 int j;
 int largovector;
 printf ("Ingrese el largo del vector\n");  //Definimos el largo del vector
 scanf ("%d", &largovector);
 int vector1[largovector];
 for (j = 0; j < largovector; j++)  //Definimos los numeros del vector
 {
    printf ("Ingrese el valor de la coordenada %d del vector: \n", j + 1);
    scanf ("%d", &vector1[j]);
 }
 printf ("El vector 1 esta formado por los numeros: "); //Imprimimos el primer vector

 for (j = 0; j < largovector; j++)
 {
    printf (" %d ", vector1[j]);
 } 
 printf ("\n");
 }
    
answered by 28.04.2018 / 15:36
source
1

You have a couple of problems, they are in the comments within the code. I hope it helps.

#include <stdio.h>

int main(){
    int largovector=0;
    int contador = 0;

    printf("Ingrese la dimension del vector\n"); //Definimos el largo del vector
    scanf("%d",&largovector);

        // Primero debes pedir la dimension del vector para poder iniciarlizar el vector con esa dimension
        // O al menos que desees tener un vetor con dimension dinamica

        int vector1[largovector]; // Declara vector1
    int vector2[largovector]; // Declara vector 2

        // Llenado del vector 1
        for(int j=0; j < largovector; j++){
        printf ("Ingrese el valor del vector en posicion[ %d ] : ",j+1);
        scanf ("%d",&vector1[j]);
    }

        // Llenado del vector 2 inversa
        // largocector -1 => ya que empieza desde cero
    for(int i = largovector-1; i >= 0; i--, contador++){
        vector2[contador]=vector1[i];
    }

    printf("El vector 1 esta formado por los numeros: ");//Imprimimos el primer vector
    for(int j = 0; j < largovector; j++){
        printf(" %d ",vector1[j]);
    }
    printf("\n");

    printf("El vector 2 esta formado por los numeros: "); //Imprimimos el segundo vector

    for (int i = 0; i < largovector; i++){
        printf(" %d ",vector2[i]);
    }
    printf("\n");
}
    
answered by 28.04.2018 в 21:17