Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2025, 19:09   #1
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию Нужно написать функцию, которая возвращает среднее значение

Я написал но ошибка
Цитата:
0xC0000005: Access violation reading location 0x0000000000000000.
Код:
struct  Student 
{
    const char* name;
    int* marks[4];
};

double getAverageGradeInSubjects(Student student) 
{
    double average = 0.0;
    double sum = 0.0;
    for (int i = 0; i < 3; ++i) 
    {
        sum += *student.marks[i];
    }
    std::cout << "sum:" << sum;
    average = sum / 4;
    
    return average;
}

int main()
{
    int marks[4] = { 10, 8, 9, 11 };
    Student student1 = { "Vova", marks};
    std::cout << "Average grade in subjects: " << getAverageGradeInSubjects(student1);
}
Как тут правильно передавать?
Код:
 sum += *student.marks[i];

Последний раз редактировалось vovamakarovych; 05.02.2025 в 20:06.
vovamakarovych вне форума Ответить с цитированием
Старый 05.02.2025, 19:41   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,821
По умолчанию

Объвление чего-то указателем не выделяет память под указанное автоматически. А обращение к нулевому указателю и дает 0xC0000005. Вообще не понятно зачем вам для оценок массив указателей...
p51x вне форума Ответить с цитированием
Старый 06.02.2025, 14:02   #3
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 186
По умолчанию

Видимо, в структуре Student вы хотели записать указатель на массив, но в С массив и есть указатель на массив. Поэтому правильно:

Код:
struct  Student 
{
    const char* name;
    int marks[];
};
и значит
Код:
sum += student.marks[i];
А вообще, в программах на С++ лучше не пользоваться типами из С, это небезопасно. В С++ ввели типы С только для взаимодействия с кодом на С (или на другом языке, притворяющемся что он С).
А на С++ для масивов лучше использовать std::vector.
DeepFlake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать функцию, которая возвращает куб числа - язык си, C++ DEXTER322 Помощь студентам 2 07.02.2017 10:22
написать функцию, которая возвращает произвольное число в заданном диапазоне vova_makr Помощь студентам 6 01.10.2015 12:55
Написать функцию, которая в одномерном массиве подсчитывает количество чисел, превышающих среднее арифметическое значение всех чис Ману Паскаль, Turbo Pascal, PascalABC.NET 2 29.05.2014 11:24
написать функцию Glasn, которая возвращает значение True, если символ-аргумент, является гласной буквой русского алфавита (Паскаль Krugan Помощь студентам 8 15.05.2014 21:00