Jump to content
thinkabout

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

Recommended Posts

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);
}

Edited by thinkabout

Share this post


Link to post
Share on other 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

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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];
}

  • Vote 1

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.