Gå til innhold

Anbefalte innlegg

Skal lage et program med følgende utskrift...:

 

Eks.:

 

Oppgi storrelsen paa sekvensen : x

 

Tast inn et positivt heltall 1: x

Sortert sekvens vil da være: x

 

Tast inn et positivt heltall 2: x

Sortert sekvens vil da være: x x

 

*// osv...

 

Får en masse problemer med dette, blir feil uansett liksom... :hmm:

 

Anyone?

 

Takk :thumbup:

Lenke til kommentar
Videoannonse
Annonse

Dette er kildekoden jeg har prøvd å bruke...:

 

package innl_1a;

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

Scanner tastatur = new Scanner (System.in);

System.out.print("Oppgi storrelsen paa sekvensen: ");

int antall = tastatur.nextInt();

int[] tabell = new int[antall];

System.out.println(antall);

System.out.println("");

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

System.out.println("Tast inn et positivt heltall " + (i+1) + ": ");

int tall = tastatur.nextInt();

int posisjon = i;

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

if(tabell[in] > tall) {

for(int inn = antall-1; inn > in; inn--) {

tabell[inn] = tabell[inn-1];

posisjon = in;

break;

}

}

tabell[posisjon] = tall;

System.out.print("Sortert sekvens vil da være: ");

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

System.out.printf("%d ", tabell[innn]);

}

System.out.print("\n");

}

}

}

}

Lenke til kommentar

Her har jeg først lest alle tallene inn i tabellen og så sortert tabellen med en Quicksort algoritme, la også scanneren inn i en egen metode for oversikten sin del.

import java.util.Scanner;
public class SortTabell {
   public static int lesInn(){
       Scanner tastatur = new Scanner (System.in);
       return tastatur.nextInt();
   }
   //Quicksort Algoritme
   public static int[] sortTab(int[] tab, int v, int h){
      int mid,tmp,i,j;
      i = v;
      j = h;
      mid = tab[(v + h)/2];
      do {
          while(tab[i] < mid)
              i++;
          while(mid < tab[j])
              j--;
          if (i <= j) {
              tmp = tab[i];
              tab[i] = tab[j];
              tab[j] = tmp;
              i++;
              j--;
          }
      } while (i <= j);
      if (v < j) sortTab(tab,v,j);
      if (i < h) sortTab(tab,i,h);
       return tab;
   }
   
   public static int [] sortTab(int[] tab){
       int[] tmpTab = sortTab(tab,0,tab.length-1);
       return tmpTab;
   }
   // main her
   public static void main(String[] args) {
       System.out.println("Oppgi storrelsen paa sekvensen: ");
       int antall = lesInn();
       int[] tabell = new int[antall];
       System.out.println(antall + "\n");
       for (int i = 0; i < tabell.length; i++) {
           System.out.println("Tast inn et positivt heltall " + (i+1) + ": ");
           tabell[i] = lesInn();
       }
       int[] sortTabell = sortTab(tabell);        
       System.out.print("Sortert sekvens vil da være: ");
       for(int innn = 0; innn <= sortTabell.length-1; innn++) {
           System.out.print(sortTabell[innn] + " ");
       }
       System.out.print("\n");
   }
}

Lenke til kommentar

Hvis du begynner med en tom int-array som tror jeg dette enklest gjøres ved innsettings-prinsippet, siden tallene alltid er sortert. elelr er dette en algortime oppgave der kjøretiden er det som skal testes?

Du kan jo bruke en ArrayList med integer-objekter også hvis det er "lov" ? det forenkler endel.

Endret av rusolvan
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...