Ir ao conteúdo

Posts recomendados

Postado
void escreve (int *vetor, int *tamanho) {
int contador = 0;
int i = *tamanho;
i = i - 1;

for (i; contador == 10; --i) {
    printf("\n%i", vetor[i]);
    ++contador;
}


}

Estou tentando fazer uma função que imprima os últimos dez valores de um vetor. A variável "i" recebe um número de "tamanho" e subtrai um. Depois, pensei em criar um for de i até que o contador seja igual a 10, decrescendo de 1 em 1 o i e, ao mesmo tempo, adicionando um ao contador. Porém não está funcionando, pois a função não imprime nada. 🤔

Postado
2 horas atrás, allanxd disse:

O problema aparenta estar no for em si. E por que o tamanho é um ponteiro?

O tamanho veio de outra função, por isso usei ponteiros.

Postado

Temos alguns problemas de formulação na sua solução:

1 - para printar os 10 ultimos valores do vetor, é necessário que o vetor tenha size = 10 pelo menos, seria legal checar os parametros da função antes de começar, caso contrario voce pode gerar um buffer overflow e crashar seu programa;

2 - entendi o fato de usar um pointeiro para o vetor, ok, super valido, mas por que o tamanho vocês está passando via vetor? porque não um int mesmo contendo o tamanho do vetor?

3 - A tua função não funciona para vetores maiores que 10, o ideal seria obter o tamanho do vetor, subtrair  10, e incializar o teu for com valor dessa subtração, afinal voce só quer os 10 ultimos.

Existe uma ordem especifica para apresentar os valores no console?

 

  • Curtir 2
Postado
4 horas atrás, Felipe Electronic disse:

Temos alguns problemas de formulação na sua solução:

1 - para printar os 10 ultimos valores do vetor, é necessário que o vetor tenha size = 10 pelo menos, seria legal checar os parametros da função antes de começar, caso contrario voce pode gerar um buffer overflow e crashar seu programa;

2 - entendi o fato de usar um pointeiro para o vetor, ok, super valido, mas por que o tamanho vocês está passando via vetor? porque não um int mesmo contendo o tamanho do vetor?

3 - A tua função não funciona para vetores maiores que 10, o ideal seria obter o tamanho do vetor, subtrair  10, e incializar o teu for com valor dessa subtração, afinal voce só quer os 10 ultimos.

Existe uma ordem especifica para apresentar os valores no console?

 

Consegui resolver o problema, fazendo:

contador = 10;

for (i;contador; --i) {
    printf("\n%i", vetor);
    ++contador;
}

 

Postado

Fico feliz por ter conseguido @MartiniM, mas só para não deixar em branco as dicas do amigo @Felipe Electronic escrevi esta função abaixo seguindo as dicas dele, acredito ser uma boa maneira de resolver o seu problema.

void printar(int *vetor, int tamanho){
    
    if(tamanho < 10){
        printf("\nTamanho Invalido!\n");
        return;
    }
        for(int i=tamanho-10; i<tamanho; i++)
            printf("\n[%d]", vetor[i]);

}

 

  • Curtir 1
Postado
7 horas atrás, Asrety disse:

Fico feliz por ter conseguido @MartiniM, mas só para não deixar em branco as dicas do amigo @Felipe Electronic escrevi esta função abaixo seguindo as dicas dele, acredito ser uma boa maneira de resolver o seu problema.


void printar(int *vetor, int tamanho){
    
    if(tamanho < 10){
        printf("\nTamanho Invalido!\n");
        return;
    }
        for(int i=tamanho-10; i<tamanho; i++)
            printf("\n[%d]", vetor[i]);

}

 

Valeu, vou testar aqui.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!