Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

for petlja, problemi sa unosom

[es] :: Java :: for petlja, problemi sa unosom

[ Pregleda: 2294 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Marko Simulak
123456adada

Član broj: 272268
Poruke: 104



+1 Profil

icon for petlja, problemi sa unosom13.08.2011. u 00:20 - pre 154 meseci
Cao, pokusavam malo da skontam javu, pomocu paskala, i nekih tutorijala, al imam problema. Ne znam, petlju for, jer nije bas isto kao u paskalu, tj, ne znam kako uslove, teorijski da, al...opet ne znam. Evo zadatka koji me muci: Izračunati vrednost sledeće sume: s=1+1/1+1/2+1/3...1/n.
==>evo kako sam ja probao da resim (upload)..

Hvala..:D

[Ovu poruku je menjao Marko Simulak dana 13.08.2011. u 01:54 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: for petlja, problemi sa unosom13.08.2011. u 01:18 - pre 154 meseci
Kod si mogao da staviš između tagova code, imaš ih sa leve strane kad pišeš poruku.

Što se tiče tvog programa, neće da se kompajlira. U for petlji u početnom uslovu pokušavaš da objekat unos koji je tipa Scanner dodeliš promenljivoj n tipa int. Mislim na deo for(n=unos;...)

Evo ti ispravnog rešenja:

Code:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // Pravljenje klase Scanner koja ima mogućnost da čita sa standardnog ulaza (System.in) tj. sa tastature.
        Scanner unos = new Scanner(System.in);
        // Ispis teksta n=?
        System.out.println("n=?");
        // Tek sad čitamo ulaz sa tastature.
        int n = unos.nextInt();
        // Inicijalizujemo sumu na početnu vrednost
        double s = 1.0;
        // U petlji dodajemo sabirke u sumu n puta.
        for (int i = 1; i <= n; i++) {
            // Vršimo konverziju pošto ako delimo 1 sa celobrojnom vrednošću dobićemo nulu za n > 1.
            double divisor = (double) i;
            s = s + (1 / divisor);
        }
        // Ispisujemo vrednost sume, nakon izlaska iz for petlje tj. nakon dodavanja svih sabiraka.
        System.out.println("s=" + s);
    }
}


Pritom da bi naučio kako radi for petlja u Javi (slično je u svim programskim jezicima) pogledaj ovaj link:
http://download.oracle.com/jav...ial/java/nutsandbolts/for.html

Do ovog linka sam došao kad sam kucao java for loop na Guglu.

Srećno sa javom
 
Odgovor na temu

Marko Simulak
123456adada

Član broj: 272268
Poruke: 104



+1 Profil

icon Re: for petlja, problemi sa unosom13.08.2011. u 13:20 - pre 154 meseci
Aha...pa to divosor, i to menjanje, to je novo, to u paskalu nisam radio, a probao sam preko googla da trazim, i nasao sam, al u principu to je to...sa nekim bas jednostavnim zadacima ide sve ok..:D...Sve u svemu hvala, nesto mi je sad i jasnije...:D

Nego, ono sto me jos zanima je to, da li u javi ima repeat until petlja??
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: for petlja, problemi sa unosom13.08.2011. u 18:38 - pre 154 meseci
Citat:
Marko Simulak: Aha...pa to divosor, i to menjanje, to je novo, to u paskalu nisam radio, a probao sam preko googla da trazim, i nasao sam, al u principu to je to...sa nekim bas jednostavnim zadacima ide sve ok..:D...Sve u svemu hvala, nesto mi je sad i jasnije...:D

Nego, ono sto me jos zanima je to, da li u javi ima repeat until petlja??

Ne znam da li shvataš poentu te promenljive divisor (tj. delilac). Problem je što ako delimo sa promenljivom i koja je int onda 1/2 daje 0, 1/3 daje 0, itd. Znači to bi bilo celobrojno deljenje. Zato sam ja ovaj int pretvorio u double (ono što je u Paskalu real) i tada 1/2.0 daje 0.5, 1/3.0 daje 0.3333, itd.

Postoji u Javi repeat petlja samo što se ne zove tako. Njena sintaksa je:
Code (java):

do {
     //ovde idu naredbe
} while (expression);
 

Za ovo sam kucao u Guglu java do while loop i odabrao prvu stranicu koju mi je gugl vratio.

