Ir para conteúdo
Fórum Script Brasil
  • 0

[dúvida] retornar um vetor invertido usando uma função em c


_AlcinhA_

Pergunta

boa noite galeraaa! A questão é...preciso fazer uma função que utilizando aritmetica de ponteiro inverta os termos de um vetor. aqui vai o codigo que eu fiz, a funçao com problema ta com um comentario la...é a ordinv!

desde já muito obrigado!

#include <stdlib.h>
#include <stdio.h>

int maior (int *pv,int n){
    int i,maio;
    maio = *(pv+0);
    for (i=0;i<n;i++){
      if (*(pv+i)>maio) { 
         maio= *(pv+i);
         }
    }
    return maio;
}         

int menor (int *pv,int n) {
    int i,meno;
    meno = *(pv+0);
    for (i=0;i<n;i++){
      if (*(pv+i)<meno) { 
         meno = *(pv+i);
         }
    }
    return meno;
}
float media (int *pv,int n) {
      float s=0;
      int i;       
      for (i=0;i<n;i++) {
          s=s+*(pv+i);
          }
      return (s/n);
}       
int numneg (int *pv,int n) {
    int i,cont;
    cont=0;
    for (i=0;i<n;i++) {
        if (*(pv+i)<0) {
           cont=cont+1;
           }
           }
    return cont;
}
//funçao com problema!!!!!
int ordinv(int *pv,int n){
    int i,j,aux;
    for (i=0,j=n-1;i<j;i++,j--) {
        aux=*(pv+i);
        *(pv+i)=*(pv+j);
        *(pv+j)=aux;
        }
return *(pv+i);
}

int main () {
    int n,i, *pv;
    printf("Digite a quantidade de termos do vetor\n");
    scanf("%d", &n);
    pv=(int *)malloc(n*sizeof(int));
    if(!pv) {
        printf("MEMORIA INSUFICIENTE");
        exit(1);
    }
    for (i=0;i<n;i++) {
        printf("Digite o termo v[%d]\n", i+1);
        scanf("%d",pv+i);
    }
    printf("O valor do maior termo digitado e: %d",maior(pv,n));
    printf("\n\n");
    printf("O valor do menor termo digitado e: %d",menor(pv,n));
    printf("\n\n");
    printf("A media dos termos digitados e: %f", media(pv,n));
    printf("\n\n");
    printf("A quantidade de numeros negativos e: %d", numneg(pv,n));
    printf("\n\n");
    printf("O vetor invertido\n");
    for (i=0;i<n;i++){
        printf("%d\n",ordinv(pv,n));
        }
    system ("PAUSE");
    return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Ola,

O erro estava no retorna da funcao.

Você estava devolvendo o indice errado do vetor.

E como você já esta reordenando o proprio vetor, nem precisa ter retorno.

Fiz uma versão reduzida pra você ter uma idéia.

qualquer coisa avisa ai.

Abs

#include <stdio.h>

#include <stdlib.h>

//funçao com problema!!!!!

void ordinv(int *pv,int n){

int i,j,aux;

for (i=0,j=n-1;i<j;i++,j--) {

aux=*(pv+i);

*(pv+i)=*(pv+j);

*(pv+j)=aux;

}

return pv;

}

void main(void

Agora vai o codigo completo.

Desculpe.

#include <stdio.h>

#include <stdlib.h>

//funçao com problema!!!!!

int *ordinv(int *pv,int n){

int i,j,aux;

for (i=0,j=n-1;i<j;i++,j--) {

aux=*(pv+i);

*(pv+i)=*(pv+j);

*(pv+j)=aux;

}

return pv;

}

void main(void)

{

int *n = (int*) malloc(sizeof(int) * 10);

n[0] = 0;

n[1] = 1;

n[2] = 2;

n[3] = 3;

n[4] = 4;

n[5] = 5;

n[6] = 6;

n[7] = 7;

n[8] = 8;

n[9] = 9;

ordinv(n, 10);

for (int i = 0; i < 10; i ++)

printf("%d, ", n[i]);

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...