Страница 2 из 6

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 26 ноя 2016, 19:19
Anastasiya Fevraleva
/* 10 процентов
Реализуйте метод addTenPercent, который увеличивает переданное целое число на 10%.
Исправьте ошибку в сигнатуре метода.
Подсказка: подумайте, какие у этого метода входные и выходные данные.
*/
public class Solution
{
public static void addTenPercent(int i) {
//напишите тут ваш код
}

public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 26 ноя 2016, 20:05
Maksim Sergeevich
/* Ближайшее к 10
Реализовать метод closeToTen. Метод должен выводить на экран ближайшее к 10 из двух чисел, записанных в аргументах метода.
Например, среди чисел 8 и 11 ближайшее к десяти 11. Если оба числа на равной длине к 10, то вывести на экран любое из них.
Подсказка: используйте метод public static int abs(int a), который возвращает абсолютную величину числа.
*/
Итак, есть метод main, который вызывает метод closeToten, в который мы уже передаём два каких-то значения в надежде получить результат.

public static void main(String[] args)
{
closeToTen(8,11);
closeToTen(14,7);
}


Давай подумаем, как мы вообще определяем, какое число ближе к десятке? 8 или 11, какое ближе? Да просто же. Десять минус 8. Десять минус 11. В первом случае получается 2 и во втором - 1.

Казалось бы осталось сравнить значения, НО!мы должны сравнить индексы значений, то есть игнорировать минус. Иначе решения будут не правильными. Для этого нам и нужен метод abs.

public static int abs(int a)
{
if (a < 0) {
return -a;
} else {
return a;
}

}


В него мы передаём значение (например минус 1). Если мы передали минус 1, какое значение будет в a? Ответ: - (-1), а минус на минус даёт плюс! Вот мы и сравним индексы без отрицательных знаков. Таким образом решение будет примерно таким:

public class Test2 {
public static void main(String[] args)
{
closeToTen(8,11);
closeToTen(14,7);
}

public static void closeToTen(int a, int b)
{
//::CODE:

int c = 10 - a;

int d = 10 - b;

if (abs(c) < abs(d)){
System.out.println(a);

} else {
System.out.println(b);
}

}

public static int abs(int a)
{
if (a < 0) {
return -a;
} else {
return a;
}

}

}

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 26 ноя 2016, 20:07
Maksim Sergeevich
По второй задаче отпишусь чуть позже - немного занят-с.

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 27 ноя 2016, 00:44
Maksim Sergeevich
Что касается второй задачи:

/* 10 процентов
Реализуйте метод addTenPercent, который увеличивает переданное целое число на 10%.
Исправьте ошибку в сигнатуре метода.
Подсказка: подумайте, какие у этого метода входные и выходные данные.
*/
public class Solution
{
public static void addTenPercent(int i) {
//напишите тут ваш код
}

public static void main(String[] args) {
System.out.println(addTenPercent(10));
}
}

То есть существует метод main, который вызывает метод addTenPercent и передаёт ему какое-то числовое (int) значение, в нашем случае число 10.

Вспомним как узнать процент от числа? Нужный процент разделить на 100 и умножить на число.

То есть: 10 * 10 / 100 . Получится единица. Потом мы должны увеличить на 10 процентов. То есть эту единицу прибавить к 10. Как это будет выглядеть в методе addTenPercent(int i)? Очень просто.

int percent = i * 10 / 100;

i = i + percent;


Мы создали переменную percent типа int, которая равна значению, переданному в наш метод addTenPercent (то есть переменная i типа int) умноженное на значение, полученное от частного. Таким образом мы узнали 10 процентов от числа.
Далее переменная i равно значению самой себе плюс значение percent 10 процентов от числа.

Какая же ошибка в сигнатуре метода? Метод должен вернуть значение i. Значит в методе будет ключевое слово return. Стало быть вместо ключевого слово void - мы должны указать тип метода, в нашем случае int.

public static int addTenPercent(int i) {
//напишите тут ваш код


int percent = i * 10 / 100;

i = i + percent;

return i;
}


Полностью будет выглядеть как-то так:

public class Test2 {

public static int addTenPercent(int i) {
//напишите тут ваш код
int percent = i * 10 / 100;

i = i + percent;

return i;
}

public static void main(String[] args) {
System.out.println(addTenPercent(10));
}

}

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 11 дек 2016, 00:49
Anastasiya Fevraleva
package com.javarush.test.level04.lesson06.task03;

/* Сортировка трех чисел
Ввести с клавиатуры три числа, и вывести их в порядке убывания.
*/

import java.io.*;

public class Solution
{
public static void main(String[] args) throws Exception
{
//напишите тут ваш код

}
}

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 11 дек 2016, 14:03
Maksim Sergeevich
Для ввода данных с клавиатуры используется System.in. Но System.in позволяет считать с клавиатуры только коды символов. Чтобы обойти эту проблему и считывать большие порции данных за один раз, мы будем использовать более сложную конструкцию:

InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);


