Не могу разобраться с преобразованием из целого в число с плавающей - C (СИ)
Формулировка задачи:
Вот есть код,который должен рассчитать каждое значение массива в процентах от их суммы.
Проблема описана ниже в коде.
К стати,если аргумент функции типа double,а передаваемый ей типа int будет авт.вызвано преобразование типов?
Листинг программы
- #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;
Решение задачи: «Не могу разобраться с преобразованием из целого в число с плавающей»
textual
Листинг программы
- double* FindInProc(int x,int max)
- {
- double i = (x/max)*100.0;
- return &i;
- }
Объяснение кода листинга программы
В данном коде:
- Входит значение переменной
x
типаint
(целое число). - Входит значение переменной
max
типаint
(целое число). - Вычисляется значение переменной
i
типаdouble
(число с плавающей точкой) как результат деленияx
наmax
, умноженный на 100.0. - Возвращается указатель на переменную
i
. Таким образом, функцияFindInProc
принимает два целых числа, вычисляет среднее значение между ними и возвращает указатель на число с плавающей точкой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д