How to make the user choose the amount of elements in an ARRAY?

Asked

Viewed 67 times

-1

#include <stdio.h>
 
int main()
{

    int numeros[10];
 
    printf("Digite 10 numeros (separados por ENTER ou SPACE):\n");
    for(int i = 0; i < 10; i++)
        scanf(" %d", &numeros[i]);
 
    printf("\nNa ordem inversa:\n");
    for(int i = 9; i >= 0; i--)
        printf("%d ", numeros[i]);
 
    printf("\n");
    rewind(stdin);
    getchar();
    return 0;
}

In this case above the user just type the elements 1 to 10, but is there any way to make the user choose the amount of elements? For example, first the user says he wants 12, 15, or 20 elements in the array and then he numbers what these elements are.

3 answers

1

If the size of the vector cannot be determined in the compilation or at least guaranteed that it will not be too large then it should be used ponteiro and dynamically allocate memory. Example:

int tamanho; /* Variavel que guarda o tamanho do ponteiro/vetor */
int *vetor; /* Ponteiro que sera utilizado como vetor */

printf("Digite o tamanho do vetor: ");
scanf("%d", &tamanho);

vetor = malloc(sizeof tamanho); /* Alocando memoria */

if (vetor == NULL) /* Verificando se a alocacao foi feita com sucesso */
{
    puts("Erro ao alocar memoria!");
    return 1; /* Ecerrando programa, pois sem o vetor nao eh possivel prosseguir */
}

/* Agora voce pode usar esse ponteiro como se fosse um vetor */

/* Seu codigo */

free(vetor); /* Quando o vetor nao for mais necessario entao deve-se
liberar a memoria alocada */

return 0;

Some complementary answers

Dynamic allocation of memory x vector

How to create a vector of variable size?

Arrays are pointers?

What prevents an array from being initialized with a variable size?

char or char malloc

0

Ask the user the length of the matrix:

int comprimento = 0;

printf("Insira o comprimento da matriz: ");
scanf("%d", &comprimento);

Declare the matrix with the defined length:

int numeros[comprimento];

-1

This is very simple, just use a legal concept that the programming offers us, that is, we can set the size of a variable or array, based on another previous variable, that is, we ask the size of the array for the user first and afterward we built such an array, I did on top of your code as an example:

#include <stdio.h>

int main(){
    int quantidade;
    
    //Primeiro você precisa pedir  a quantidade de dígitos
    printf("Digite a quantidade de numeros (positivo!): ");
    scanf("%d",&quantidade);
    //Então, depois basta criar o array com essa variável tamanho (pois pode-se definir tamanhos de variáveis com outras variáveis)
    int numeros[quantidade];
    
    //Recebe todos os números
    printf("Digite %d numeros (separados por ENTER ou SPACE):\n",quantidade);
    for(int i = 0; i < quantidade; i++)
        scanf("%d", &numeros[i]);
    
    //Printa eles começando pelo final, que é quantidade-1 pois um array começa na posição 0 
    printf("\nNa ordem inversa:\n");
    for(int i = quantidade-1; i >= 0; i--)
        printf("%d ", numeros[i]);
    
    printf("\n");
    return 0;
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.