Upper Posted April 10, 2009 at 10:36 PM Report #256239 Posted April 10, 2009 at 10:36 PM 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
Ferreira Posted April 10, 2009 at 11:04 PM Report #256241 Posted April 10, 2009 at 11:04 PM Ver alínea 2.1. http://twitter.com/ferreira
Upper Posted April 10, 2009 at 11:12 PM Author Report #256243 Posted April 10, 2009 at 11:12 PM 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)
Ferreira Posted April 11, 2009 at 08:19 AM Report #256261 Posted April 11, 2009 at 08:19 AM 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. http://twitter.com/ferreira
Rui Carlos Posted April 11, 2009 at 01:42 PM Report #256276 Posted April 11, 2009 at 01:42 PM 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. Rui Carlos Gonçalves
Upper Posted April 12, 2009 at 08:54 PM Author Report #256431 Posted April 12, 2009 at 08:54 PM 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
pedrosorio Posted April 12, 2009 at 10:19 PM Report #256445 Posted April 12, 2009 at 10:19 PM 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.
Upper Posted April 13, 2009 at 06:36 PM Author Report #256562 Posted April 13, 2009 at 06:36 PM 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 ???
pedrosorio Posted April 13, 2009 at 06:42 PM Report #256563 Posted April 13, 2009 at 06:42 PM 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.
Krazzi Posted April 13, 2009 at 07:42 PM Report #256579 Posted April 13, 2009 at 07:42 PM 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 pedrosorio Posted April 14, 2009 at 08:13 AM Solution Report #256628 Posted April 14, 2009 at 08:13 AM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now