Wątek przeniesiony 2016-03-30 18:00 z Java przez bogdans.

Program odejmujący liczbę

0

Witam. Mam takie zadanie do zrobienia:

Napisz program który pozwoli podzielić 2 liczby całkowite za pomocą odejmowania: odjemna-odjemnik = różnica
np.: 10/2
1k: 10-2 = 8
2k 8-2 = 6
3k 6-2 = 4
4k 4-2= 2
5k 2-2 = 0

I teraz zrobiłem coś takiego:

var a=prompt("Podaj pierwszą liczbę")
		var b=prompt("Podaj drugą liczbę")
		if ((isNaN(a))||(isNaN(b))) {
			document.write("Jedna z podanych wartości nie jest liczbą")
			null.dummy;}  // konczy skrypt}
			
			
		var pierwsze=a-b;
		if (pierwsze==0) {
		document.write(""+a+"- "+b+" = "+pierwsze+"")
		null.dummy;}  // konczy skrypt
			
		else drugie=pierwsze-b;
		if (drugie==0) {
		document.write(""+a+"- "+b+" = "+pierwsze+"<br>")
		document.write(""+pierwsze+"- "+b+" = "+drugie+"")
		null.dummy;}  // konczy skrypt
		
		else trzecie=drugie-b;
		if (trzecie==0) {
		document.write(""+a+"- "+b+" = "+pierwsze+"<br>")
		document.write(""+pierwsze+"- "+b+" = "+drugie+"<br>")
		document.write(""+drugie+"- "+b+" = "+trzecie+"")
		null.dummy;}  // konczy skrypt
			
		document.write(""+a+"- "+b+" = "+pierwsze+"<br>")
		document.write(""+pierwsze+"- "+b+" = "+drugie+"<br>")
		document.write(""+drugie+"- "+b+" = "+trzecie+"") 

Jednak jest to trochę bez sensu, ale inaczej nie potrafię. Jaką mógł bym zastosować funkcję aby tego nie robić ręcznie, tylko aby program sam wykonywał operacje do danego momentu?

0

Ani przez chwilę nie wpadłeś na pomysł użycia pętli?
Poza tym co to ma być: null.dummy;?

0

Coś tam próbowałem, ale nie mam pomysłu jak to zrobić. No, bo w jaki sposób mam zrobić tak aby program brał ostatni wynik i od niego odejmował? a null.dummy; używam do kończenia skryptu, bo jak to ręcznie robie, to po prostu w danym momencie gdy wynik wychodzi 0 tym go kończę.

0

Użyj pętli, aż twój wynik nie będzie <= 0. Zlicz ilość przejścia pętli.

0

Nie mam kompletnie pomysłu, zrobiłem coś takiego, ale nie działa.

 var x=10;
while(x>0)
{
if(x-2==0)
document.write(x+", ");
}
0

No tak, przecież nigdzie nie zmieniasz (nie dekrementujesz) wartości zmiennej x, zatem pętla jest nieskończona.

0

No właśnie, tylko że ja chciałbym odejmować co dwa, nie co jeden, poza tym w późniejszym etapie chciałbym aby użytkownik sam podał wartości

0

A jaki to problem odejmować co dwa?

1

Nie wiem co to za język a nie chce mi się domyślać/szukać łap kod w c++.

        
int x = 10;
int y = 2;
int wynik =0;

if(y > x){
    int tmp = x;
    x = y;
    y = tmp;
}

while( x >= y){
	x -= y;
	++wynik;
}
	
cout << "wynik: " << wynik << " reszty: " << x;
0

Chodzi o javascript, jest napisane w tagu. niestety nie umiem tego przerobić.

0

Podstawowe pytanie: co to za problem odejmować 2? :P

0

Gdybym umiał to zrobić to bym nie zakładał tematu. Starałem się, jak widać po pierwszym poście, ale nie umiem.

0

A szukałeś w internecie chociaż? Na przykład pod kątem js operators w Google?
Umiejętność szukania w internecie jest podstawową cechą programisty :P

0

Mam książkę "Aplikacje internetowe" a w niej dział JavaScript ale nie wiele to pomaga.

0

A czego konkretnie nie wiesz? Do rozwiązania tego problemu potrzebujesz umieć wczytać dane, wypisać dane, pętla while i odejmowanie. Którego z tych elementów nie umiesz zrobić?

2

Przypominam treść zadania

Napisz program który pozwoli podzielić 2 liczby całkowite za pomocą odejmowania

Podane rozwiązanie ma parę błędów:

  • wchodzi w nieskończoną pętlę gdy y=0,
  • niepotrzebnie dzieli zawsze liczbę większą przez mniejszą, to użytkownik wybiera co przez co chce dzielić,
  • daje absurdalne wyniki dla liczb ujemnych (które też są całkowite).
    Najprostszy sposób poprawy, to skorzystać z kodu @Schadoow'a dla liczb abs(x) i abs(y) i pomnożyć otrzymany wynik przez -1 gdy x i y są przeciwnych znaków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1