Gå til innhold

Anbefalte innlegg

Noen som kan hjelpe meg litt på vei på denne oppgava?

 

Lag en metode, maxTab(), som har referanser til tre heltallstabeller, tabell aTab, bTab og cTab, som formelle parametre. Metoden skal for hver posisjon i tabellen cTab sette inn det største av elementene i samme posisjon i aTab og bTab. Metoden skal returnere antall elementer som er lagt inn i cTab.

Test metoden ved å skrive et enkelt program som bruke den.

Hint:

• Metodehodet kan se slik ut:

public static int maxTab(int[] aTab, int[] bTab, int[] cTab)

• Lengden på den korteste tabellen er antallet elementer som kan gås gjennom.

Lenke til kommentar
Videoannonse
Annonse

Beklager, forstår ikke oppgaven helt, skal lese den enda en gang til...

 

Du skal lage en metode maxTab() med 3 parametere.

Også kommer det jeg ikke skjønner...

 

For meg høres det ut som du skal lese i cTab, legge til det største tallet i cTab inni i aTab og bTab, også returnere hvor mange elementer som er lagt til i cTab som alltid vil være 0...

 

Hmm... kanskje motsatt?

Du skal legge til det største elementene i A og B inne i C, også retunere et tall? Hvis a og b er tom så returnerer du 0, hvis en av dem er tom, så returner 1, hvis begge inneholder noe så retuner 2 ?

 

Eller har jeg misforstått?

Lenke til kommentar

Jeg forstår ikke oppgaven jeg heller...

Har en til, denne er sikkert litt tydligere?

Vi vil undersøke hvor mange forekomster det er av hvert av heltallene fra og med 0 til og med 9 i en tabell.

Lag en metode som i hver posisjon i = 0,1,…,9 i tabellen forekomster, setter inn antall forekomster av verdien i heltallstabellen dTab. De to tabellene skal overføres som parametre.

Eksempel: Hvis

dTab = {0,3,4,231,6,2,-7,1,0,0,8,7,0,4,6,7,3,2,3,1,8}

så skal vi få

forekomster={4,2,2,3,2,0,2,2,2,0}

Lag en metode som skriver ut et liggende histogram over antall forekomster av verdiene. For eksempelet over skal det skrives ut

0 ****

1 **

2 **

3 ***

4 **

5

6 **

7 **

8 **

9

Lenke til kommentar

Metoden skal for hver posisjon i tabellen cTab sette inn det største av elementene i samme posisjon i aTab og bTab. Blir ikke det slik.


public static int maxTab(int[] aTab, int[] bTab, int[] cTab) {

 for(int i=0;i<cTab.length;i++) {

 	if(aTab[i]>=bTab[i]) {

                                   //aTab[i] er størst

   cTab[i]=aTab[i];

 	} else {

                                   //bTab[i] er størst

   cTab[i]=bTab[i];

 	}

 }

 return cTab.length;

}

 

Returverdien vil vel alltid være lengden av CTab, ettersom man "for hver posisjon i tabellen cTab sette inn..."

Lenke til kommentar

Den er tydeligere ja, ikke så vanskelig, man har flere måter man kan løse dette på...

 

f.eks. en while inni en for...

Det som står under vil sansyneligvis ikke fungere helt, siden jeg ikke har prøvd å kompilere det, men du forstår sikkert prinisippet...


for (int i = 0, i <=9, i++)

 System.out.println(i);

   //så lager du en while løkke som går gjennom hele listen til den er tom...

   if verdien du får ut er det samme som i så System.out.print("*"); //legg merke til at det er print istedenfor println.

 

Forstår? For når den er ferdig med whilen for tallet 0 så går den ut, og da sier for løkken at while skal kjøre en gang til, bare denne gangen med 1... også kjører den 9 ganger.

 

Hvilket fag/kurs er det du tar?

Lenke til kommentar

Ska se om jeg får det til..

Jeg tar programmering1 på datalinja på høgskolen i Stavanger.

Jeg har ikke sjans til å gå på forelesninger, er bosatt i Haugesund og har farspermisjon(flytter til Stavanger til høsten). Derfor bruker jeg forumet! Mye hjelp å få her!

Lenke til kommentar

Tror jeg trenger litt hjelp her. Her er det jeg har gjort til nå.

 

class Tabell {

public static void main(String[] args) {

int[] dTab = {0,3,4,231,6,2,-7,1,0,0,8,7,0,4,6,7,3,2,3,1,8};

for (int indeks = 1; indeks < dTab.length; indeks++) {

for (int i = 0; i <=9; i++){

System.out.println(i);

}

System.out.print("*");

}

}

}

 

Unwill kom med dette tipset:

for (int i = 0, i <=9, i++)

System.out.println(i);

//så lager du en while løkke som går gjennom hele listen til den er tom...

if verdien du får ut er det samme som i så System.out.print("*"); //legg merke til at det er print istedenfor println.

 

Har jeg gjort noe riktig?

Lenke til kommentar

1 minutt til forelesning starter... må løpe..

men jeg tenkte mere sånn egentlig;

 


 for (int i = 1; i<=9; i++){

 	System.out.println("");

 	System.out.print(i);

 	for (int j = 0; j < dTab.length; j++){

   if (dTab[j] == i){

   	System.out.print("*");

   }

 	}

 }

Lenke til kommentar

kremt... kradratisk kjøretid ja.... ikke mye kult det, prøv heller denne

public void skrivForekomster (int[] tall) {

   int siffer[] = new int[10];

   

   for(int i=0;i<tall.lenght;i++)

       siffer[tall[i]]++;

   for(int i=0;i<siffer.length;i++)

       System.out.println("Forekomster av " + i + " : " + siffer[i]);

}

Lenke til kommentar

MailMan13;

Smart! Tenkte ikke på at man kunne gjøre det på denne måten... du får nok ned kjøretiden litt ja. Men den for inne i en for var det første jeg kom på.

 

Men da får du ikke til denne utskriften da;

 

gol skrev:

For eksempelet over skal det skrives ut

0 ****

1 **

2 **

Lenke til kommentar

public void skrivForekomster (int[] tall) { 

   int siffer[] = new int[10]; 

   String stjerner = "**********";



   for(int i=0;i<tall.lenght;i++) 

       siffer[tall[i]]++; 

   for(int i=0;i<siffer.length;i++) 

       System.out.println("i + " " + stjerner.substring(0, siffer[i])); 

} 

Det gjør du nå ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...