글쎄, 우선, 나는 C에 정통한 것에 익숙하지 않으므로 간단한 대답이 될 수도 있지만 그것이 무엇인지 알 수는 없다. 더욱이, 제 영어는 당신이 완벽하다고 부르는 것이 아니기 때문에, 이해하기가 어렵다면 사전에 사과드립니다.C에 부동 소수점 숫자가있는 버그
나는 고정 된 속도로 여행 시간에 대한 간단한 계산을 할 수있는이 작은 프로그램을하려고합니다. 내가 입력해야하는 것은 이동 거리입니다. 필자는 코드를 작성하기 시작했고, 얼마 지나지 않아 반 기능 콘솔 프로그램을 만들었지 만, 커지면서 커지면서 코드에 더 이상 플로트 번호를 추가 할 수없는 지점이되었습니다. I 출력에 문제가 없다, 그것은 위에서와 같이 코드를 실행하려고하면
#include<stdio.h>
#include <string.h>
#include <math.h>
/* TENGO QUE ARREGLAR ESTO, ME CAUSA BRONCA CON EL NÚMERO TOTAL DE FLOAT NUMBERS*/
main()
{
float x1, km, mn, mn1, mn1a, mn1b, mn1c, mn2, mn2a, mn2b, mn2c, mn3, mn3a, mn3b, mn3c, mn4;
int c=1;
printf("\n\n\tTiempo de recorrido\n\n");
if (x1 >= 0)
{
do
{
printf("\tEscribe distancia en mapa: ");
scanf("%f", &x1);
c = x1;
km = x1*50; // Distancia real
mn = km;
mn1 = mn/5; // Tiempo de viaje
mn1a = mn1/18; // Jornadas de marcha
mn1b = mn1 + (floorf(mn1a)*6); // Tiempo total del viaje
mn1c = mn1b/24; // Días totales de viaje
mn2 = mn/8;// Tiempo de viaje
mn2a = mn2/18; // Jornadas de marcha
mn2b = mn2 + (floorf(mn2a)*6); // Tiempo total del viaje
mn2c = mn2b/24; // Dias totales de viaje
mn3 = mn/25;// Tiempo de viaje
mn3a = mn3/18;
//Instrucciones PRINT
printf("\n\n\tNumero de kilometros = %3.2f km", km);
if (mn1 < 24){
printf("\n\n\tTiempo a 5 km/h (caminata) = %3.2f horas", mn1);
}
else{
printf("\n\n\tViaje en caminata (5 km/h)\n");
printf("\n\tTiempo de recorrido = %3.2f horas", mn1);
printf("\n\tJornadas de marcha = %3.2f jornadas", mn1a);
printf("\n\tTiempo total = %3.2f horas", mn1b);
printf("\n\tDias totales = %3.2f dias\n", mn1c);}
if (mn2 < 24){
printf("\n\tTiempo a 8 km/h (a caballo) = %3.2f horas", mn2);}
else{
printf("\n\n\tViaje a caballo (8 km/h)\n");
printf("\n\tTiempo de viaje = %3.2f horas", mn2);
printf("\n\tJornadas de marcha = %3.2f dias", mn2a);
printf("\n\tTiempo total = %3.2f horas", mn2b);
printf("\n\tDias totales = %3.2f dias\n", mn2c);
}
if (mn3 < 24){
printf("\n\tTiempo a 25 km/h = %3.2f horas\n", mn3);
}
else{
printf("\n\n\tTrote de caballo (25 km/h)\n");
printf("\n\tTiempo de viaje = %3.2f horas", mn3);
printf("\n\tJornadas de marcha = %&.2f días", mn3a);
printf("\n\tJornadas de marcha = %3.2f horas", mn3);
}
}
while (c >= 0);
}
else{
getch();
}
}
, 이제 다음은 지금까지 코드입니다. 그러나 아래에 또 다른 변수 선언을 추가하려고 할 때 (이미 float 선언에 추가 된 mn4를 사용하여) 프로그램 버그가 발생합니다 : "Esc dist la distancia en el mapa"(: 기호없이)라는 텍스트 만 얻습니다. 어떤 키를 입력하면 "프로세스는 반환 값 49/50으로 종료되었습니다"라는 메시지를 보내고 다음 키 입력 후에 닫습니다.
나는 생각할 수있는 방식으로 코드를 생각해 보았습니다. 그러나 어떤 이유로 든 49와 50 사이의 반환 값을 변경한다는 것을 제외하고는 아무 것도 작동하지 않았습니다. 누군가가 내게이 문제를 해결하는 방법을 알려주거나 가능하지 않은 경우 그 이유를 말해 줄 수 있기를 바랍니다. 그 주위의 방법.
미리 감사드립니다.
매우 비슷한 이름과 매우 비슷한 계산법을 사용하여 많은 변수를 필요로하지 않고 배열 (플러스 루프)을 배우고 사용해야합니다. http://www.cplusplus.com/doc/tutorial/arrays/ (C를 사용하지 않는 것이 좋습니다. C가 매우 낮기 때문에 성능이 필요한 코드를 코딩하지 않습니다. Python과 같은 언어로 코딩하면됩니다. 프로그래머가 글쓰기를 더 빨리하고 성능 차이는 무시할 수있을 것입니다.) – Patashu
'= % & .2f días ", mn3a); - 잘못된 형식 수정 자! – suspectus