Forum » Programiranje » Naloga (Java)
Naloga (Java)
Ciklamen ::
Pozdravčič.
Imam eno question, in sicer kako bi:
S pomocjo “risanja” v dvodimenzionalno tabelo narišite stolpicni diagram, ki predstavlja vsebino
tabele PODATKI (tipa int[]).
Malo samo oporne točke bi rabil, kaj uporabit, kako itd. :)
Hvala že v naprej!
Imam eno question, in sicer kako bi:
S pomocjo “risanja” v dvodimenzionalno tabelo narišite stolpicni diagram, ki predstavlja vsebino
tabele PODATKI (tipa int[]).
Malo samo oporne točke bi rabil, kaj uporabit, kako itd. :)
Hvala že v naprej!
- End of the Post ->
sandmat ::
narediš 2d tabelo, ki ima 2. dimenzijo velikosti max(podatki), notri po vrsti filaš kvadratke(ascii: B2) toliko(od 0-n), kjer je n i-ti podatek v podatkih. vsak int v 2d tabeli izpišeš kot char in boš dobil lep histogram
Ciklamen ::
Aja naj še povem, da vsak stolpec histograma vsebuje 3 znake (+++ ali --- ali ***), ter da je največji podatek v PODATKI enak višini histograma, ter razmak med vsakim stolpcem 2 mesti.
- End of the Post ->
sandmat ::
no, pol pa B2 zamenjaj z +++ in še enkrat gor preberi kar sm ti napisal. tisto o višini histograma sm ti tud napisal, kako dobiš.
Ciklamen ::
nightrage, to imamo za seminarsko na faksu, kaj druga, kot spisat kodo ne pride v poštev :)
- End of the Post ->
sandmat ::
uh, ja štekam, kaj naj bi stvar delala. Jst sm ti pejstal neki mal drugačnega na ZS. :) no, upam, da si opravil zagovor, če si ga imel :)
technolog ::
Tole je moja koda, samo ne je prekopirat, ker te bo Fuerst "zašil".
public class Diagram {
private static final int[] PODATKI = {15, 21, 7, 12, 18};
private static final int MAX_VISINA = 10;
private static final int SIRINA_STOLPCA = 3;
private static final int RAZMAK_MED_STOLPCI = 2;
private static final char[] POLNILO = {'+', '-', '*', 'o', 'x'};
public static void main(String[] args) {
int najvec=Integer.MIN_VALUE;
for (int i=0; i<PODATKI.length; ++i) najvec=Math.max(najvec, PODATKI[i]);
for (int i=0; i<MAX_VISINA; ++i) {
for (int j=0; j<PODATKI.length; ++j) {
if ((int)Math.round(1.0*PODATKI[j]/najvec*MAX_VISINA) >= MAX_VISINA-i) {
for (int k=0; k<SIRINA_STOLPCA; ++k) System.out.print(POLNILO[j]);
for (int k=0; k<RAZMAK_MED_STOLPCI; ++k) System.out.print(" ");
} else {
for (int k=0; k<RAZMAK_MED_STOLPCI+SIRINA_STOLPCA; ++k) System.out.print(" ");
}
}
System.out.println();
}
}
} Zgodovina sprememb…
- spremenil: technolog ()
Ice-Heki ::
No, jest sm naredu sicer z več metodami (razbil technologov main na več delov) zaradi možnih nadgradenj (pa da sam argumente menjam). Vprašanje je, kaj bomo dobili jutri zjutraj ...
Ciklamen ::
public class Naloga2 {
private static final int[] Podatki = {15,21,7,12,18};
private static final int Visina = 10;
private static final int Sirina = 3;
private static final int Razmak = 2;
private static final char[] Polnilo = {'+', '-', '*', '|', 'x'};
public static void main(String[] args) {
izrisiTabelo();
int MaxSirinaTabele = 5*3+4*2;
int skSirStolpca = Sirina + Razmak;
}
private static char[][] izpisTabele() {
char[][] izpisTabela = new char[Visina][(Sirina+Razmak)*Polnilo.length];
//poišče indeks največjega člena v tabeli.
int pravaVisina = Visina - 1;
int indeksNajvecjega = 0;
indeksNajvecjega = indeksNajvecji();
for(int i = 0; i < Polnilo.length; i++) {
// Izpisujemo vrstico
int vrstica = (Podatki[i]/2);
if(i == indeksNajvecjega) {
vrstica = pravaVisina;
// Izpisujemo Polnilo (od začetnega polnila proti zadnjemu)
}
for(int j = 0; j < vrstica; j ++) {
izpisTabela[j][i] = Polnilo[i];
}
}
return izpisTabela;
}
//Preverja, ali je število največje in ga poišče v podatkih ter določi kot največjo vrednost za diagram
private static int indeksNajvecji() {
int idNaj = 0;
for (int d = 0; d < Podatki.length; d++) {
if (Podatki[d] > idNaj) {
idNaj = d; //Vračamo indeks in ne vrednost podatka
}
}
return idNaj;
}
private static void izrisiTabelo() {
char[][] izpisTabela = izpisTabele();
//Izpisujemo višino stolpcev, da ne gredo prek določene vrednosti
int pravaVisina = Visina - 1;
for (int i = pravaVisina; i > 0; i--) {
for(int j = 0; j < Podatki.length; j++) {
//Trikrat se ponovi izpis Polnilo, da dobimo 3 stolpce z polnilom
for(int l = 0; l < Sirina; l++) {
System.out.print(izpisTabela[i][j]);
}
//Izpišemo Razmak med stolpci, kot od nas zahteva naloga (ter tudi zaradi lepše preglednosti)
for(int stolpec = 0; Razmak > stolpec; stolpec++) {
System.out.print(" ");
}
}
System.out.println();
}
}
}Ekola, to je moja verzija, ena izmed mnogih rešitev :)
- End of the Post ->
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | Java zvezdiceOddelek: Programiranje | 1448 (1252) | mihor |
| » | [android] vstavljanje slikeOddelek: Programiranje | 1381 (1278) | messi |
| » | [android] crashOddelek: Programiranje | 1512 (1321) | messi |
| » | [JAVA]Kako dostopati do privaten konstante podrazreda iz nadrazredaOddelek: Programiranje | 1370 (1298) | alexa-lol |
| » | [C++] for {}Oddelek: Programiranje | 1826 (1520) | Gundolf |
