首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++上的浮点数数量错误

C++上的浮点数数量错误
EN

Stack Overflow用户
提问于 2013-04-30 06:52:36
回答 1查看 138关注 0票数 0

首先,我对C语言一无所知,所以这可能有一个简单的答案,但我不知道它是什么。此外,我的英语不是你所说的完美,所以如果我让人难以理解,我要提前道歉。

我正在尝试做一个小程序,它可以让我在固定速度下做简单的旅行时间计算,所有我需要输入的是旅行的距离。我开始编写它,很快我得到了一个半功能的控制台程序,但后来它开始增长,然后到了一个点,我似乎不能再向代码中添加任何浮点数。以下是到目前为止的代码:

代码语言:javascript
运行
复制
#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();
  }
 }

现在,当我尝试运行上面的代码时,输出没有任何问题。但是,当我尝试添加下面的另一个变量声明(使用已经添加在浮点声明上的mn4 )时,程序出错:我只得到文本"Escribe la distancia en el mapa“(没有:符号”),当我键入任何键时,它发送消息"Process exited with return value 49/50",并在下一次击键后关闭。

我试着用我能想到的任何方式来思考代码,但都不起作用,除了由于某种原因,它将返回值更改为49和50之间。我希望有人能告诉我如何解决这个问题,或者,如果不可能的话,告诉我为什么会这样,这样我就可以找到解决这个问题的方法。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-30 06:55:40

这是因为您将所有内容都包装在一个很大的if (x1 >= 0)中。看起来你在一开始就对一个未初始化的变量做了一个分支,这是for...no可识别的原因。

我想你的意思是读取x1,然后根据它的值进行计算。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16289555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档