Ошибка C2440: невозможно преобразовать типы - C (СИ)
Формулировка задачи:
Вот моя задача:
Вот код программы:
Вот ошибки, которые я не могу исправить:
Помогите пожалуйста, умные люди!!
Сессия включает в себя экзамены по трём
дисциплинам: «Алгебра», «Математический анализ» и «Языки и
методы программирования». Студентам, не сдавшим хотя бы один
экзамен, стипендия не выплачивается. Студентам, сдавшим все
экзамены не ниже, чем на 3, начисляется базовая стипендия из
расчета 250 рублей за каждый балл. Хорошисты (успевающие
студенты, не имеющие троек) дополнительно получают надбавку в
25%. Отличники (студенты, сдавшие все экзамены на 5) получают
надбавку 50%.
#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 *'
Решение задачи: «Ошибка C2440: невозможно преобразовать типы»
textual
Листинг программы
#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; }
Объяснение кода листинга программы
- Переменная
mark
объявлена как целочисленный тип данных. - Переменная
cash
объявлена как тип данных с плавающей точкой. - Переменная
sum
объявлена как целочисленный тип данных. - Переменные
i
иj
объявлены как целочисленные типы данных и используются в циклах. - Цикл
for
с переменнойi
используется для повторения кода три раза. - Внутри цикла
for
есть еще один циклfor
, который используется для суммирования оценок студента. - Переменная
mark
используется для получения оценок от пользователя с помощью функцииscanf()
. - Значение переменной
mark
добавляется к сумме переменныхsum
иcash
. - Переменная
sum
проверяется на значение меньше 9, чтобы определить, имеет ли студент стипендию. - Если сумма оценок меньше 9, выводится сообщение, что у студента нет стипендии и выводится оценка 2.
- Если сумма оценок находится в диапазоне от 9 до 11, выводится сообщение, что у студента есть стипендия, и выводится сумма оценок, умноженная на 250.
- Если сумма оценок находится в диапазоне от 12 до 14, выводится сообщение, что у студента есть стипендия, и выводится сумма оценок, умноженная на 1.25.
- Если сумма оценок равна 15, выводится сообщение, что у студента есть стипендия, и выводится сумма оценок, умноженная на 1.5.
- Переменная
cash
используется для хранения общей суммы стипендии студента. - Переменная
sum
используется для хранения суммы оценок студента. - Переменная
i
используется для инкрементации после каждой итерации внешнего циклаfor
. - Переменная
j
используется для инкрементации после каждой итерации внутреннего циклаfor
. - Цикл
for
завершается, когда значение переменнойj
становится равным 3. - Код внутри цикла
for
выполняется три раза, по одному разу для каждой оценки студента. - Код в функции
main()
завершается, когда возвращается значение 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д