Не могу разобраться с преобразованием из целого в число с плавающей - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот есть код,который должен рассчитать каждое значение массива в процентах от их суммы. Проблема описана ниже в коде.
Листинг программы
  1. #include <cstdlib>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. double* FindInProc(int x,int max);
  6. int* FindMax(int *Arr,int *Count);
  7. int main(int argc, char *argv[])
  8. {
  9. int i, n;
  10. printf("Enter n: ");
  11. scanf("%d",&n);
  12. int a[n];
  13. for (i=0;i<n;i++)
  14. {
  15. printf("Enter a[%d]: ",i);
  16. scanf("%d",&(a[i]));
  17. }
  18. int max = *FindMax(a,&n);
  19. double proc;
  20. proc = *FindInProc(1,3);//10 на 30 или на 300 работает,а 1 на 3,нет..в чем проблема?
  21. printf("\n Print %0.2f \n",proc);
  22. for(int j=0;j<n;j++)
  23. {
  24. // proc = *FindInProc(a[j],max);
  25. // printf("# of arr %d \t WithValue %d \t InProc= %0.3f \n",j,a[j],proc);
  26. }
  27. system("PAUSE");
  28. return EXIT_SUCCESS;
  29. }
  30.  
  31. int* FindMax(int *Arr,int *Count)
  32. {
  33. int temp = Arr[0];
  34. for(int i=0;i<*Count;i++)
  35. {
  36. if(Arr[i] > temp)
  37. temp = Arr[i];
  38. printf("a[%d]: %d\n",i,Arr[i]);//ГІГіГІ ðóãГ*ГҐГІГ±Гї
  39. }
  40. printf("Temp= :%d\n ",temp);
  41. return &temp;
  42. }
  43. double* FindInProc(int x,int max)
  44. {
  45. double i = (x/max)*100.0;
  46. return &i;
  47. }
Решил вопрос явным преобразованием типов.
Листинг программы
  1. double i = ((((double)x)/((double)max)))*100.0;
К стати,если аргумент функции типа double,а передаваемый ей типа int будет авт.вызвано преобразование типов?

Решение задачи: «Не могу разобраться с преобразованием из целого в число с плавающей»

textual
Листинг программы
  1. double* FindInProc(int x,int max)
  2.       {    
  3.            double i = (x/max)*100.0;
  4.            return &i;
  5.       }

Объяснение кода листинга программы

В данном коде:

  1. Входит значение переменной x типа int (целое число).
  2. Входит значение переменной max типа int (целое число).
  3. Вычисляется значение переменной i типа double (число с плавающей точкой) как результат деления x на max, умноженный на 100.0.
  4. Возвращается указатель на переменную i. Таким образом, функция FindInProc принимает два целых числа, вычисляет среднее значение между ними и возвращает указатель на число с плавающей точкой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы