Informática, perguntado por dedreeip7lsvc, 6 meses atrás

Observe o código-fonte a seguir:

01 - int vet[10];
02 - int i;
03 -
04 - for(i=0;i<=10;i++){
05 - printf("Digite:\n");
06 - scanf("%d", &vet[i]);
07 - }

Com base no programa acima, avalie as afirmações:

I - Ao modificar o scanf() da linha 06 para scanf("%d", vet), poderíamos fazer a leitura do vetor sem o laço da linha 4.

II - Neste vetor, a primeira posição se encontra no índice igual a 0, e a última posição, índice igual a 9

III - O código-fonte irá tentar acessar uma posição que extrapola o limite superior do vetor.

Assim sendo, pode se dizer que é correto o que se afirma em:

Soluções para a tarefa

Respondido por PedroviskHMA
3

| - Não. Colocar o vet diretamente no scanf(), sem determinar um endereço de memória específico, vai fazer sempre o scanf() sobrescrever apenas o primeiro endereço do vetor (nota: o nome de um vetor é um ponteiro para o primeiro endereço de memória do vetor dele próprio. Então, se "vet" for um nome de um vetor, vet == &vet[0]).

|| - Certo. Um vetor sempre inicia na posição 0 e termina um número antes do declarado.

||| - Sim. Devido ao range especificado pelo laço for, ele vai extrapolar o vetor, chegando no item 10 do vetor vet, que é um item que não existe.


reiloubar: a II, creio q esta incorreto, pois vai de 0 a 10. o i<=10, inclui o 10, deu 11 posições no vetor.
PedroviskHMA: Olá. O fato do for estar incluindo de 0 a 10 no vetor, não quer dizer que o vetor realmente tenha todas essas posições. Creio que a questão se refere explicitamente ao vetor declarado. que vai de 0 a 9.
Perguntas interessantes