» »

Pomoč pri programiranju z javo

Pomoč pri programiranju z javo

leško ::

zdravo

potreboval bi pomoč in sicer v kratkem imam izpit iz programiranja edini izpit kateri mi je še ostal. Ampak ker mi programiranje nikoli ni šlo dobro od rok se obračam na vaš forum ker sem slišal, da obvladate take stvari. Upam da bi mi lahko kdo rešil te naloge in mi zraven napisal kakšno razlago bil bi zelo hvaležen. Pa upam da nebo kakšnih komentarjev glede tega ker sem tukaj prosil za pomoč. Imam inštrukcije ampak jih je pri nas zelo težko najtin zato je moj inštruktor rekel naj se obrnem na ta forum za pomoč. pač vsi nemoremo vsega znati.
tukaj so naloge katere mi je prof. poslal programiramo pa v java jeziku

1. naloga: Kapitaliziranje niza
Napišite program, ki od uporabnika sprejme vhodni niz, sestavljen iz besed in ne-črk (beseda
je zaporedje ene ali večih zaporednih črk vse do naslednje ne-črke niza). Program naj prejeti
niz izpiše brez ne-črk, z izjemo presledka med besedami; in še: vsaka druga črka v izhodnem
nizu mora biti kapitalizirana. Izpis tako spremenjenega vhodnega niza naj se opravi v
samostojni subrutini.
Program naj uporabnika obvešča s kratkimi in jasnimi navodili (obvestili).
V programu boste potrebovali funkcijo za preverjanje ali je vhodni znak črka
Character.isLetter(ch) in funkcijo za kapitaliziranje dane črke
Character.toUpperCase(ch).

2. naloga: Risanje pravokotnikov

Imejmo risalno okno velikosti 800 X 600 pikslov. Napišite potrebno kodo za risanje črnih
pravokotnikov, katerih levo zgornje ogljišče leži na premici
y = 5 * x + 200.
Vsak naslednji pravokotnik naj bo za 50 pikslov bolj desno od predhodnega. Risanje
pravokotnikov naj se konča, ko bi katero njegovo ogljišče moralo ležati izven predpisane
risalne površine.
V orientacijo imate naslednjo kodo z vaj:
import java.awt.*;
import javax.swing.*;
public class FirstGraphics extends JPanel {
public static void main(String[] args) {
... // Kodo za kreiranje in prikaz risalnega okna
// si lahko ogledate na primeru iz vaj
// Tu nas ne zanima!
}
/*
* paintComponent() metoda narise vsebino risalne
* povrsine 800 X 600, prikazane v posebnem oknu.
*/
protected void paintComponent(Graphics g) {
// tu bi vstavili vaso kodo za risanje pravokotnikov
}
}

3. naloga: Sekvenca 3N+1

Na vajah in predavanjih smo se nekajkrat srečali s takoimenovano "Sekvenco 3N+1". Napišite
program, ki števila v sekvenci izpiše na zaslon v tabelarični obliki. Uporabnik naj ima
možnost izbrati koliko števil sekvence naj se izpiše v isti vrstici (in seveda začetno število
sámo). Program naj najprej preveri smiselnost uporabnikove izbire, če predpostavljamo, da
števila sekvence izpisujemo s sedmimi mesti, v vrstici zaslona pa lahko prikažemo 80 znakov.
Program naj uporablja za izračun naslednjega števila v sekvenci funkcijo, ki kot vhodni
parameter dobi trenutno število v sekvenci.

4. naloga: Metanje kocke

Napišite main() rutino programa, ki simulira metanje kocke in beleži število posameznih
izidov: kolikokrat se je obrnila 'enica', kolikokrat 'dvojka', itn. Simulirajte metanje kocke
toliko časa, dokler se eden od izidov ne pojavi 1000-krat. Izide beležite s switch stavkom;
na koncu izpišite število vseh metov in števila pojavitve posameznih izidov.
(Težja: Izris 'histograma' izidov po vrsticah: v 1. vrstici izpišemo zvezdice '*' za izide, ko se
je kocka obrnila na 'enico'. Za vsakih, na primer, 50 'enic' izpišemo eno zvezdico.
Nadaljujemo z izrisovanjem zvezdic: v naslednji vrstici izpišemo ustrezno število zvezdic
glede na vse 'dvojke', ki so se obrnile, itn.)

