Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Умножение Без Знака Умножения 
:(
    Опции темы
Unbekannt
Дата 22.12.2010, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



Начну с того, что я самоучка и меня нигде и никто этому не учит. Интереса ради захотелось попробовать написать скрипт, который не используя знака умножения будет умножать число N на M.

Аналог на питоне:

Вариант 1:


Код
def rekursiv(m, n):
if m == 0:
       return 0
   else:
     return rekursiv(m - 1, n) + n


Вариант 2, более наглядный:


Код
def iterativ(m, n):
 result = 0
 while n != 0:
  if n > 0:
       result += m
  n -= 1
 else:
  result -= m
      n += 1
 return result




Вот что сам наклацал на яве:

Вариант 1:

Код
public class lol {
    static byte N = 5;
    static byte M = 10;
    static byte result = 0;
    public static byte main(String[] args){
        while (N != 0){
        if (N > 0){
        result += M;
        N=-1;}
        else
        result -= M;
        N=+1;}
        if (N==0){
            System.out.println("Ответ: " + result + "");
        }
        return result;
    }
}


При компиляции ошибок нет, при запуске говорит о том, что метод main должен быть void (ну, типа того).


Вариант 2:

Код
public class lol {
    static byte N = 5;
    static byte M = 10;
    static byte result = 0;
    public static void main(String[] args){
        System.out.println("Запущено, идет вычисление...");}
    public static byte lolo(String[] args){
        while (N != 0){
        if (N > 0){
        result += M;
        N=-1;}
        else
        result -= M;
        N=+1;}
        if (N==0){
            System.out.println("Ответ: " + result + "");
        }
        return result;
    }
}



Сделав так, никто не на что не ругается, однако и не работает. В целом вариантов перепробовал уйму, но ничего внятного к сожалению. За помощь буду безумно благодарен.
PM MAIL   Вверх
mstalker26
Дата 22.12.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 4.7.2009

Репутация: 4
Всего: 11



Ты в main-методе только System.out.println(...) вызываешь
Код

public static void main(String[] args)
{
  System.out.println("Запущено, идет вычисление...");
}

Добавь свой метод lolo и все будет в порядке (кстати строковой параметр выброси оттуда, все равно не используешь). И все это дело будет выглядеть приблизительно так
Код

public class lol {
    static byte N = 5;
    static byte M = 10;
    static byte result = 0;
    public static void main(String[] args){
        System.out.println("Запущено, идет вычисление...");
        lolo();
    }
    public static byte lolo(){
        while (N != 0){
        if (N > 0){
        result += M;
        N=-1;}
        else
        result -= M;
        N=+1;}
        if (N==0){
            System.out.println("Ответ: " + result + "");
        }
        return result;
    }
}




EDIT: Слона-то я просмотрел smilesmilesmile
ты пишешь N =- 1 и N =+ 1, т.е. у тебя N либо -1 либо 1, вот и летаешь в бесконечном цикле smile
Вот так будет правильно
Код

...
while (N != 0){
        if (N > 0){
        result += M;
        N -= 1;}
        else
        result -= M;
        N += 1;}
...


Это сообщение отредактировал(а) mstalker26 - 22.12.2010, 22:57
--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
Unbekannt
Дата 22.12.2010, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



Спасибо большое) Есть еще хорошие люди ;)

Это сообщение отредактировал(а) Unbekannt - 22.12.2010, 23:03
PM MAIL   Вверх
mstalker26
Дата 22.12.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 4.7.2009

Репутация: 4
Всего: 11



Так как ник Unbekannt, позволю себе сказать
Was uns nicht umbringt, macht uns nur staerker smile
--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
Unbekannt
Дата 22.12.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.12.2010

Репутация: нет
Всего: нет



Если кому-то будет нужно (таким же ламерам как я), вот что получилось:

Код
public class lol {
    static double N = -50;
    static double M = 3;
    static double result = 0;
    public static void main(String[] args){
     while (N != 0)
            if (N > 0){
            result += M;
            N -= 1;}
            else{
            result -= M;
            N += 1;}
            System.out.println("Ответ: " + result + "");

    }
}


Это сообщение отредактировал(а) Unbekannt - 23.12.2010, 00:32
PM MAIL   Вверх
_Y_
Дата 24.12.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



ОФФ: Еще в доисторические времена в универе кто-то из преподов рассказывал как он, в свои собственные доисторические времена, писал алгоритм умножения для процессора ЭВМ. Кажется процессор этот был на лампах и умел только прибавлять или отнимать единицу. smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
jGorets
Дата 29.12.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 11.7.2010

Репутация: нет
Всего: нет



Unbekannt, я тут думаю, ты решил учить методом тыка? а почитать книжечку, самую простую?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.