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

Upper

Problemas em prog

11 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a escrever cada diferença que calculas. Tens de as guardar e a cada iteração ver qual é maior.

Além disto, o teu array só tem 19 posições.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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").

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link 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