Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.11.2022, 13:23
Новичок на форуме
Отправить личное сообщение для RUSNORD Посмотреть профиль Найти все сообщения от RUSNORD
 
Регистрация: 21.11.2022
Сообщений: 2

Указание данных студентов
Здравствуйте.

Была ли такая задача, на данном форуме?

Задача:

Приложение, предполагающее указание данных студентов (оценки по предметам) и их анализ (определение числа студентов в каждой из категорий: "отличник", "хорошист" и "неуспевающий"). В форме (анкете) указывается фамилия и пять оценок за дисциплины (от 2 до 5). "Отличник" ‐ если все оценки "5", "хорошист" ‐ оценки "5" и "4", "неуспевающий" ‐ хотя бы одна оценка "2". Необходимо последовательно указать данные для произвольного числа студентов (последовательное заполнение формы данными для разных студентов ‐ внесли для одного, учли, внесли для следующего, учли, и т.д.), после чего вывести сводку о количестве студентов в каждой из категорий и перечислить фамилии неуспевающих. Для упрощения отладки рекомендуется (но для отработки не обязывает!) добавить возможность не заполнять оценки вручную, а использовать генератор случайных чисел.

Благодарю всех за помощь и потраченное время.
Изображения:
Тип файла: jpg Screenshot 2022-11-21 074801.jpg (77.1 Кб, 5 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2022, 21:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

генератор списка студентов
RUSNORD,

<pre id="out"></pre>
    <script>
        let a = ["a", "e", "i", "o", "u", "y"]
        let b = ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z"]
        function random(min, max, arr) {
            if (arr) {
                min = 0;
                max = arr.length - 1
            }
            return function() {
                let index = min + Math.floor(Math.random() * (max - min + 1));
                return arr ? arr[index] : index
            }
        }
        function createNik() {
            let length = random(3, 7)(),
                a_r = random(0, 0, a),
                b_r = random(0, 0, b),
                k = +(Math.random() > .5),
                nik = (k ? a_r() : b_r()).toUpperCase();
            for (let i = 1; i < length; i++) {
                nik += (i % 2 !== k) ? a_r() : b_r()
            }
            return nik
        }
        function createRating() {
            let rating = random(0, 0, [5, 5, 3, 5, 4, 5, 4, 4, 4, 5, 5, 2, 5, 5]),
                length = 5;
            return Array.from({
                length
            }, _ => rating())
        }
        let testScill = [{
            fn: a => a.every(e => e === 5),
            name: "Отличник"
        }, {
            fn: a => a.every(e => [5, 4].includes(e)),
            name: "Хорошист"
        }, {
            fn: a => a.some(e => e === 2),
            name: "Неуспевающий"
        }];
        function _skill(arr) {
            for (let {
                    fn,
                    name
                } of testScill) {
                if (fn(arr)) return name;
            };
            return '---'
        }
        function listOfStudents() {
            let length = random(3, 15)();
            return Array.from({
                length
            }, _ => {
                let rating = createRating(),
                    nik = createNik(),
                    scill = _skill(rating);
                return {
                    nik,
                    rating,
                    scill
                }
            })
        }
        let students = listOfStudents();
        out.append(JSON.stringify(students, function(key, value) {
            if (key === 'rating') {
                return value.toString();
            }
            return value;
        }, 1))
        function searchScill(patern)
        {
           return students.filter(({scill}) => scill === patern).map(({nik}) => nik)
        }
        let listOfFailing = searchScill("Неуспевающий");
        out.append(`\n${listOfFailing.length} underachievers : ${listOfFailing}`);
        let listOfGood = searchScill("Хорошист");
        out.append(`\n${listOfGood.length} goods : ${listOfGood}`);
        let listOfExcellent = searchScill("Отличник");
        out.append(`\n${listOfExcellent.length} excellents : ${listOfExcellent}`);
    </script>

Последний раз редактировалось рони, 23.11.2022 в 22:00.
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2022, 12:56
Новичок на форуме
Отправить личное сообщение для RUSNORD Посмотреть профиль Найти все сообщения от RUSNORD
 
Регистрация: 21.11.2022
Сообщений: 2

Спасибо Вам, огромное.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимальная передача данных Aido Node.JS 1 02.05.2020 04:13
Подчитывание данных в компонент по HTTP sniffysko Angular.js 3 06.07.2018 15:10
Ошибка при обработке данных TBUCTEP Общие вопросы Javascript 11 12.05.2017 14:56
Не понимаю JavaScript. Как сделать ожидание события загрузки данных? xintrea AJAX и COMET 7 01.06.2013 17:18
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00