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

Регистрация
12 Окт 2013
Сообщения
65
Репутация
0
Спасибо
0
Монет
0
// 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[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[j];

}

kol_vo_otsenok = summa / kol_vo_otsenok;

}

// Вывод среднего балла каждого студента

for (int i = 0; i < kol_vo_students; ++i) {

std::cout
 
kol_vo_otsenok = summa / kol_vo_otsenok;

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

В целом следовало бы уменьшить количество проходов по циклам и сделать все максимум в 2 цикла. Так повысится производительность и читаемость кода.
 
#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;random&gt;

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

std::vector&lt;std::vector&lt;int&gt;&gt; otsenki_studentov(kol_vo_students, std::vector&lt;int&gt;(kol_vo_otsenok));

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution&lt;&gt; dis(2, 5);

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

std::vector&lt;double&gt; sredniye_otsenki_studentov(kol_vo_students);

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

for (int i = 0; i &lt; kol_vo_students; i++) {
std::cout &lt;&lt; &#34;Студент &#34; &lt;&lt; i &lt;&lt; &#34;: Средний балл = &#34; &lt;&lt; sredniye_otsenki_studentov &lt;&lt; std::endl;
}

return 0;
}
 
Компилятор не сообщает место ошибки?

В паре мест идёт обращение как к матрице
 
#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
 
В строке summa += kol_vo_otsenok[j]; ты обращаешься к переменной kol_vo_otsenok как к двумерному массиву, хотя ты хотел обратиться к otsenki_studentov. Это приведет к ошибке компиляции.

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

В цикле вывода среднего балла каждого студента ты используешь оператор i++, что приведет к неправильному выводу номеров студентов.
 
Назад
Сверху