1
resposta

Resposta a questão proposta

Pra imprimir o array:

int notas[5];
 notas[0] = 1;
 notas[1] = 4;
 notas[2] = 7;
 notas[3] = 5; 
notas[4] = 10;

, posso utilizar a seguinte expressão:

for(int i- = 0; i < strlen(notas); i++) {
    printf ("%c, ", notas[i]);
}
1 resposta

Olá Fabiano.

Sua solução não funciona porque alguns pontos:

  • Primeiro, você está utilizando um vetor do tipo int então imprimir ele como tipo char não é possível, o %c que está utilizando na função printf representa o tipo char, como podemos ver na documentação:
    for(int i- = 0; i < strlen(notas); i++) {
      printf ("%c, ", notas[i]);
    }
  • Segundo, a função utilizada para saber o tamanho do seu vetor, a strlen, também não é compatível com o tipo vetor de int, como podemos ver na documentação essa função espera um vetor de char.

Outro ponto para observarmos é, porque não utilizamos um vetor de char no lugar então ? Esse então seria compatível com as funções e flags que propôs:

char notas[5];

O problema apareceria quando tentássemos armazenar por exemplo o numero 10 nesse vetor:

notas[4] = '10';

Essa linha de código vai gerar um erro, já que o numero 10 ocupa dois espaços por ter dois caracteres.

Então o melhor caminho é manter o vetor de int:

#include <stdio.h>


int main ()
{
    char notas[5];
    notas[0] = 1;
    notas[1] = 4;
    notas[2] = 7;
    notas[3] = 5; 
    notas[4] = 10;
    return 0;
}

E depois vamos utilizar um for e um printf, utilizando a flag %d que é para variáveis do tipo int.

#include <stdio.h>


int main ()
{
    char notas[5];
    notas[0] = 1;
    notas[1] = 4;
    notas[2] = 7;
    notas[3] = 5; 
    notas[4] = 10;

    for(int i = 0; i < 5; i++) {
        printf("%d\n", notas[i]);
    }
    return 0;
}

Esse código tem o tamanho do vetor escrito de maneira explicita, no for, mas ele resolve bem para a nossa situação.

Espero ter ajudado, bons estudos.