Append items to the beginning of a vector without affecting existing values

0

How do you include 3 numbers at the beginning of this vector without affecting the previous numbers?

I'm trying to do this:

int main()
{

   int v[30];
   int i,x;

   for(i=0; i < 15; i++)
   {
       printf("Digite 15 numeros");
       scanf("%d", &v[i]);
   }

for(v[i+3] = v[i]; i < 18; i++)
   {
      printf("Digite Mais 3 Numeros");
      scanf("%d", &v[i]);
   }

for(i=0; i < 15; i++)
   {
    printf("%d\n", v[i+3]);
   }

}

But when presenting it, remove the first 3 numbers and put the 3 new numbers at the end.

    
asked by anonymous 12.06.2018 / 03:29

3 answers

3

After reading the 15 numbers, you should move them to 3 indices. And then just read the new 3 numbers.

#include <stdio.h>

int main() {

    int v[30];
    int i,x;

    printf("Digite 15 numeros:\n");
    for(i=0; i < 15; i++) {
        scanf("%d", &v[i]);
    }

    printf("Os  15 valores inseridos:\n");
    for(i=0; i < 15; i++) {
       printf("%d\n", v[i]);
    }

    // Move os valores 3 indices
    for(i = 15; i >= 0; --i) {
        v[i+3] = v[i];
    }

    // Salva os novos valores
    printf("Entre com mais 3 valores:\n");
    for(i = 0; i < 3; i++){
        scanf("%d", &v[i]);
    }

    printf("Os 18 valores inseridos:\n");
    for(i=0; i < 18; i++) {
        printf("%d\n", v[i]);
    }

    return 0;
}
    
12.06.2018 / 04:08
2

If you already know that you need 18 items, you would have to put the first 15 in index 3 onwards, and then the others in the beginning.

#include <stdio.h>

int main(void) {

    int v[30];
    int i;

    // Começa na quarta posição (índice 3)
    for(i=3; i<18; i++) {
        printf("Digite 15 numeros");
        scanf("%d", &v[i]);
    }

    // Agora preenche as 3 primeiras
    for(i=0; i<3; i++) {
        printf("Digite mais 3 numeros");
        scanf("%d", &v[i]);
    }

    // Imprime tudo
    for(i=0; i<18; i++) {
        printf("%d\n", v[i]);
    }

    return 0;
}

link

    
12.06.2018 / 03:58
1

Using what you said, we should do:

#include <stdio.h>
#define TAMANHO_VETOR 30

int main () {

  int vetor[TAMANHO_VETOR], i;

  // Recebe as primeiras posicoes
  for (i = 0; i < 15; i++) {
    printf ("Digite o numero para a posicao %d: ", i);
    scanf ("%d", &vetor[i]);
  }

  // Move as posicoes para receber os 3 primeiros valores
  for (i = 0; i < 15; i++) {
    vetor[i+3] = vetor[i];
  }

  // Recebe os tres primeiros numeros
  for (i = 0; i < 3; i++) {
    printf ("Digite o numero para a posicao %d: ", i);
    scanf ("%d", &vetor[i]);
  }

  // Imprime o vetor
  for (i = 0; i < 18; i++) {
    printf ("%d\t", vetor[i]);
  }

  return 0;
}
    
12.06.2018 / 03:55