Чтобы считать строку с клавиатуры, можно использовать объект BufferedReader. Но для этого в него нужно передать объект, из которого он будет вычитывать данные – System.in.

Однако System.in и BufferedReader не совместимы друг с другом, поэтому следует использовать переходник – еще один объект InputStreamReader.

Проще можно записать так одной строкой:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


Хорошо поток запущен, далее у нас три числа, которые мы должны ввести, создадим три переменных типа int (число) и укажем им значения, которые мы введём с клавиатуры, то есть:
int a = Integer.parseInt(reader.readLine());

int b = Integer.parseInt(reader.readLine());

int c = Integer.parseInt(reader.readLine());

А дальше простые условные циклы сравнений чисел - если а меньше б и меньше с, да ещё при этом б меньше c, то...

if (a < b && a < c && b < c) {

System.out.println(a);
System.out.println(b);
System.out.println(c);

} else if (b < a && b < c && a < c) {
System.out.println(b);
System.out.println(a);
System.out.println(c);

} else if (c < a && c < b && a < b){

System.out.println(c);
System.out.println(a);
System.out.println(b);
} else if (c < a && c < b && b < a){

System.out.println(c);
System.out.println(b);
System.out.println(a);
}



Таким образом весь код выглядеть будет как-то так:

package test2;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Test2 {

public static void main(String[] args) throws Exception
{
//напишите тут ваш код

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

int a = Integer.parseInt(reader.readLine());

int b = Integer.parseInt(reader.readLine());

int c = Integer.parseInt(reader.readLine());

if (a < b && a < c && b < c) {

System.out.println(a);
System.out.println(b);
System.out.println(c);

} else if (b < a && b < c && a < c) {
System.out.println(b);
System.out.println(a);
System.out.println(c);

} else if (c < a && c < b && a < b){

System.out.println(c);
System.out.println(a);
System.out.println(b);
} else if (c < a && c < b && b < a){

System.out.println(c);
System.out.println(b);
System.out.println(a);
}
}
}


Про сайт напишу чуть позже, вчера в конторе одной просидел в качестве эксперта - не занимался, а сейчас над одной подработкой вкалываю.

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 14 дек 2016, 00:28
Anastasiya Fevraleva
package com.javarush.test.level04.lesson04.task09;

/* Светофор
Работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в течение трех минут горит зеленый сигнал,
затем в течение одной минуты — желтый, а потом в течение одной минуты — красный, затем опять зеленый горит три минуты и т. д.
Ввести с клавиатуры вещественное число t, означающее время в минутах, прошедшее с начала очередного часа.
Определить, сигнал какого цвета горит для пешеходов в этот момент.
Результат вывести на экран в следующем виде:
"зеленый" - если горит зеленый цвет, "желтый" - если горит желтый цвет, "красный" - если горит красный цвет.
Пример для числа 2.5:
зеленый
Пример для числа 3:
желтый
Пример для числа 4:
красный
Пример для числа 5:
зеленый
*/

import java.io.*;

public class Solution
{
public static void main(String[] args) throws Exception
{

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 14 дек 2016, 23:52
Maksim Sergeevich
Надо копать в сторону арифметического оператора %. % делит левый операнд на правый операнд и возвращает остаток. По остатку от деления можно найти в какой промежуток времени мы находимся... Чуть позже опишу решение. Занят пока.

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 19 дек 2016, 20:34
Maksim Sergeevich
Думаю как-то так. Подробнее мы сегодня обсудили на перемене. Но если есть вопросы - могу расписать.


public class Test2 {

public static void main(String[] args) throws Exception
{
//напишите тут ваш код

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

double time = Integer.parseInt(reader.readLine());

if((time%5>=0)&&(time%5<3))
System.out.println("зеленый");
if((time%5<4)&&(time%5>=3))
System.out.println("желтый");
if((time%5<5)&&(time%5>=4))
System.out.println("красный");
}
}

Re: Помощь в решении задачек javarush (до 10 уровня)

Добавлено: 31 дек 2016, 22:36
Anastasiya Fevraleva
С наступающим Новым Годом.Удачи здоровья