5.naloga: Zrcaljenje niza

Napišite program, ki od uporabnika sprejme vhodni niz, sestavljen iz besed in ne-črk (beseda
je zaporedje ene ali večih zaporednih črk vse do naslednje ne-črke niza). Program naj vhodni
niz izpiše prezrcaljen: zadnja črka vhodnega niza naj se izpiše kot prva, predzadnja kot druga,
itn. V zrcaljenem nizu naj bo med besedami le ena ne-črka.
Potrebovali boste funkciji za preverjanje ali je znak črka Character.isLetter(ch) in
funkcijo za branje znaka na i-tem mestu str.charAt(i).
(Težja: Organizirajte osrednji del programa kot funkcijo, ki vrne zrcaljeni niz, brez ne-črk.
Kako bi jo uporabili za testiranje ali je nek niz palindrom?)

6.naloga: Risanje krogov
Imejmo risalno okno velikosti 800 X 600 pikslov. Napišite potrebno kodo za risanje črnih
krogov (g.drawOval(x,y,50,50), kjer sta x in y levo zgornje ogljišče krogu
očrtanega kvadrata), katerih središča leže na premici
y = 5 * x + 200.
Vsak naslednji krog naj bo za 50 pikslov bolj desno od predhodnega, noben krog pa ne sme v
celoti ali le delno ležati izven predpisane risalne površine.
V orientacijo imate naslednjo kodo z vaj:
import java.awt.*;
import javax.swing.*;
public class FirstGraphics extends JPanel {
public static void main(String[] args) {
... // Kodo za kreiranje in prikaz risalnega okna
// si lahko ogledate na primeru iz vaj
// Tu nas ne zanima!
}
/*
* paintComponent() metoda narise vsebino risalne
* povrsine 800 X 600, prikazane v posebnem oknu.
*/
protected void paintComponent(Graphics g) {
// tu bi vstavili vaso kodo za risanje pravokotnikov
}
}

7. naloga: Metanje dveh kock

Napišite main() rutino programa, ki simulira metanje para kock in beleži vsote vrženih
kock. Vsota pik obeh kock skupaj po metu bo neko število med 2 in 12. Razdelimo te možne
vsote dveh kock na "Mejne vsote", ki naj bo skupina z vsotami 2, 3, 4, 5, 9, 10, 11 , 12 in
"Osrednje vsote", ki naj bo skupina z vsotami 6, 7, 8.
Program naj izpiše koliko je bilo vsot iz vsake skupine potem, ko smo par kock vrgli
1.000.000-krat.
(Težja: Pri kateri kakšni delitvi na Mejno in Osrednjo skupino se pojavi več izidov v Mejni
skupini, če le to polnimo postopoma: v prvem koraku naj bosta v njej le 2 in 12, v drugem
koraku 2, 12, 3, in 11, itn.)

8.naloga: Izpolnjevanje Loto napovedi
Imejmo razred kombLoto. Objekti tega razreda predstavljajo eno kombinacijo pri igri Loto.
Razred vsebuje 7 spremenljivk razreda, od num1 do num7, ki hranijo sedem številk z
vrednostmi med 1 in 39. Loto kombinacija se torej hrani v teh spremenljivkah.
Napišite razred kombLoto, ki bo imel dva konstruktorja (pozor, glejte pod Dodatno):
a) prvi naj ustvari objekt s podano Loto kombinacijo (val1, val2, ... , val7),
b) drugi naj ustvari objekt z naključno Loto kombinacijo.
Razred uporabite v programu za pomoč igralcu Lota pri izpolnjevanju napovedi. Program naj
igralcu v prvem koraku ponudi naključno kombinacijo napovedi; če se igralec strinja s
predlagano kombinacijo se ta zapiše, če ne, mu omogoči da spremeni eno, dve, itn. števili v
predlagani kombinaciji, napovedi. Postopek se ponovi za določitev naslednjih kombinacij. Ko
igralec konča z določanjem kombinacij, mu program vse izbrane kombinacije izpiše.
Dodatno: V osnovi naj program ne vsebuje preverjanja napovedi - ali so v napovedi enaka
števila - za morebitno vpeljavo preverjanja, pa dobite dodatne točke).

