Sakatsu 0 Denunciar post Postado Outubro 22, 2012 boas, preciso desenvolver um programa que faça com que o utilizador digite o nº de quilometros percorridos por uma viatura(1) e o nº de litros, calcular os km/l, e pedir para a viatura 2, assim sucessivamente durante um numero indeterminado de viaturas, até o utilizador digitar -1 para quilometros, exemplo: Digite os quilometros percorridos pela viatura 1(-1 para terminar): 100 Digite a quantidade de combustivel gasto pela viatura 1: 6 Km/litro= 16,6 Digite os quilometros percorridos pela viatura 2(-1 para terminar): 100 Digite a quantidade de combustivel gasto pela viatura 2: 6 Km/litro= 16,6 Digite os quilometros percorridos pela viatura 3(-1 para terminar): -1 Tem 2 viaturas. A media de km/litro é: XXX eu tenho este codigo: #include <stdlib.h> #include <stdio.h> int main(void) { int viatura = 1; float km; float kml; float l; float media; while (km != -1) { printf( "Introduza os km percorridos pela viatura %d (-1 para terminar): ", viatura); scanf( "%f", &km ); printf("Introduza a quantidade de combustivel consumido pela viatura %d: ", viatura); scanf( "%f", &l ); kml = ( km / l ); printf("Km/litro = %f\n", kml); viatura++; } media = (kml / viatura); printf("Tem %d viatura. A media de Km/litro eh %f \n", viatura, media); system("PAUSE"); return 0; } Mas da errado, quando introduzo -1, ele faz +1 ciclo. PS: eu sei que calculo da media esta errado ainda. Aguardo a resposta de alguem que possa ajudar, cumpz Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Outubro 22, 2012 Acredito que seja por você ter declarado a variável km como float, e a condição para parar o loop seja um número inteiro '-' posso estar errado, pois sou iniciante em programação. De qualquer modo, o resultado estaria errado, pois você precisa acumular os valores para tirar a sua média. Veja aqui: kml = ( km / l ); Você não está acumulando. Cada hora que for executado o loop, a variável kml receberá um valor diferente. O correto é: kml = kml + (km / l); Caso não tenha entendido, pode perguntar. Você também atribuiu 1 à variável viatura. Suponhamos que o usuario digite de cara -1, o programa iria mostrar "1 viatura, media 0.0", não tem lógica né!? :) Inicie com 0, e no printf coloque um viatura+1 (apenas para mostrar na mensagem 1ª viatura). Veja, fiz um código baseado no seu: #include <stdlib.h> #include <stdio.h> int viatura, km; float kml, lit, media; main() { viatura = 0; media = 0; do { system("CLS"); printf("Digite a quantidade de KM percorridos pela %i viatura, ou, digite -1 para finalizar o programa:\n", viatura+1); scanf("%i", &km); if(km != -1) { printf("Digite a quantidade de combustivel consumido pela %i viatura:\n", viatura+1); scanf("%f", &lit); kml = kml + (km / lit); //você precisa acumular os valores para tirar sua media; viatura++; //conta somente se o numero de kms for diferente de -1; } } while(km != -1); //irá repetir isso até que o numero seja diferente de -1 media = kml / viatura; //tira a media printf("Tem %i viatura(s). A media de Km/litro e %3.2f \n", viatura, media); system("PAUSE"); } Compartilhar este post Link para o post Compartilhar em outros sites
Sakatsu 0 Denunciar post Postado Outubro 22, 2012 ajudou muito, obrigado ;) Compartilhar este post Link para o post Compartilhar em outros sites