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

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

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2018, 12:51   #1
Strаnn1k
Новичок
Джуниор
 
Регистрация: 02.12.2018
Сообщений: 1
По умолчанию Нужна реализации задания + проверка кода

В общем, есть задание: Напишите консольную программу, которая составляет 5-ти дневное расписание занятий для одной группы на основе введенных предметов и соответственно для каждого предмета - академических часов в неделю. При условии что максимальное количество пар в день - 4. ( 2 академических часа = 1 пара )
Проверьте пожалуйста по возможности уже существующий код на наличия каких-то ошибок в плане реализации и может советы какие-то, ну и помощь нужна именно в составлении 5-ти дневного расписания занятий, а то уже всю голову себе сломал, ну не могу найти хорошое решение =)
Код:
package auto;
import java.util.Scanner;
import java.io.*;
import static java.lang.Math.*;
 
public class Auto 
{
    public static void main(String[] args) throws IOException 
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Напишите консольную программу, которая составляет 5-ти дневное расписание занятий для одной группы на основе введенных предметов и соответственно для каждого предмета - академических часов в неделю. \nПри условии что максимальное количество пар в день - 4. ( 2 академических часа = 1 пара )");
        System.out.print("Введите количество предметов = ");
        int pars = scan.nextInt();
        if(pars > 10 || pars <= 0) 
        {
            System.out.println("Введенные данные не корректны. Максимальное количество предметов равно 10, минимальное количество должно быть больше нуля. ");
            System.out.println("Хотите ввести еще раз? 1 - да, 0 - нет. ");
            int ch = scan.nextInt();
            switch(ch) 
            {
                case 1: System.out.println("Ошибка..."); // Тут должен быть перезапуск программы, еще не дошел, не знаю как...
                default: System.exit(0);
            }
        }
        
        String par[] = new String[pars];
        zap(pars, par);  
        
        int akadem[] = new int[pars];
        akad(pars, akadem, par);
        
        System.out.println("Все введенные данные корректны.");
        for(int u = 0; u < pars; u++) {
            System.out.println("Предмет " + par[u] + ". Количество пар " + akadem[u]);
        }
        
        
        
    }
    
    
    // Заполнение массива данными по предметам
    public static int zap(int pars, String par[]) 
    {
        Scanner scan = new Scanner(System.in);
        for(int i = 0; i < pars; i++)
        {
            System.out.println("Введите название предмета №" + (i+1) + ": ");
            String inp = scan.nextLine();
            par[i] = inp;
        }
        return 0;
    }
    
    // Заполнение массива данными по академических часах.
    public static void akad(int pars, int akadem[], String par[]) 
    {
        Scanner scan = new Scanner(System.in);
        int y = 0;
        while(y < pars) 
        {
            for(int x = 0; x < pars; x++) 
            {
                System.out.println("Количество академических часов для предмета: " + par[x]);
                int g = scan.nextInt();
                if(g%2 == 1) { // 2 академических часа = 1 пара, в массив вношу исключительно количество пар.
                    System.out.println("Вы ввели не парное количество часов, было совершено округление к ближайшему числу.");
                    double gh = floor(g/2);
                    int h = (int)gh;
                    akadem[y] = h;
                }
                else if(g%2 == 0) {
                    int gh = g/2; 
                    akadem[y] = gh;
                }
                y += 1;
            }
        }
        int n = 0, kilk = 0;
        while(n < akadem.length) { // Проверка, не равняется ли количество пар в массиве больше 20, так как по условию в день нельзя больше 4 пары, 4*5 = 20.
            kilk += akadem[n];
            n += 1;
        }
        if (kilk > 20) { 
            System.out.println("Количество пар на неделю = " + kilk + ". Максимальное количество пар равняется 20. \nПри условии что в день разрешено не более 4 пар.\nВведенные данные не согласуются с условием.");
            System.exit(0);
        } 
    }
    
    // Перезапуск приложения
    public void restartApplication()
    {
    }
    
}
Strаnn1k вне форума Ответить с цитированием
Старый 15.12.2018, 22:59   #2
JavaDoc
Пользователь
 
Регистрация: 15.12.2018
Сообщений: 16
По умолчанию

Метод к примеру должен возвращать двуменый массив 5х5 строки это дни недели а содержимое это предметы
Массив. String[][] res =new String[5][5];
MatAn, RussYaz, litera, fizra, LS вот к примеру 1 день недели.. Осталось придумать алгоритм по которому будут раскидываться предметы предлогаю вычислять индекс через рандом генератор для каждой пары и если индекс текущий занят то поставить в следующий индекс
JavaDoc вне форума Ответить с цитированием
Старый 13.01.2019, 23:51   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Strаnn1k а какой вариант решения вы придумали? Пусть пока плохое.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delegate- проверить корректность реализации кода Afaq1990 C# (си шарп) 9 10.11.2014 16:43
C# помогите найти ошибку в коде !! Разработать программу аппаратной реализации циклического кода (15, 11) meason Помощь студентам 0 02.12.2013 20:16
Проверка тестового задания romanln2012 Общие вопросы C/C++ 6 26.10.2012 13:19
Набрать номер по модему. Различие в реализации кода Delphi 2007 и 2010. plato Общие вопросы Delphi 8 06.04.2010 09:47
Необходима помощь в реализации задания. Assembler. Graddva Помощь студентам 5 15.09.2007 19:39