Тема: Неправильний результат під час виконання програми
Привіт. Почався в мене в бурсі такий предмет як програмування,
ну і дали нам на дз написати програмку на c, яка обчислює середнє арифметичне 3 чисел з плаваючою комою.
Власне я с до того не вчив, але розібратися з основними операторами не склало великої мороки.
Та так сталося, що в мене при певній ситуації, виникає помилка.
Ось повний код робочої програми:
#include<stdio.h>
double average(double number1, double number2, double number3)
{
return (number1 + number2 + number3) / 3;
}
int main(void)
{
float n1,n2,n3;
printf("Введіть 3 числа \n");
scanf("%f %f %f",&n1,&n2,&n3);
printf("Середнє арифметичне: %5.2f",average(n1,n2,n3));
return 0;
}
А проблема заключається у тому, що якщо
float n1,n2,n3;
Замінити на
double n1,n2,n3;
То компілятор каже таке:
program.c:12:3: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat]
program.c:12:3: warning: format ‘%f’ expects argument of type ‘float *’, but argument 3 has type ‘double *’ [-Wformat]
program.c:12:3: warning: format ‘%f’ expects argument of type ‘float *’, but argument 4 has type ‘double *’ [-Wformat]
Тото матюкається на цю
scanf("%f %f %f",&n1,&n2,&n3);
строку.
Але при цьому всьому програма компілюється, але якщо наприклад задати 3 числа( 3,3,3)
то результатом буде:
902945129852059871903106368162024652800.00
Чим викликано такий результат ? У чому причина ?