Ir ao conteúdo
  • Cadastre-se

C Olá ! Como seria essas questões usando alocação dinâmica


Posts recomendados

1- Crie uma função que recebe um vetor de inteiros (alocado dinamicamente), seu tamanho e um número N.
O vetor deve ser "cortado" no índice N e o vetor deve ser "reescrito" com o elemento do índice N retirado. A memória ocupada deve ser reduzida, uma vez que o elemento foi retirado.

Por exemplo:
Vetor de entrada: 10, 12, 13, 14, 17, 20 (vetor de inteiros com 6 posições)
se N = 3, o elemento v[3] será retirado.
O vetor de saída será: 10, 12, 13, 17, 20 (vetor de inteiros com 5 posições).

 

Use malloc, calloc, realloc, free quando necessário. Independente como você faça, o vetor de saída TEM QUE TER um tamanho menor através de manipulação dos espaços de memória.

2- Crie uma função que recebe duas strings (pode ser alocação estática ou dinâmica) e crie uma nova string. Essa nova string deve conter as duas strings juntas (concatenadas), mas separadas por um espaço.

Por exemplo:
String 1: "Pedro" (string de tamanho 5, mais o '\0')
String 2: "Henrique" (string de tamanho 8, mais o '\0')
String de saída: "Pedro Henrique" (string de tamanho 14, mais o '\0', lembrando que o espaço também é um caractere).

Use malloc ou calloc e não esqueça de usar o free no final do programa.
 

  • Triste 1
Link para o comentário
Compartilhar em outros sites

Seria algo assim

 

void retira(int *vec, size_t vec_len, size_t index)
{
    assert(index < vec_len);
    // Mova todos os caracteres a partir (index + 1) um indice atras
    // realloc o vetor para o tamanho sizeof(int) * (vec_len - 1)
}

char* strcat_new(const char* s0, const char* s1)
{
    // pegue o valor da string s0
    // pegue o valor da string s1

    // crie um variavel para guardar o valor do tamanho da string nove
    // este valor será a soma das string + 2 (espaço e nulo no final)
    
    // alloque a memoria
  
    // concatene neste ponteiro a s0 depois o espaço de depois a s1 e depois o '\0'

  	// retorne o ponteiro
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...