ITI0011RUS:упражнение 02

Allikas: Kursused
Redaktsioon seisuga 10. veebruar 2015, kell 18:34 kasutajalt Aleksandr (arutelu | kaastöö) (→‎Описание)
Mine navigeerimisribale Mine otsikasti

Срок сдачи упражнения 4-е занятие (13-е февраля).

Общая информация об упражнениях: ITI0011RUS_Practice.

Описание

Один из ваших друзей едет на Гаваи и хочет там открыть фирму. Он не хочет говорить о том чем он там будет заниматься. Поскольку он знает, что у вас большой опыт в программировании, просит написать небольшую программу, которая помогла бы ему в работе. Дело в том, что у него недостаточно денег для того чтобы нанять бухгалтера и оплачивать его работу. Поэтому большую часть работы он выполняет в Excel. Время от времени налоговая инспекция проверяет как развивается бизнес. Представители налоговой инспекции приходят в офис и проверяют баланс доходов/расходов за любой выбранный день. Ваш друг просит вас написать программу, которая бы давала ответ на этот вопрос. Программе доступна информация о доходах за N последних дней (отрицательный доход означает расходы), причем значение N заранее неизвестно, а также конкретный день которым интересуются представители налоговой инспекции. История о доходах может хранить записи за последние, например, 20 дней. Представители налоговой инспекции могут поинтересоваться размеров доходов в первый день (день который был 20 дней назад), во второй день и т.д до 20-го дня. Записи о доходах также упорядочены, самая первая запись соответствует записи о доходах в первый день, и т.д.

Это еще не все. В штате Гаваи очень странная система налогообложения. Представители налоговой инспекции могут спросить информацию о будущем. Хотя бизнес вашего друга просуществовал всего 20 дней (тоесть существуют записи о доходах всего за 20 дней), представители налоговой инспекции могут спросить размер доходов в 21-й день. Согласно местным "законам", будущее можно предсказать по прошлому. Тоесть доход за 21-й день в точности идентичен доходу за 1-й день. Доход за 30-й день в точности такой же, как и доход за 10-й день. Точно таким же образом размер дохода происходит в будущем. Например, доход за 51-й день такой же, как и доход за 11-й день.

И это еще не все. Местная культура позволяет по воскресеньям проводить "дни увеличенного дохода". Это означает то, что в такой день доходы на 20% выше. Таким образом, если в обычное воскресенье фирма выручила 100 денежных единиц, то в "день повышенного дохода" запись о доходах может содержать 120 денежных единиц. В случае убытков, запись о доходах может содержать на 10% меньшее значение. Тоесть в случае доходов в -100 денежных единиц регистрируемый результат только -90. Известно, что ваш друг начал вести свой бизнес в понедельник. Производя арифместические расчеты, результат следует округлять в соответствии с правилами математики (11.5 => 12, 11.49 => 11, -12.5 => -13, -12.49 => -12), tulemus on alati täisarv.

Но и это еще не все. Ваш друг не хочет докладывать инспекции о расходах. Если вдруг представитель инспекции поинтересуется днем, когда фирма потерпела убытки, ваш друг хочет, чтобы программа возвращала запись либо о предыдущем дне (если такая запись присутствует), о текущем дне или о завтрашнем дне - в соответствии с тем, какая из записей будет содержать наибольший результат (больше доход/меньше расход).

Mall

<source lang="java"> /**

* Home assignment 02.´
* 
* Read more: https://courses.cs.ttu.ee/pages/ITI0011:harjutus_02
*
*/

public class Task02 {

/** * Your killer app, which tries to fool the tax office * that your friend is a killer businessman. * * (don't try this at home, we haven't taught you anything) * * @param whatHas An array of profits for every day. * The first element of the array indicates the profit * for the first day etc. * @param whotYouAskMon The day for which the tax officer * wants to get information. * @return The profit to be shown to the tax officer. */ public static int getMyBigMoneys(int[] whatHas, int whotYouAskMon) { // yoyo, your code here return 0; }

/** * The main method, which is the entry point of the program. * !!IMPORTANT!! You have to keep the main method in order * to get your solution tested. * @param args Arguments from the command line */ public static void main(String[] args) { System.out.println(getMyBigMoneys(new int[]{1}, 1)); // => 1 System.out.println(getMyBigMoneys(new int[]{1, -2, 3}, 2)); // => 3 System.out.println(getMyBigMoneys(new int[]{-1, 2, 3}, 4)); // => 3 System.out.println(getMyBigMoneys( new int[]{-1, 2, 3, 4, 5, -60, -70, -80}, 7)); // => -60 System.out.println(getMyBigMoneys( new int[]{-1, 2, 3, 4, -70, -60, -65, -80}, 6)); // => -59 }

}

</source>

Täiendavat infot

Teie peate kirjutama funktsiooni getMyBigMoneys sisu. Funktsioonile antakse ette kaks argumenti: täisarvude massiiv ja täisarv. Massiiv sisaldab kõiki kasumeid ajaloos. Kui massiivi pikkus on 10, siis järelikult sisaldab ta kasumeid päevast 1 kuni päevani 10 (mõlemad kaasa arvatud). Teine number on päeva järjekorranumber, mille kohta peate kasumiinfo tagastama.

Funktsioon tagastab ühe numbri - kasumiinfo vastavalt üleval kirjeldatud soovidele.

Massiivi pikkuse saate kätte:

array.length

Massiivi elemendid vastavalt indeksiga idx:

array[idx]

Jäägiga opereerimine:

5 % 3 => 2

Soovitatav on enne natuke läbi mõelda, mis reeglid ülesande tekstis kirjas on. Samuti tasub näiteid vaadata ja nendest proovida aru saada.