• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

problema

5 mensagens neste tópico

Desenvolva uma função que determine quantos elementos de uma tabela de inteiros são

iguais à média dos seus dois vizinhos. A função recebe como argumentos um ponteiro para o

início da tabela, o número de elementos que esta contém e um ponteiro para uma variável

inteira onde deve ser colocado o resultado (i.e., quantos elementos são iguais à média dos

seus vizinhos). A sua declaração é a seguinte:

void vizinhos(int *tab, int dim, int *igual);









oid vizinhos(int *tab, int dim, int *igual)
  {
  int i,conta=0;
  for(i=1;i<dim;i++)
      {
      
      if (*(tab+i)==(*(tab+i-1) + *(tab+i+1)





tou a ir no caminho certo?  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a média dos dois vizinhos é o anterior mais o seguinte e o resultado a dividir por 2...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se te obrigam a usar essa sintaxe, mas não te facilitaria muito a vida trabalhar com tab[i+1] em vez de *(tab+i+1), por exemplo?

O ciclo deveria ser até <dim-1, pois não pretendes consultar a posição tab[dim] (que fazes ao incrementar +1)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:hmm:
























include<stdio.h>
#define DIM 5
void vizinhos(int *tab, int DIM, int *igual)
  {
  int i,resultado=0;
  for(i=1;i<DIM-1;i++)
      {
      
      if (*(tab+i)==*(tab+i-1) + (*(tab+i+1)/2);
         {
         
         resultado=resultado+1;
         
     
         }

  
    *igual=resultado;
     }
}
  
  
  
main()
{
int *tab,*igual, a[DIM],i,valor;

   for(i=0;i<DIM;i++)
      {
      printf("introduza dos valores\n");
      scanf("%d",a);
      }
igual=&valor;
tab=a; // ou tab=&a[0]
vizinhos(tab,DIM,igual);
printf(" os valores iguais sao %d\n",*igual);
fflush(stdin);
getchar();

}
   

o programa nao me corre, acho que nao posso usar dim, na minha função?? que coloco entao? para os parametros  tarem correctos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

suzy, como tens (*(tab+i)==*(tab+i-1) + (*(tab+i+1)/2), estás a comparar se o tab+i é igual ao tab+i-1 mais metade do tab+i+1... tem de ser (*(tab+i)==(*(tab+i-1) + *(tab+i+1))/2)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora