С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 12.12.2014
Сообщений: 61

Ошибка C2440: невозможно преобразовать типы

12.12.2014, 13:41. Показов 4902. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот моя задача:
Кликните здесь для просмотра всего текста
Сессия включает в себя экзамены по трём
дисциплинам: «Алгебра», «Математический анализ» и «Языки и
методы программирования». Студентам, не сдавшим хотя бы один
экзамен, стипендия не выплачивается. Студентам, сдавшим все
экзамены не ниже, чем на 3, начисляется базовая стипендия из
расчета 250 рублей за каждый балл. Хорошисты (успевающие
студенты, не имеющие троек) дополнительно получают надбавку в
25%. Отличники (студенты, сдавшие все экзамены на 5) получают
надбавку 50%.

Вот код программы:
Кликните здесь для просмотра всего текста
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
#include <math.h>
#include <windows.h>
#include <stdio.h>
 
void inputData (int *M11,int *M12,int *M13,int *M21,int *M22,int *M23,int *M31,int *M32,int *M33)
{
    printf("введите оценки первого студента через пробел\n");    
    scanf("%d%d%d",&M11,&M12,&M13);
    printf("введите оценки второго студента через пробел\n");
    scanf("%d%d%d",&M21,&M22,&M23);
    printf("введите оценки третьего студента через пробел\n");
    scanf("%d%d%d",&M31,&M32,&M33);
}
void calcuateScholarship(float *S1,float *S2, float *S3)
{   int M11,M12,M13,M21,M22,M23,M31,M32,M33;
    if (M11==2 || M12==2 || M13==2)
        S1=0;
    else
    { if (M11==3 || M12==3 || M13==3)
    S1=(M11*250)+(M12*250)+(M13*250);
      if (M11==5 && M12==5 && M13==5)
          S1=(M11*250)+(M12*250)+(M13*250)+(((M11*250)+(M12*250)+(M13*250))*0.5);
      else
      S1=(M11*250)+(M12*250)+(M13*250)+(((M11*250)+(M12*250)+(M13*250))*0.25);}
 
if (M21==2 || M22==2 || M23==2)
        S2=0;
    else
    { if (M21==3 || M22==3 || M23==3)
    S2=(M21*250)+(M22*250)+(M23*250);
      if (M21==5 && M22==5 && M23==5)
      S2=(M21*250)+(M22*250)+(M23*250)+(((M21*250)+(M22*250)+(M23*250))*0.5);
      else
      S2=(M21*250)+(M22*250)+(M23*250)+(((M21*250)+(M22*250)+(M23*250))*0.25);}
if (M31==2 || M32==2 || M33==2)
        S3=0;
    else
    { if (M31==3 || M32==3 || M33==3)
    S3=(M31*250)+(M32*250)+(M33*250);
      if (M31==5 && M32==5 && M33==5)
          S3=(M31*250)+(M32*250)+(M33*250)+(((M31*250)+(M32*250)+(M33*250))*0.5);
      else
          S3=(M31*250)+(M32*250)+(M33*250)+(((M31*250)+(M32*250)+(M33*250))*0.25);}
}
 
int main()
{ 
  SetConsoleOutputCP(1251);
  int M11,M12,M13,M21,M22,M23,M31,M32,M33;
  float S1,S2,S3;
 inputData(&M11,&M12,&M13,&M21,&M22,&M23,&M31,&M32,&M33);
 calcuateScholarship(&S1,&S2,&S3);
 printf("S1=\n%2.0f",S1);
 printf("S2=\n%2.0f",S2);
 printf("S3=\n%2.0f",S3);
 getchar();getchar();
}

Вот ошибки, которые я не могу исправить:
Кликните здесь для просмотра всего текста
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(20) : error C2440: =: невозможно преобразовать 'int' в 'float *'
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(22) : error C2440: =: невозможно преобразовать 'double' в 'float *'
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(24) : error C2440: =: невозможно преобразовать 'double' в 'float *'
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(30) : error C2440: =: невозможно преобразовать 'int' в 'float *'
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(32) : error C2440: =: невозможно преобразовать 'double' в 'float *'
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(34) : error C2440: =: невозможно преобразовать 'double' в 'float *'
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(39) : error C2440: =: невозможно преобразовать 'int' в 'float *'
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(41) : error C2440: =: невозможно преобразовать 'double' в 'float *'
1>d:\проэкты c++\lab4.2\lab4.2\big.cpp(43) : error C2440: =: невозможно преобразовать 'double' в 'float *'

Помогите пожалуйста, умные люди!!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2014, 13:41
Ответы с готовыми решениями:

Error C2440: инициализация: невозможно преобразовать 'int' в 'char [100]'
#include &quot;stdafx.h&quot; #include &lt;string.h&gt; const int max=100; void strcat(char dest, char src) { int n=strlen(dest); ...

Error C2440: =: невозможно преобразовать 'char (*)[150]' в 'char *'
Есть следующая задача. Написать программу, которая запрашивает количество родственников в семье, а потом позволяет ввести имя...

Ошибка С2664: невозможно преобразовать параметр 1 из 'double' в 'const char *'
Ошибка C2664: невозможно преобразовать параметр 1 из 'double' в 'const char *' Visual 2008. Пытаюсь написать в шаблоне. Так ругается...

5
Native x86
Эксперт Hardware
 Аватар для quwy
6855 / 3788 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
12.12.2014, 13:56
У вас все параметры функции calcuateScholarship() -- указатели, поэтому каждый раз, когда обращаетесь к параметру внутри функции, начинайте его имя со звездочки.

А внутри inputData() не указывайте амперсанды при вызове scanf(), тут как раз достаточно просто имени параметра.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
12.12.2014, 14:16
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
 
int main() {
    int mark;
    float cash;
    int sum;
    int i, j;
    
    for ( i = 0; i < 3; i++ ) {
        for ( j = 0, sum = 0, cash = 0; j < 3; j++ ) {
            scanf("%d", &mark);
            sum += mark;
            cash += mark * 250;
        }
        if ( sum < 9 ) {
            printf("Student doesn't have any stipend (has mark 2)\n");
        } else if ( sum < 12 ) {
            printf("Student's stipend is %g (has mark 3)\n", cash);
        } else if ( sum < 15 ) {
            printf("Student's stipend is %g (has mark 4)\n", cash*1.25);
        } else if ( sum == 15 ) {
            printf("Student's stipend is %g (has all marks 5)\n", cash*1.5);
        }
    }
    
    return 0;
}
Code
1
2
3
4
5
6
7
8
9
@stdin:
3 2 3
4 3 4
5 5 5
 
@stdout:
Student does not have any stipend (has mark 2)
Students stipend is 2750 (has mark 3)
Students stipend is 5625 (has all marks 5)
0
1 / 1 / 0
Регистрация: 12.12.2014
Сообщений: 61
12.12.2014, 14:19  [ТС]
Дело в том что это не полная задача, и мне её нужно сделать используя функции
вот задача полностью, а я просто хотел проверить для начала функцию подсчета степендии
Кликните здесь для просмотра всего текста
Абитуриенты. Зачисление абитуриента в университет
производится, если суммарное количество баллов ЕГЭ по трём
предметам (математика, физика, русский язык) превышает
проходной балл или балл ЕГЭ по математике или физике равен
100. Разработайте программу, которая, получая на вход значение
суммарного проходного балла ЕГЭ и баллы ЕГЭ трёх
абитуриентов, определяет, подлежат ли они зачислению в
университет. В программе должны быть реализованы, как
минимум, следующие функции
 inputData для организации ввода исходных данных;
 calculateTotals для определения суммарного балла ЕГЭ
некоторого абитуриента;
 isAdmitted, определяющую, зачислен ли абитуриент;
 printTable для печати отчётной таблицы.
Отчетная таблица должна содержать для каждого абитуриента
сведения о баллах ЕГЭ по каждому предмету, суммарный балл и
статус поступающего (зачислен/не зачислен), а также две итоговых
строки: со средними баллами по предметам и с общим
количеством зачисленных.

quwy , спасибо ошибки больше нету, но теперь после того как я ввожу оценки он останавливает программу на строчке
16 if (M11==2 || M12==2 || M13==2)
с ошибкой
Run-Time Check Failure #3 - The variable 'M11' is being used without being initialized.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6855 / 3788 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
12.12.2014, 14:29
Цитата Сообщение от DeStrager Посмотреть сообщение
Run-Time Check Failure #3 - The variable 'M11' is being used without being initialized.
Ну так сами подумайте, вы объявили переменную и сразу же сравниваете ее значение с чем-то. Что сравнивать, если вы в нее ничего не записали?

Добавлено через 1 минуту
Вам нужно передать M11,M12,M13,M21,M22,M23,M31,M32,M33 в виде параметров в calcuateScholarship(), а не объявлять их там по-новой.
1
1 / 1 / 0
Регистрация: 12.12.2014
Сообщений: 61
12.12.2014, 14:35  [ТС]
quwy, Так и хотел сделать, спасибо еще раз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2014, 14:35
Помогаю со студенческими работами здесь

Ошибка error C2440: инициализация: невозможно преобразовать 'int' в 'int []'
// ConsoleApplication9.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include...

Error C2440 инициализация: невозможно преобразовать
:wall: Помогите пожалуйста. Пишет: error C2440: инициализация: невозможно преобразовать...

Error C2440: =: невозможно преобразовать 'std::string' в 'double'
&gt;c:\users\nreshetova\documents\visual studio 2008\projects\sort3d1\sort3d1\sort3d1.cpp(73) : error C2440: =: невозможно преобразовать...

Ошибка C2440=: невозможно преобразовать "float *" в "int"
Ребят, помогите. Тупо не вижу в чем ошибка( /*21.Знайти MAX та обчислити середнє арифметичне додатніх елементів у кожному із...

выдаёт error C2440: =: невозможно преобразовать 'int' в 'int [100]
Ввести информацию об абонентах телефонной станции: фамилия, телефон, улица. Распечатать список абонентов 65-й АТС, проживающих на улице...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru