Ir para o conteúdo
thinkabout

Comparar o número com os seus com os seus vizinhos

Mensagens Recomendadas

thinkabout

Boas,

Isto está a funcionar , mas não queria usar o nrvezes só o *igual.

#define _CRT_SECURE_NO_WARNINGS
#define DIM 10
#include <stdio.h>


/*
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);
*/

void vizinhos(int *tab, int dim, int *igual)
{
   int i;
   int nrvezes=0;


   if (tab[0] == tab[1]) // Quero ver o primeiro elemento, comparar com o vizinhod a direita
   {
       nrvezes++;
   }
   // Debug printf("nr de vezes %d \n", nrvezes);


   if (tab[dim-1] == tab[dim-2]) // Quero ver os últimos dois elementos comparar com o vizinho da esquerda
   {
       nrvezes++;
   }
   // Debug printf("nr de vezes %d \n", nrvezes);


   for (i = 1; i < dim-2; i++) // comparar com o vizinho da esquerda e da direita
   {
       if ((tab[i-1]+tab[i+1])/2 == tab[i])
       {
           nrvezes++;
       }
   }

       printf("nr de vezes %d \n", nrvezes);

       *igual=nrvezes;

}


int main()
{
   int elementosiguais=0;

   int tab[DIM] = {1,1,3,4,5,6,7,8,11,11}; // iguais 1 1 ! 6+4=10 igual ao 5 | 11 , 11)
   vizinhos(tab, DIM, &elementosiguais);

   printf("Nr de elementos que a media e igual aos seus vizinhos %d \n", elementosiguais);
}

Editado por thinkabout

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Skun Fly

#define _CRT_SECURE_NO_WARNINGS
#define DIM 10
#include <stdio.h>

/*
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);
*/
void vizinhos(int *tab, int dim, int *igual)
{
   int i;
   if (tab[0] == tab[1]) // Quero ver o primeiro elemento, comparar com o vizinhod a direita
   {
    *igual+=1;
   }
   // Debug printf("nr de vezes %d \n", nrvezes);

   if (tab[dim-1] == tab[dim-2]) // Quero ver os últimos dois elementos comparar com o vizinho da esquerda
   {
    *igual+=1;
   }
   // Debug printf("nr de vezes %d \n", nrvezes);

   for (i = 1; i < dim-2; i++) // comparar com o vizinho da esquerda e da direita
   {
       if ((tab[i-1]+tab[i+1])/2 == tab[i])
       {
           *igual+=1;
       }
   }
       printf("nr de vezes %d \n", *igual);

}

int main()
{
   int elementosiguais=0;
   int tab[DIM] = {1,1,3,4,5,6,7,8,11,11}; // iguais 1 1 ! 6+4=10 igual ao 5 | 11 , 11)
   vizinhos(tab, DIM, &elementosiguais);
   printf("Nr de elementos que a media e igual aos seus vizinhos %d \n", elementosiguais);
   return 0;
}

Pronto isso resolve o teu problema (;

Atenção: A tua função main, não tinha valor de retorno!

Cumprimentos, Skun Fly

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thinkabout

Boa, assim faz mais sentindo eu estava a fazer

if (tab[0] == tab[1]) // Quero ver o primeiro elemento, comparar com o vizinhod a direita
   {
        *igual++;
   }

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

minimalista

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

 *igual = tab[0] == tab[1];
 *igual+= tab[dim-1] == tab[dim-2];

 for (i = 1; i < dim-2; i++)
   *igual += (tab[i-1] + tab[i+1]) / 2 == tab[i];
}

  • Voto 1

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.