Jump to content

Maior diferença entre valores consecutivos de vector


Go to solution Solved by pedrosorio,

Recommended Posts

Posted

Boas...Sou novo aki e n sei como proceder bem neste forum mas penso k seja axim: preciso d ajuda em criar um prog para inserir n valores reais num vector, sendo n<=20, e que faça a maior diferença entre numeros consecutivos....de momento o prog encontra-se axim:

#include <stdio.h>


float num() {
int i;
float v[19];

int total;
for(i=0;i<=19;i++)
{
	printf("Introduza o %d numero: ",i);
	scanf("%d",&v[i]);
}
printf("--------------------------------\n");
for(i=0;i<=18;i++)
{
	total = v[i] - v[i+1];
	  printf("A diferenca entre %d e %d e: %d\n",i,(i+1),total);

}

}

main() {

num();
}	

ALguem pode ajudar? Mt obrigado

Posted

Boas...Sou novo aqui e não sei como proceder bem neste fórum mas penso que seja assim: preciso de ajuda em criar um programa para inserir n valores reais num vector, sendo n<=20, e que faça a maior diferença entre números consecutivos....de momento o programa encontra-se assim:

#include <stdio.h>


float num() {
   int i;
   float v[19];
   
   int total;
   for(i=0;i<=19;i++)
   {
      printf("Introduza o %d numero: ",i);
      scanf("%d",&v[i]);
   }
   printf("--------------------------------\n");
   for(i=0;i<=18;i++)
   {
      total = v[i] - v[i+1];
        printf("A diferenca entre %d e %d e: %d\n",i,(i+1),total);
      
   }
   
}

main() {
   
   num();
}   

Alguém me pode ajudar?

(Correcção)

Posted

sim mas se eu criar uma variável auxiliar o programa da erro, e mesmo assim eu nao quero que ocorra actualizacao, apenas quero que cada operacao seja efectuada individualmente

Posted

Se criares uma variável auxiliar o programa dá erro -> Como é que estás a criar e que erro dá

e mesmo assim eu nao quero que ocorra actualizacao, apenas quero que cada operacao seja efectuada individualmente -> estás a falar chinês? Não queres achar a máxima diferença entre valores consecutivos num vector? Para isso tens que achar a diferença entre cada 2 valores consecutivos e ir actualizando a máxima diferença que encontraste (i.e. tal como farias se tivesses que resolver esse problema "à mão").

Não respondo a dúvidas por mensagem.

Posted

Já tentaste resolver o problema à mão?

Exemplo:

1 6 8 2 7 11

No início ainda não temos diferença nenhuma, podemos dizer que a diferença máxima é 0.

Do 1 para o 6 -> diferença 5 -> 5>0 -> diferença máxima 5

Do 6 para o 8 -> diferença 2 -> 2<5 -> diferença máxima 5

Do 8 para o 2 -> diferença 6 -> 6>5 -> diferença máxima 6

Do 2 para o 7 -> diferença 5 -> 5<6 -> diferença máxima 6

Do 7 para o 11 -> diferença 4 -> 4<6 -> diferença máxima 6

Não respondo a dúvidas por mensagem.

Posted

Sim, mas entao crio 3 variaveis aux em que duas sao para reaizao a operacao e a outra serve para guardar esse valor. Se na nova operacao, o resultado for maior entao o aux3(nome que dei à variavel para guardar o valor), subtitui-se ....

mas mas entao como e que indico que quero que o valor que se encontra na posicao i efectue a subtraccao com o valor em i+1?  usando *v?

  • Solution
Posted

3 aux? Basta 1!! Só precisas de guardar a maior diferença encontrada!

Vê lá se entendes o código:

#define max(a,b) a>b?a:b
aux=0;
for(i=0;i<19;i++) {
   if(v[i]<v[i+1])
      aux = max(v[i+1]-v[i],aux);
   else
      aux = max(v[i] - v[i+1],aux);
}

Não respondo a dúvidas por mensagem.

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.