9.naloga: Urejevalnik besedila

V urejevalniku besedila imamo podatkovno strukturo za hranjenje znakov v vrstici in za
hranjenje vrstic teksta. Recimo, da za hranjenje znakov v vrstici uporabimo tabelo znakov
velikosti 80 (če predpostavimo, da v eno vrstico urejanega teksta lahko zapišemo največ 80
znakov). Potem za vsako vrstico teksta potrebujemo eno tako tabelo. V resnici je
najenostavneje uporabiti dvodimenzionalno tabelo: fiksne širine za znake v vrstici in
spremenljive dolžine za vrstice.
Napišite program za preprosto urejanje teksta, ki naj ima le štiri krmilne tipke: KEYLEFT,
KEYRIGHT, KEYUP, KEYDOWN (to so imena konstant za krmilne tipke). Pritisk ene od
teh tipk pomeni spremembo trenutne pozicije (mesta kurzorja) v urejevanem tekstu, ki jo
mora vsak urejevalnik sprotno ažurirati. Pritisk katere druge 'znakovne' tipke pa pomeni zapis
tega znaka na trenutno pozicijo.
Vaš program naj ima začetno trenutno pozicijo na prvem znaku prve vrstice. Vsakič, ko je
pritisnjena tipka KEYDOWN in je trenutna pozicija v spodnji vrstici urejanega teksta,
program ustvari novo 2D tabelo, katere dolžina bo za eno večja od prejšnje. Postopate, kot
smo videli pri delu z dinamičnimi tabelami. Za kopiranje uporabite metodo
System.arraycopy(staraTab, 0, novaTab, 0, staraTab.length).
Vse ostale krmilne tipke preprosto spreminjajo trenutno pozicijo v danih mejah (od 0 do 79,
od 0 do spodnje vrstice).
Program naj po vsaki spremembi izpiše 10 vrstic v okolici vrstice s trenutno pozicijo.

10. naloga: Izpisovanje niza

Napišite program, ki iz tipkovnice prebere besedo in jo ciklično izpiše na zaslon. Primer: če
uporabnik vpiše besedo ZVEZDA, naj program izpiše
ZVEZDA
VEZDAZ
EZDAZV
ZDAZVE
DAZVEZ
AZVEZD
Namig: i-ti znak niza dobimo z metodo charAt(i). Primer:
String str = "ZVEZDA";
System.out.println(str.charAt(5)); // izpiše se črka 'D'

11. naloga (dodatna): Evidenca študentov

Poenostavljen objekt za vodenje evidence študentov je zasnovan na naslednjem razredu:
public class Student {
public String ime; // ime študenta
public double kolokvij1, kolokvij2; // oceni kolokvijev
} // konec razreda Student
Napišite program za polnjenje evidence študentov preko tipkovnice. Vnašamo le ime in
priimek študenta, ostalo se bo vpisovalo kasneje. Evidenca je implementirana s tabelo, ki
dinamično raste s potencami števila 2. Začetna dolžina tabele študentov je 16. Ko je ta
premajhna, jo nadomestimo s tabelo dolžine 32, 64, itd. študentov. Postopate, kot smo videli
pri delu z dinamičnimi tabelami, za prepisovanje vsebin tabel uporabite metodo
System.arraycopy(staraTab, 0, novaTab, 0, staraTab.length).
Vpisovanje poteka v neskončni zanki, iz katere izstopimo z nizom "konec" namesto imena in
priimka študenta. Za primerjavo nizov uporabite str.equals("konec").

12.naloga: Razpolovitev niza

