Alocação dinâmica
Bom dia pessoal, estou com um probleminha, preciso entregar hoje um trabalho de faculdade em algoritimos computacionais, mas to me batendo muito.
A questão é assim:
Faça um programa que leia números do teclado e os armazene em um vetor alocado dinamicamente. O usuario irá digitar uma sequência de números, sem limite de quantidade. Os números serão digitados um a um e, sendo que caso ele deseje encerrar a entrada de dados, ele irá digitar o numero ZERO. Os dados devem ser armazenados na memória deste modo:
• Inicie com um vetor de tamanho 10 alocado dinamicamente;
• Apos, caso o vetor alocado esteja cheio, aloque um novo vetor do tamanho do vetor anterior adicionado espaço para mais 10 valores (tamanho N+10, onde N inicia com 10);
• Copie os valores já digitados da área inicial para esta área maior e libere a memória da área inicial;
• Repita este procedimento de expandir dinamicamente com mais 10 valores o vetor alocado cada vez que o mesmo estiver cheio. Assim o vetor ira ser ’expandido’ de 10 em 10 valores.
O grande problema que estou tendo é que não consigo fazer o while repetir da forma que preciso. iniciei o programa assim:
#include <stdio.h>
#include <stdlib.h>
main(){
int *vetor,tam=10,i=0;
vetor = malloc(sizeof(int)*tam);
while (vetor!=0 || i<tam){
scanf("%d",vetor+i);
printf("%d i \n",i);
i++;
}
for(i=0;i<tam;i++){
printf("indice %d vetor %d\n",i,vetor+i);
}
}
mas o ||(ou) não quer funcionar, ou ele usa um como parametro ou usa a outra regra.
Alguem consegue me ajudar a resolver isso?Discussão (1)
Carregando comentários...