Citat:
Marko Simulak:  Aha...pa to divosor, i to menjanje, to je novo, to u paskalu nisam radio...

Da ne nagađamo, ako hoćeš postavi ovde kako si ti to uradio u Paskalu pa možemo da uporedimo zadatke i da proanaliziramo šta je razlika.
 
Odgovor na temu

Marko Simulak
123456adada

Član broj: 272268
Poruke: 104



+1 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 14:42 - pre 154 meseci
Mhm, dobro. Shvatio sam tu poentu divisor..da, ali se do sada nisam sa tim susretao, pa nisam znao da moze tako da se menja...

Evo uradio sam u paskalu, u njemu je sve jasno kao dan...:D

Code:
program cetriFOR;
uses crt;
var
   n,i:integer;
   s:real;
begin
     clrscr;
     writeln('n=?');
     read(n);
     s:=0;
     for i:=1 to n do
         s:=s+(1/i);
     writeln('Rezultat: ',s:6:2);
     repeat until keypressed;
end.
 
Odgovor na temu

Marko Simulak
123456adada

Član broj: 272268
Poruke: 104



+1 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 19:01 - pre 154 meseci
Citat:
biske86: Kod si mogao da staviš između tagova code, imaš ih sa leve strane kad pišeš poruku.

Što se tiče tvog programa, neće da se kompajlira. U for petlji u početnom uslovu pokušavaš da objekat unos koji je tipa Scanner dodeliš promenljivoj n tipa int. Mislim na deo for(n=unos;...)

Evo ti ispravnog rešenja:

Code:

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
// Pravljenje klase Scanner koja ima mogućnost da čita sa standardnog ulaza (System.in) tj. sa tastature.
Scanner unos = new Scanner(System.in);
// Ispis teksta n=?
System.out.println("n=?");
// Tek sad čitamo ulaz sa tastature.
int n = unos.nextInt();
// Inicijalizujemo sumu na početnu vrednost
double s = 1.0;
// U petlji dodajemo sabirke u sumu n puta.
for (int i = 1; i <= n; i++) {
// Vršimo konverziju pošto ako delimo 1 sa celobrojnom vrednošću dobićemo nulu za n > 1.
double divisor = (double) i;
s = s + (1 / divisor);
}
// Ispisujemo vrednost sume, nakon izlaska iz for petlje tj. nakon dodavanja svih sabiraka.
System.out.println("s=" + s);
}
}


Pritom da bi naučio kako radi for petlja u Javi (slično je u svim programskim jezicima) pogledaj ovaj link:
http://download.oracle.com/jav...ial/java/nutsandbolts/for.html

Do ovog linka sam došao kad sam kucao java for loop na Guglu.

Srećno sa javom ;)


Samo jos nesto....ne shvatam zbog cega si stavio da je s=1.0??? Zar nece onda rezultat biti +1???
s=0.0??
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
62.240.22.*



+373 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 19:19 - pre 154 meseci
Pogledaj ponovo zadatak: 1 + 1/1 + 1/2 + ... + 1/n
Ako n krece od 1 onda zaboravljas prvog keca.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 19:50 - pre 154 meseci
Mislim da stvarno nije u redu to što ne želiš da se potrudiš. Ovo što si rekao mi govori da te je mrzelo da isprobaš kako program radi. Mogao si da pokreneš program i da za n uneseš recimo 3 i da vidiš da će suma biti s=2.83333. Isprobaj ručno da sabereš sumu i dobićeš istu vrednost.
Meni ovo izgleda kao tvoj domaći zadatak a niko ne želi da rešava tuđe zadatke. U redu je da ti pomognemo pošto si početnik u Javi ali treba malo i ti da se potrudiš.
 
Odgovor na temu

Marko Simulak
123456adada

Član broj: 272268
Poruke: 104



+1 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 20:10 - pre 154 meseci
Cek...znam da me matematika zeza, ali samo malo...
Zadatak glasi: 1+1/2+1/3....1/n

Zar nije sve obuhvaceno u 1+(1/divisor) ??


Aaa..da....pogresno sam vam napisao...ide bez tog +1/1.... Zeznuo sam to...pa zato kada sam opet citao zadatak...Sve u svemu moja greska...
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 20:40 - pre 154 meseci
Onda samo prilikom inicijalizacije sume umesto 1 stavi 0.
 
Odgovor na temu

Marko Simulak
123456adada

