Jump to content

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


thinkabout
 Share

Recommended Posts

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

#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
Link to comment
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
Link to comment
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
 Share

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