Napišite program, ki od uporabnika sprejme vhodni niz, sestavljen iz znakov (črk in ne-črk).
Program naj vhodni niz razpolovi v dva niza, lihiNiz in sodiNiz: znake vhodnega niza
naj izmenično dodaja lihemu in sodemu nizu; tako gre prvi znak vhodnega niza v lihiNiz,
drugi pa v sodiNiz, tretji spet v lihiNiz, itn.
Po izvedeni razpolovitvi naj program izpiše oba nova niza.
Namig: Spomnite se praznega niza in operatorja za spajanje niza in znaka (ki je enak, kot za
spajanje dveh nizov).
(Težja: V lihi in sodi niz razporedite le črke, kar pomeni, da ne-črke vhodnega niza preprosto
zavržete. Če vsebujeta lihi in sodi niz manj kot 20 črk, ju dopolnite s praznimi mesti " ".)
Potrebovali boste funkciji za preverjanje ali je znak črka Character.isLetter(ch) in
funkcijo za branje znaka na i-tem mestu str.charAt(i).

13.naloga: Risanje kvadratov
Imejmo risalno okno velikosti 800 X 600 pikslov. Dopolnite spodnjo kodo z risanjem 20
črnih kvadratov (g.drawRect(x,y,w,h), kjer sta x in y koordinati levega zgornjega
ogljišča, ki leži na premici
y = 2 * x + 50.
pikslov bolj desno od predhodnega. Začetna velikost kvadrata naj bo 300 pikslov.
V orientacijo imate naslednjo kodo z vaj:
import java.awt.*;
import javax.swing.*;
public class FirstGraphics extends JPanel {
public static void main(String[] args) {
... // Kodo za kreiranje in prikaz risalnega okna
// si lahko ogledate na primeru iz vaj
// Tu nas ne zanima!
}
/*
* paintComponent() metoda narise vsebino risalne
* povrsine 800 X 600, prikazane v posebnem oknu.
*/
protected void paintComponent(Graphics g) {
// tu bi vstavili vaso kodo za risanje pravokotnikov
}
}

14.naloga: Metanje treh kock
Napišite main() rutino programa, ki simulira 1.000.000 metov treh kock in šteje primere, ko
se dve kocki (od treh) obrneta na isto vrednost. Po predpisanem številu metov naj program
izpiše v koliko procentih vseh metov se je to res zgodilo.
(Težja: Izpišite histogram omenjenih dogodkov z zvezicami, pri čemer naj konstantno število
EVPERAST predstavlja eno zvezdico "*". Histogram izpišete tako, da za vsak možen izid
dveh enakih vrednosti izpišete v svojo vrstico ustrezno število zvezdic. Če bi se tako izmed
vseh metov katerikoli dve kocki na 'enko' obrnili 115-krat, bi izpisali
1:*****
če bi seveda konstanta EVPERAST imela vrednost 20. In tako naprej še za preostalih pet
možnosti.)

15.naloga: Izrisovanje vzorcev

Napišite program, ki v odvisnosti od parametra n izriše spodaj prikazan vzorec. Parameter n,
ki mora biti liho število, preberite s tipkovnice. Če prebrano število ni liho, ga povečajte za
ena.
n=1 n=3 n=5
* * *
*** ***
* *****
***
*

16.naloga: Izpisovanje niza
Napišite program, ki iz tipkovnice prebere besedo in jo s paroma zamenjanimi črkami izpiše
na zaslon. Primer: če uporabnik vpiše besedo ZVEZDA, program pare črk v tej besedi ZV,
EZ in DA, v novi besedi nadomesti s pari VZ, ZE in AD (v vsakem paru sta torej črki
zamenjani!). Na koncu izpiše besedo z zamenjanimi pari: VZZEAD.
Če dolžina prebrane besede ni soda, naj ji program na koncu doda presledek. Zaradi
enostavnosti predpostavimo, da so vnešene res le črke.
Namig: i-to črko niza dobimo z metodo charAt(i). Primer:
String str = "ZVEZDA";
System.out.println(str.charAt(5)); // izpiše se črka 'D'

17. naloga: Metanje dveh kock
Vsota pik po metu dveh kock je neko število med 2 in 12. Napišite main() rutino programa,
ki simulira metanje para kock in s tabelo števcev beleži kolikokrat se posamezna vsota pojavi
(to je tabela celih števil int[]): če je, na primer, vsota 7, poveča števec v sedmi celici tabele,
itn. Program naj izpiše vsebini dveh števcev z najvišjima vrednostima v tabeli po 1.000.000
metih.

18. naloga (dodatna): Evidenca avtomobilov
Poenostavljen objekt za vodenje evidence avtomobilov je zasnovan na naslednjem razredu:
public class Auto {
public String priimek; // ime lastnika
public int letnik; // letnik izdelave
public String reg; // registrska številka
} // konec razreda Auto
Napišite program za polnjenje evidence avtomobilov preko tipkovnice. Vnesti je potrebno
priimek lastnika, letnik in reg. številko avtomobila. Evidenca je implementirana s tabelo, ki
dinamično raste s potencami števila 2. Začetna dolžina tabele avtomobilov je 16. Ko je ta
premajhna, jo nadomestimo s tabelo dolžine 32, 64, itd. avtomobilov. Postopate, kot smo
videli pri delu z dinamičnimi tabelami, za prepisovanje vsebin tabel uporabite metodo
System.arraycopy(staraTab, 0, novaTab, 0, staraTab.length).
Vpisovanje poteka v neskončni zanki, iz katere izstopimo z nizom "konec" namesto priimka
lastnika. Za primerjavo nizov uporabite str.equals("konec").

Vem da je nalog veliko ampak upam da si bo kdo ki to ve vzel čas in pomagal ker prof. na faxu nam samo reče naj se sami znajdemo. pa upam da se ne boste norčevali sem se samo obrnil na vas ker potrebujem pomoč.
se vam že v naprej zahvaljujem
  • odklenil: bluefish ()

KaRkY ::

100€ za nalogo ti jih maš 18 tako da si lahko izračunaš dalje. Lahko pa podaš konkretna vprašanja kaj te muči in zraven primere kaj si že sam naredil. Brez tega mislim da ti noben tukaj nebo pomagal ker reševanje nalog se tukaj ne podpira.
When you look long into an abyss, the abyss looks into you

Zgodovina sprememb…

  • spremenil: KaRkY ()

_Dormage_ ::

In, če se slučajno najde kdo, ki za zabavo reši kakšno ga bodo tukaj napizdili, da nezna osnov :))

