Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В чём ошибка моего кода на C++? В упор не вижу.

Владимир Паршуков Ученик (126), закрыт 1 месяц назад
 // Two-dimensional_arrays1 

#include
#include
#include
const int kol_vo_students = 30;
const int kol_vo_otsenok = 5;
int main()
{
{
system("chcp 1251 > NUL");
srand(time(NULL));

int otsenki_studentov[kol_vo_students][kol_vo_otsenok];
double sredniye_otsenki_studentov[kol_vo_students];

// Заполнение массива оценок случайными значениями


for (int i = 0; i < kol_vo_students; ++i) {
for (int j = 0; j < kol_vo_otsenok; ++j) {
otsenki_studentov[i][j] = rand() % 4 + 2; // случайная оценка от 2 до 5
}
}

// Подсчет среднего балла каждого студента
for (int i = 0; i < kol_vo_students; ++i) {
double summa = 0;
for (int j = 0; j < kol_vo_otsenok; ++j) {
summa += kol_vo_otsenok[i][j];
}
kol_vo_otsenok[i] = summa / kol_vo_otsenok;
}
// Вывод среднего балла каждого студента
for (int i = 0; i < kol_vo_students; ++i) {
std::cout << "Студент" << i++ << ": Средний балл = " << kol_vo_otsenok[i] << std::endl;
}


}
Лучший ответ
=Serge= Просветленный (36092) 1 месяц назад
 // Подсчет среднего балла каждого студента  
for (int i = 0; i < kol_vo_students; ++i) {
double summa = 0;
for (int j = 0; j < kol_vo_otsenok; ++j) {
summa += kol_vo_otsenok[i][j];
}
kol_vo_otsenok[i] = summa / kol_vo_otsenok;
Это что?!Вместо получения средней оценки студента суммируешь что?!!!
2) kol_vo_otsenok - целое число а не массив, который даже не объявлен....
Владимир ПаршуковУченик (126) 1 месяц назад
Да я жёстко тупанул.... Спасибо!
Остальные ответы
Кирилл Наймушин Просветленный (31978) 1 месяц назад
Компилятор не сообщает место ошибки?

В паре мест идёт обращение как к матрице
Владимир ПаршуковУченик (126) 1 месяц назад
Предупреждение C4244 аргумент: преобразование "time_t" в "unsigned int", возможна потеря данных
Владимир Паршуков, забей, srand на это класть.
earthlxver Мастер (1327) 1 месяц назад
В строке summa += kol_vo_otsenok[i][j]; ты обращаешься к переменной kol_vo_otsenok как к двумерному массиву, хотя ты хотел обратиться к otsenki_studentov. Это приведет к ошибке компиляции.

В следующей строке kol_vo_otsenok[i] = summa / kol_vo_otsenok; также имеется ошибка: ты пытаешься присвоить результат выражения типа double целочисленной переменной kol_vo_otsenok[i].

В цикле вывода среднего балла каждого студента ты используешь оператор i++, что приведет к неправильному выводу номеров студентов.
Otid Kartgepsut Гуру (2867) 1 месяц назад
#include <iostream>
#include <vector>
#include <random>

int main() {
int kol_vo_students = 30;
int kol_vo_otsenok = 5;

std::vector<std::vector<int>> otsenki_studentov(kol_vo_students, std::vector<int>(kol_vo_otsenok));

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(2, 5);

for (int i = 0; i < kol_vo_students; i++) {
for (int j = 0; j < kol_vo_otsenok; j++) {
otsenki_studentov[i][j] = dis(gen);
}
}

std::vector<double> sredniye_otsenki_studentov(kol_vo_students);

for (int i = 0; i < kol_vo_students; i++) {
int summa = 0;
for (int j = 0; j < kol_vo_otsenok; j++) {
summa += otsenki_studentov[i][j];
}
sredniye_otsenki_studentov[i] = static_cast<double>(summa) / kol_vo_otsenok;
}

for (int i = 0; i < kol_vo_students; i++) {
std::cout << "Студент " << i << ": Средний балл = " << sredniye_otsenki_studentov[i] << std::endl;
}

return 0;
}
- Профи (939) 1 месяц назад
kol_vo_otsenok[i] = summa / kol_vo_otsenok;

kol_vo_otsenok - не массив, а целое число

В целом следовало бы уменьшить количество проходов по циклам и сделать все максимум в 2 цикла. Так повысится производительность и читаемость кода.
Николай Веселуха Высший разум (360971) 1 месяц назад
 #include   
#include
#include
#include
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
int main() {
system("chcp 1251 > NUL");
srand(static_cast(time(nullptr)));
constexpr size_t kol_vo_students = 30;
constexpr size_t kol_vo_otsenok = 5;
int otsenki_studentov[kol_vo_students][kol_vo_otsenok]{};
double sredniye_otsenki_studentov[kol_vo_students]{};
size_t i = 0;
for (auto& row : otsenki_studentov) {
std::cout << std::setw(2) << ++i << ". ";
for (auto& value : row) {
value = RAND(2, 6);
std::cout << std::setw(4) << value << ' ';
}
puts("");
}
puts("");
i = 0;
for (const auto& row : otsenki_studentov) {
auto summa = 0.0;
for (auto value : row) {
summa += value;
}
sredniye_otsenki_studentov[i] = summa / kol_vo_otsenok;
++i;
}
i = 0;
std::cout << std::fixed << std::setprecision(1);
for (auto average : sredniye_otsenki_studentov) {
std::cout << "Студент " << std::setw(2) << i + 1
<< ": Средний балл = " << sredniye_otsenki_studentov[i] << '\n';
++i;
}
system("pause > nul");
}
Похожие вопросы