Član broj: 272268
Poruke: 104



+1 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 22:10 - pre 154 meseci
Pa da...zato sam ja u svom kodu tako stavio..

Code:
import java.util.Scanner;

public class tuto10_for {
    public static void main (String args[]){
        Scanner unos=new Scanner (System.in);
        int n;
        double s=0;
        System.out.println("Unesi n");
        n=unos.nextInt();
        for (int i=1;i<=n;i++){
            double zamena= (double) i;
                s=s+(1/zamena);
        }
        System.out.println(s);
    }    
}  


 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: for petlja, problemi sa unosom14.08.2011. u 23:16 - pre 154 meseci
Citat:
Marko Simulak: Mhm, dobro. Shvatio sam tu poentu divisor..da, ali se do sada nisam sa tim susretao, pa nisam znao da moze tako da se menja...

Evo uradio sam u paskalu, u njemu je sve jasno kao dan...:D

Code:
program cetriFOR;
uses crt;
var
   n,i:integer;
   s:real;
begin
     clrscr;
     writeln('n=?');
     read(n);
     s:=0;
     for i:=1 to n do
         s:=s+(1/i);
     writeln('Rezultat: ',s:6:2);
     repeat until keypressed;
end.


Koliko se sećam, kod Paskala se podrazumevano deli kao da su u pitanju decimalni brojevi. Pored toga ako je iz nekog razloga potrebno celobrojno deljenje onda se kao operator ne koristi znak / već DIV.
Na primer:
Code (pascal):

program INTEGER_DIVISION (output);
     var     number1, number2, number3 : integer;
     begin
            number1 := 4;
            number2 := 9;
            number3 := number2 DIV number1;
            writeln( number2:2,' divided by ',number1:2,' is ',number3:2)
     end.
 


Izlaz ovog programa je:
9 divided by 4 is 2

Znači nije 4.5 nego 4. To je poenta celobrojnog deljenja.


Kod Jave je to drugačije. Ako deliš dva cela (int) broj onda je i rezultat tipa int tj. ceo broj. Ja sam u kodu napisao jedno rešenje a to je da se taj ceo broj pre nego što se podeli pretvori u decimalni broj. Time sam hteo da ne pravim novu promenljivu već da iskoristim ovu i promenljivu, ali možda sam nepotrebno komplikovao. Ako te baš buni ova konverzija moglo je to i drugačije, npr:

Code (java):

import java.util.Scanner;

public class Test {
     public static void main(String[] args) {
          // Pravljenje klase skener koja ima mogućnost da čita sa standardnog ulaza
          // (System.in) tj. sa tastature.
          Scanner unos = new Scanner(System.in);
          // Ispis teksta n=?
          System.out.println("n=?");
          // Tek sad čitamo ulaz sa tastature.
          int n = unos.nextInt();
          // Inicijalizujemo sumu na početnu vrednost
          double s = 0.0;
          double divisor = 1.0;
          // U petlji dodajemo sabirke u sumu n puta.
          for (int i = 1; i <= n; i++) {
               s = s + (1 / divisor);
               divisor += 1.0;
          }
          // Ispisujemo vrednost sume.
          System.out.println("s=" + s);
     }
}
 

 
Odgovor na temu

Marko Simulak
123456adada

Član broj: 272268
Poruke: 104



+1 Profil

icon Re: for petlja, problemi sa unosom15.08.2011. u 00:16 - pre 154 meseci
Pa dobro da, kada je integer ne moze da se koristi / vec div. A kod realnog tipa mogu ici i TRUNC(4.1=4, 4.9=4) i ROUND(4.1=4,4.9=5)....Ovaj paskal kod je ispravan, zato sto je promenljiva "s" real..pa moze /...



 
Odgovor na temu

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
80.87.240.*

Sajt: www.knjigaimena.com


+5 Profil

icon Re: for petlja, problemi sa unosom15.08.2011. u 07:53 - pre 154 meseci
Sve ovo ok ali zar nije lakše samo jedinicu (djeljenika) koristiti kao double da ne vršimo stalno konverziju?

Code:

        for (int i = 1; i <= n; i++) {
            s = s + (1.0 / i);
        }


Ispravite me ako griješim nisam javu takeo 100 godina :(
 
Odgovor na temu

[es] :: Java :: for petlja, problemi sa unosom

[ Pregleda: 2294 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.