t3hn0 ::

public class Naloga17 {
	public static void main(String[] args) {
		int steviloPonovitev = 1000000;
		int[] tabela = {0,0,0,0,0,0,0,0,0,0,0,0,0};
		int k1, k2, vsota;
		for(int i = 0; i < steviloPonovitev; i++) {
			k1 = vrziKocko();
			k2 = vrziKocko();
			vsota = k1 + k2;
			tabela[vsota]++;
		}
		for( int i = 2; i < tabela.length; i++) {
			System.out.println(i+" tock: "+tabela[i]);
		}
	}

	private static int vrziKocko() {
		double d = Math.floor(Math.random()*6+1);
		int i = (int)d;
		if( i < 1 ) 	 i = 1;
		else if( i > 6 ) i = 6;
		return i;
	}
}


//edit: ker mi je glih dolgcajt na sihtu...
^.^

Zgodovina sprememb…

  • spremenil: t3hn0 ()

Spura ::

(frequencies (take 1000000 (repeatedly #(+ 2 (rand-int 6) (rand-int 6)))))

{2 27684, 3 55426, 4 83665, 5 110929, 6 138213, 7 166997, 8 138899, 9 111387, 10 83507, 11 55748, 12 27545}

technolog ::

Krajš:

for(;$i<10e6;@++$i)@$a[rand(1,6)+rand(1,6)]++;

Array
(
    [2] => 27722
    [3] => 55926
    [4] => 83379
    [5] => 111503
    [6] => 138894
    [7] => 166269
    [8] => 138822
    [9] => 110993
    [10] => 83288
    [11] => 55373
    [12] => 27831
)

Zgodovina sprememb…

Spura ::

Lol codegolfers. Dolzina v znakih je nepomembna, ce gre za isto stvar.
Sicer pa prva naloga:
	public static void main(String[] args) {
		String s = "ZVEZDA";
		LoopingIterator iter = new LoopingIterator(s);
		for (int i=0;i<s.length();i++) {
			for (int j=0;j<s.length();j++) {
				System.out.print(iter.next());				
			}
			iter.next();
			System.out.println();
		}
		
	}
	private static class LoopingIterator implements Iterator<Character> {
		private int i = 0;
		private String s;
		public LoopingIterator(String s) {
			this.s = s;
		}
		@Override
		public boolean hasNext() {
			return true;
		}
		@Override
		public Character next() {
			if (i == s.length()) {
				i = 0;
			}
			return s.charAt(i++);
		}
		@Override
		public void remove() {
			
		}
		
	}
:))

dasf ::

16. naloga ( v pythonu, da ne pomagam preveč) :)
niz = raw_input("Vnesi niz: ")+" "
print "".join([niz[i]+niz[i-1] for i in range(1,len(niz),2)])

