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

Upper

Problemas em prog

Recommended Posts

Upper

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

Share this post


Link to post
Share on other sites
Upper

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)

Share this post


Link to post
Share on other sites
Rui Carlos

Cria uma variável auxiliar para guardar a maior diferença, e inicializa-a a 0 (admitindo que os valores são positivos).

Depois, em cada iteração do ciclo que em que calculas as diferenças, comparas o resultado com o valor guardado na variável, e se for maior, actualizas o valor.

Share this post


Link to post
Share on other sites
Upper

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

Share this post


Link to post
Share on other sites
pedrosorio

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.

Share this post


Link to post
Share on other sites
Upper

entao crio dois aux, um para v e outro para v[i+1]? mas se for assim nao tenho que declarar que o total=*aux1- *aux2 ???

Share this post


Link to post
Share on other sites
pedrosorio

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.

Share this post


Link to post
Share on other sites
Krazzi

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?

Share this post


Link to post
Share on other sites
pedrosorio

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.

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

×

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.