Thread stopped C:\ … Fault: integer разделяет by 0x401203 ошибку в borland 5.02

Использовала Borland 5.02 из-за работы университета... и по какому-то разуму программа не способна распределять стоимость переменных в других переменных в математических простых функциях.

Это мой код:

#include <stdio.h>
#include <conio.h>
main()
{
  int m, s, cs, mt,h,km;
  float t1,t2,s2, v;
  printf("Introduzca minutos: "); scanf("%i",&m);
  printf("Introduzca segundos: "); scanf("%i",&s);
  printf("Introduzca centecimas de segundos: "); scanf("%i",&cs);
  printf("Introduzca metros: "); scanf("%i",&mt);

  if(m<60 && s<60 && cs<100 || 0>m && 0>s && 0>cs && 0>mt)
  {
    t1=m*60;
    t2=cs/100;
    s2=t1+t2+s;
    h=(s2/60)/60;
    km=mt/1000;
    v=h/km;
    printf("Su velocidad fue de: %8.2f kmh", (v));
  }
  else
  {
    printf("Error.");
  }
  getch();
}
2
задан 11.04.2016, 01:59
1 ответ

Проблема, - в как ты определяешь переменные mt и km, и в этих двух линиях:

km=mt/1000;
v=h/km;

mt это целое число (int), разделив это по 1000, будешь возвращать целую округлую стоимость вниз. Это означает, что, если пользователь пишет меньшую стоимость 1000 для mt, km его будет 0. Тогда второй линии будет одна деление из-за нуля и поэтому ты получаешь ошибку, которую ты показываешь в вопросе.

Решение: конвертируй так mt как km в floats и измени чтение mt ( %i в %f после того, как - сейчас float), и проблема решена:

Также ты был бы должен делать, что h будьте float или для маленькой стоимости всегда ты получишь 0

#include <stdio.h>
#include <conio.h>
main()
{
  int m, s, cs;
  float t1,t2,s2, v, km, mt, h;
  printf("Introduzca minutos: "); scanf("%i",&m);
  printf("Introduzca segundos: "); scanf("%i",&s);
  printf("Introduzca centecimas de segundos: "); scanf("%i",&cs);
  printf("Introduzca metros: "); scanf("%f",&mt);

  if(m<60 && s<60 && cs<100 || 0>m && 0>s && 0>cs && 0>mt)
  {
    t1=m*60;
    t2=cs/100;
    s2=t1+t2+s;
    h=(s2/60)/60;
    km=mt/1000;
    v=h/km;
    printf("Su velocidad fue de: %8.2f kmh", (v));
  }
  else
  {
    printf("Error.");
  }
  getch();
}
0
ответ дан 24.11.2019, 14:36
  • 1
    большое спасибо, действительно он это не заметил и подумавший хорошо, с которым цель хотела эти элементы. – Carlos Alvarez 11.04.2016, 04:08