leško ::

hvala vsem ki ste bili in ste še pripravljeni pomagati in rešiti naloge. sem vam zelo hvaležen. upam da se bo še kdo našel in rešil kakšno nalogo.

l.p.

Trubar ::

1. na hitro (ni stestirano :))


public String Subrutine(String mk)
{
  String[] mk2 = mk .split(" ");
  String out = "";

  for(int i=0;i<mk2 .length;i++)
  {
  if (length(mk2[i]) > 1)
     mk2[i].replace(0,1,mk2[i].substring(0,1).toUpperCase());
     out = out +  + " ";
  }

  result = out;
}

Subrutine("ena a dva d tri siri")
Ref exchange link:
https://www.binance.com/en/register?ref=VV7U3WUE
https://www.kucoin.com/r/rf/Hu6Rx2

Zgodovina sprememb…

  • spremenilo: Trubar ()

roba87 ::

Na hitrco 10 naloga. Probaj še naret po namigu.

/*
Napišite program, ki iz tipkovnice prebere besedo in jo ciklično izpiše na zaslon. Primer: če
uporabnik vpiše besedo ZVEZDA, naj program izpiše
ZVEZDA
VEZDAZ
EZDAZV
ZDAZVE
DAZVEZ
AZVEZD
Namig: i-ti znak niza dobimo z metodo charAt(i). Primer:
String str = "ZVEZDA";
System.out.println(str.charAt(5)); // izpiše se črka 'D'
 */
package test;

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

public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        // TODO code application logic here
        String niz;
        System.out.println("Vpiši besedo:");
        InputStreamReader reader = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(reader);
        niz = in.readLine();
        
        System.out.println("______________________");
        
        for(int i=0; i<niz.length();i++)
        {
            String n = new String(niz);
            n = n.substring(i);
            String n2 = new String(niz);
            n2 = n2.substring(0, i);
            System.out.println(n+n2);
        }  
    }
}

Spura ::

1. na hitro (ni stestirano)



Vsaka druga crka mora biti kapitalizirana.
public String routine(String str) {
    StringBuilder buf = new StringBuilder(str.length());
    boolean capital = false;
    for(char c : str.toCharArray()) {
        if (Character.isLetter(c)) {
            buf.append(capital ? Character.toUpperCase(c) : Character.toLowerCase(c));
            capital = !capital;
        } else if (c == ' ') {
            buf.append(c);
        } 
    }
    return buf.toString();
}

Ni treba komplicirat s spliti, replacei, substringi in podobnimi stvarmi, ki so se prekleto pocasne povrhu.

leško ::

zdravo
a je mogoče kdo še kakšno nalogo rešil. bil bi zelo hvaležen če bi mi lahko kdo še kakšno nalogo rešil. pa upam da brez kakšnih nepotrebnih komentarjev. ker imam izpit 21.9 in moram narediti samo še ta predmet kateri mi je ostal iz prvega letnika.

upam da bo kdo tako prijazen
hvala že v naprej

l.p.

nalogo 12 in 16 imam že rešeno

Zgodovina sprememb…

  • spremenil: leško ()

fantom333 ::

jaz bi tudi neki vprašal, imam seminarsko nalogo za naredit in ne znam velik programirati v javi. Temo seminarske naloge izbere študent sam. Glavni del seminarske naloge je program, s katerim rešimo zastavljen
problem. Program naj vključuje:
o Glavni meni (Ob vstopu v program mora le-ta uporabniku ponuditi ustrezen meni, realiziran z while
zanko). Klici iz glavnega menija naj bodo realizirani s pomočjo statičnih metod.
o Uporabo polj.
o Delo z datoteko (branje, pisanje).
o Varovalne bloke (za vnos podatkov).
o Smiselno uporabo vsaj enega lastnega razreda, zapisanega v samostojni datoteki.
Prosim, če mi kdo lahko pomaga nimam veliko časa a in moram se učit za izpit.
V naprej hvaležen.

vorantz ::

fantom333 je izjavil:

jaz bi tudi neki vprašal, imam seminarsko nalogo za naredit in ne znam velik programirati v javi. Temo seminarske naloge izbere študent sam. Glavni del seminarske naloge je program, s katerim rešimo zastavljen
problem. Program naj vključuje:
o Glavni meni (Ob vstopu v program mora le-ta uporabniku ponuditi ustrezen meni, realiziran z while
zanko). Klici iz glavnega menija naj bodo realizirani s pomočjo statičnih metod.
o Uporabo polj.
o Delo z datoteko (branje, pisanje).
o Varovalne bloke (za vnos podatkov).
o Smiselno uporabo vsaj enega lastnega razreda, zapisanega v samostojni datoteki.
Prosim, če mi kdo lahko pomaga nimam veliko časa a in moram se učit za izpit.
V naprej hvaležen.


http://www.freelancer.com/
Najdi kake indijce

milc ::

Včasih je manj več...
  public static void main(String[] args) {
    String s = "ZVEZDA";
    int l = s.length();
    for ( int i=0; i<l; i++ ) {
      System.out.print(s.substring(i,l) + s.substring(0,i) + "\n");
    }
  }

milc ::

  public static void main(String[] args) {
    // Naloga 10:
    String s = "ZVEZDA";
    int l = s.length();
    System.out.print("Naloga 10:\n");
    for ( int i=0; i<l; i++ ) {
      System.out.print(s.substring(i,l) + s.substring(0,i) + "\n");
    }

    // Naloga 16:
    s = "ZVEZDAT";
    l = s.length();
    System.out.print("\nNaloga 16:\n");
    if (l % 2 == 1) {
      s=s.concat(" ");
      l=s.length();
    }
    for ( int i=0; i<l; i=i+2 ) {
      System.out.print(s.substring(i+1,i+2) + s.substring(i,i+1));
    }

    // Naloga 12:
    System.out.print("\nNaloga 12:\n");
    s = "a b c d e   fghijklmno";
    l = s.length();
    String lih=""; String sod="";
    for ( int i=0; i<l; i=i+2 ) {
      lih = lih + s.charAt(i);
      if ((i+1)<l) {
        sod = sod + s.charAt(i+1);
      }
    }
    System.out.print("Lih: " + lih + "\nSod: " + sod + "\n");

    // Naloga 12: Tezja
    System.out.print("Naloga 12: Tezja\n");
    s = "a b c d e   fghijklmno";
    l = s.length();
    lih=""; sod="";
    char c;
    for ( int i=0; i<l; i=i+2 ) {
      c = s.charAt(i);
      if (Character.isLetter(c)) {
        lih = lih + c;
      }
      if ((i+1)<l) {
        c = s.charAt(i+1);
        if (Character.isLetter(c)) {
          sod = sod + c;
        }
      }
    }

    for(;lih.length() < 20; lih = lih + " ");
    for(;sod.length() < 20; sod = sod + " ");

    System.out.print("Lih: '" + lih + "' " + lih.length() + "\nSod: '" + sod + "' " + sod.length() + "\n");

  }

Spura ::

milc je izjavil:

Včasih je manj kode več alokacij...

Dobr si to zadel.

milc ::

Spura je izjavil:

milc je izjavil:

Včasih je manj kode več alokacij...

Dobr si to zadel.


LoopingIterator varianta se izvede v 14,623 ms moja primitivna pa v 5,731 ms.

Spura ::

Iterator, ki boxa vsak znak, je pocasnejsi? :O To pa ze ne....
Nekdo je falil smajli in se mi zdi da se ne zaveda koliko alokacij dela on sam. Poleg tega alokacije ne upocasnjujejo kode v kateri so toliko, kolikor upocasnjujejo kompletno unrelated kodo, ki se izvrsuje ko se prozi GC. Ker alokacije se izvajajo na vrhu compactanega heapa, GC pa mora izvajat mark and sweep in tudi compacting fragmentiranega memorya. Anyhoo...

Recimo tvoja naloga 10:
Ce je N stevilo znakov v besedi.
N x new StringBuilder
2N x new char[] (vec, pri daljsi stringih, ker pride do resizeov string builderja).
3N x new String

Recimo tole:
		char[] s = "ZVEZDA".toCharArray();
		int len = s.length;
		StringBuilder buf = new StringBuilder(len*len+len);
		for(int i = 0;i < len;i++) {
			buf.append(s, i, len-i);
			buf.append(s, 0, i);
			buf.append('\n');
		}
		System.out.print(buf);

2 x new char[]
1 x new StringBuilder
1 x new String

To, da se zadevi, vsaj priblizno enako hitro izvajata je testament genialnosti JVM ko pride do malih alokacij.
Je pa tle najvecji potrosnik itak pisanje v konzolo. Stvar je taka, pri takih osnovnosolskih primerih obseg definitivno ni dovolj velik, da bi se alociranje velike kolicine objektov poznalo performancno.

Recimo tale while loop, ki ti ga je ratalo v for loop zbasat:
for(;sod.length() < 20; sod = sod + " ");

To je ubstvu naslednja koda:
while(sod.length() < 20) {
    sod = new StringBuilder(sod).append(" ").toString();
}
S tem da valda vsak nov stringbuilder objekt je nov char[] zadaj, in vsak toString() call je nov String objekt z novim char[] zadi in potem kopiranje iz SB char[] v String char[]. In to delas za vsak obhod zanke, razen ce JVM kej posebi optimizira.

milc ::

Analitično:
Časovna kompleksnost tvojega algoritma je c*n*n, mojega pa, kot si zapisal, c*n. Pri večjih nizih iterator varianta porabi še več časa. Pa ne zaradi iteratorja ampak zaradi dvojne for zanke, ki vsakič kliče iterator.

Empirično:
Performančni testi okleščene kode brez konzole dajo naslednje rezultate:
len one two
600 10,2ms 2,1ms
6000 96,1ms 48,1ms
60000 8,8s 2,4s
600000 893,8s 361,6s

Koda uporabljena za test:

    String t = "";
    pf.checkPoint("one");
      LoopingIterator iter = new LoopingIterator(s);
      for (int i=0;i<s.length();i++) {
          for (int j=0;j<s.length();j++) {
                iter.next();
          }
          iter.next();
      }
    pf.endCheckPoint();

    pf.checkPoint("two");
      int l = s.length();
      for ( int i=0; i<l; i++ ) {
        t = s.substring(i,l) + s.substring(0,i);
      }
    pf.endCheckPoint();
    pf.end();

Zgodovina sprememb…

  • spremenil: milc ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Naloge

Oddelek: Programiranje
273849 (2180) LordiBoy
»

Nemorem rešit ene naloge z c++ (sem začetnik) (strani: 1 2 )

Oddelek: Programiranje
6810020 (5758) technolog
»

Pomoč pri programiranju v C++

Oddelek: Programiranje
141725 (1292) amacar
»

[JAVA] help

Oddelek: Programiranje
141509 (1223) keworkian
»

c++ naloge

Oddelek: Programiranje
92786 (2410) l0g1t3ch

Več podobnih tem