Помогите понять алгоритм

208
28 января 2018, 03:02

Задача:

В некоторой школе решили набрать три новых класса и оборудовать кабинеты для них новыми партами. За каждой партой может сидеть два учащихся. Известно количество учащихся в каждом из трех классов. Выведите наименьшее число парт, которое нужно приобрести для них.

Входные данные:
Программа получает на вход три натуральных числа: количество учащихся в каждом из трех классов.

Выходные данные:
Выведите ответ на задачу.

Вот как я решил:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    const int CLASSES = 3, NUMBER_OF_SEATS = 2;
    int students[CLASSES];
    float result = 0;
    for (int i = 0; i < CLASSES; i++){
        cin >> students[i];
    }
    for (int i = 0; i < CLASSES; i++){
        result += students[i];
    }
    result = ceil(result / NUMBER_OF_SEATS);
    cout << result << endl;
    return 0;
}

Но сайт на котором я решаю задачи выдает 4 ошибки из 10 тестов, в чем ошибка? Я не прошу выложить готовый код можно просто алгоритм

Answer 1

Я бы делал так:

const int CLASSES = 3, NUMBER_OF_SEATS = 2;
int result = 0, stds;
for (int i = 0; i < CLASSES; i++){
    cin >> stds;
    results += (stds+1)/NUMBER_OF_SEATS;
}
cout << result << endl;

И никаких float!

Answer 2

Суть задачи - посчитать количество парт, ты же считаешь количество учащихся делить на 2, что не есть правильно. В конце то может оказаться 1 "стоячий" ученик

Логичнее было бы: поделить число учащихся в одном классе на 2, и если остаток от деления больше 0 (5\2 = 2 + 1 в остатке)(функция 5%2 выдаст 1), +1 к кол-ву парт на аудиторию.

if(StudentsInClassNmb1 % NUMBER_OF_SEATS > 0 ){
int result 1= StudentsInClassNmb1/NUMBER_OF_SEATS;
}else{int result1= (StudentsInClassNmb1/NUMBER_OF_SEATS)+1;}  

Проделать( в общем ) 3 раза и вуаля - решено, останется только сложить

Answer 3

Алгоритм следующий:

количество_парт = (ученики_класс_1 + 1) / 2 + (ученики_класс_2 + 1) / 2 + (ученики_класс_3 + 1) / 2

Деление целочисленное.

READ ALSO
Как вывести в Txt файл двумерный массив в с++?

Как вывести в Txt файл двумерный массив в с++?

Добрый вечер, я разобрался с некоторыми проблемами, но теперь у меня другой вопрос: есть такой код расчета температуры:

227