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

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

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

Вот есть код,который должен рассчитать каждое значение массива в процентах от их суммы. Проблема описана ниже в коде.
#include <cstdlib>
#include <iostream>
 
using namespace std;

double* FindInProc(int x,int max);
int* FindMax(int *Arr,int *Count);
 
int main(int argc, char *argv[])
{
    int i, n;
    printf("Enter n: ");
    scanf("%d",&n);
    int a[n];
     for (i=0;i<n;i++)
      {
       printf("Enter a[%d]: ",i);
       scanf("%d",&(a[i]));
      }
    int max = *FindMax(a,&n);
    double proc;
    proc = *FindInProc(1,3);//10 на 30 или на 300 работает,а 1 на 3,нет..в чем проблема?
    printf("\n Print %0.2f \n",proc);
    
    for(int j=0;j<n;j++)
     {
       // proc = *FindInProc(a[j],max);
       // printf("# of arr %d \t WithValue %d \t InProc= %0.3f \n",j,a[j],proc);    
     }
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

int* FindMax(int *Arr,int *Count)
  {
     int temp = Arr[0];
   for(int i=0;i<*Count;i++)
     {
            if(Arr[i] > temp)
                temp = Arr[i];
       printf("a[%d]: %d\n",i,Arr[i]);//ГІГіГІ ðóãГ*ГҐГІГ±Гї
     }     
     printf("Temp= :%d\n ",temp);
   return &temp;
  }
  
double* FindInProc(int x,int max)
      {    
           double i = (x/max)*100.0;
           return &i;
      }
Решил вопрос явным преобразованием типов.
double i = ((((double)x)/((double)max)))*100.0;
К стати,если аргумент функции типа double,а передаваемый ей типа int будет авт.вызвано преобразование типов?

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

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

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

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

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

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы