Форум программистов, компьютерный форум CyberForum.ru

Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри] - C++

Восстановить пароль Регистрация
 
Sergikx
1 / 1 / 0
Регистрация: 10.09.2014
Сообщений: 59
25.11.2014, 20:39     Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри] #1
В результате если ввести 3 5 6 9 11 (оно должно сложить 5+6+9 и разделить эту сумму на три) выдаёт ответ 6,00000, хотя по идее должно 6,666...

Добавлено через 26 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#include <stdlib.h>
#include <locale>
int main()
{
    setlocale(LC_ALL, "Russian");
    int k;
    int *mas;
     int n;
    int i;
    int min;
    int max;
    int s=0;
    float m;
    printf("Введите количество оценок:");
    do
        {
         scanf_s("%d",&n);
         if (n<3)
         {
          printf("Введите 3 или больше оценок:");
         }
        }while(n<3);
    mas=(int*)malloc(n*sizeof(int));
    for(i=0;i<n;i++)
    {
    printf("\nВведите оценку:");
        do
        {
            k=scanf_s("%d",&mas[i]);
                if (k==0)
                {
                    fflush(stdin);
                    printf("\nОшибка,введите число:");
                }
        }while(k==0);
    }
min=mas[0];
for(i=0;i<n;i++)
    if (mas[i]<mas[0])
    {
        min=mas[i];
    }
max=mas[0];
for(i=0;i<n;i++)
    if (mas[i]>mas[0])
    {
        max=mas[i];
    }
for(i=0;i<n;i++)
{
    s+=mas[i];
}
    m=(s-min-max)/(n-2);
printf("%f",m);
free(mas);
system("pause");
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 20:39     Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри]
Посмотрите здесь:

Функции float average(int arrray[],int from,int to) C++
C++ Ошибка - перегруженность pow(int,int) неосуществима. Как исправить?
20: invalid conversion from `int (*)()' to `char' C++
C++ Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*)
warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
C++ warning C4244: =: преобразование "double" в "float
Warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
Warning C4244: инициализация: преобразование "__int64" в "int", возможна потеря данных C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2784 / 1430 / 393
Регистрация: 18.10.2014
Сообщений: 2,626
25.11.2014, 21:01     Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри] #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Sergikx Посмотреть сообщение
В результате если ввести
Во-первых, не надо придумывать. В коде нет ни одного упоминания типа 'float'. Поэтому никакого "warning C4244: 'initializing' : conversion from 'int' to 'float'" тут быть не может.

В-вторых, печатать переменную типа 'int' через формат '%f' - запрещается.

В-третьих, смотрим Распространенные ошибки. Чтобы получить нецелый результат

C++
1
2
3
4
double m;
...
m = (double) (s - min - max) / (n-2);
printf("%lf", m);
Sergikx
1 / 1 / 0
Регистрация: 10.09.2014
Сообщений: 59
25.11.2014, 21:55  [ТС]     Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри] #3
TheCalligrapher, cпасибо
Yandex
Объявления
25.11.2014, 21:55     Как исправить? warning C4244: 'initializing' : conversion from 'int' to 'float' [Код внутри]
Ответ Создать тему
Опции темы

Текущее время: 03:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru