8 svar
334 visningar
gulfi52 896 – Fd. Medlem
Postad: 27 mar 2017 19:26

Vektorer

"Undersök om elementen är sorterade i växande ordning"

 

Jag är inte hemma  i programmering men jag vill väldigt gärna lära mig. Så här är mitt försök och problem:

Jag kanske har kommit på något - och mitt mål är inte att bli perfekt utan jag vill veta om jag ALLS är i närheten av att göra något som fungerar.

En fråga jag har i många uppgifter är vart man hamnar med breaksatsen och om det finns något annat liknande som får mig dit jag vill.

Mitt försök till uppgoiften ovan är

 

public static boolean isSorted(int[] v){

int i = 1;

while (i < v.length) {

if ( v[i-1) < v[i]) {

i++

} else {

return false;

break; //VART HAMNAR JAG EFTER BREAK HÄR?

}

}

return true; //tänker att om inte man kommit till else och false har returnerats så hamnar man här när i kommit upp till < v.length och då returneras true för då har alla element varit i ordning. MEN jag är osäker på om man hamnar här efter break ändå?

}

}

Yngve 40279 – Livehjälpare
Postad: 27 mar 2017 19:32 Redigerad: 27 mar 2017 19:33
gulfi52 skrev :

"Undersök om elementen är sorterade i växande ordning"

 

Jag är inte hemma  i programmering men jag vill väldigt gärna lära mig. Så här är mitt försök och problem:

Jag kanske har kommit på något - och mitt mål är inte att bli perfekt utan jag vill veta om jag ALLS är i närheten av att göra något som fungerar.

En fråga jag har i många uppgifter är vart man hamnar med breaksatsen och om det finns något annat liknande som får mig dit jag vill.

Mitt försök till uppgoiften ovan är

 

public static boolean isSorted(int[] v){

int i = 1;

while (i < v.length) {

if ( v[i-1) < v[i]) {

i++

} else {

return false;

break; //VART HAMNAR JAG EFTER BREAK HÄR?

}

}

return true; //tänker att om inte man kommit till else och false har returnerats så hamnar man här när i kommit upp till < v.length och då returneras true för då har alla element varit i ordning. MEN jag är osäker på om man hamnar här efter break ändå?

}

}

Break-satsen kommer aldrig att exekveras eftersom du innan dess har gjort return false, vilket avbryter exekveringen omedelbart.

gulfi52 896 – Fd. Medlem
Postad: 27 mar 2017 20:07 Redigerad: 27 mar 2017 20:08
Yngve skrev :
gulfi52 skrev :

"Undersök om elementen är sorterade i växande ordning"

 

Jag är inte hemma  i programmering men jag vill väldigt gärna lära mig. Så här är mitt försök och problem:

Jag kanske har kommit på något - och mitt mål är inte att bli perfekt utan jag vill veta om jag ALLS är i närheten av att göra något som fungerar.

En fråga jag har i många uppgifter är vart man hamnar med breaksatsen och om det finns något annat liknande som får mig dit jag vill.

Mitt försök till uppgoiften ovan är

 

public static boolean isSorted(int[] v){

int i = 1;

while (i < v.length) {

if ( v[i-1) < v[i]) {

i++

} else {

return false;

break; //VART HAMNAR JAG EFTER BREAK HÄR?

}

}

return true; //tänker att om inte man kommit till else och false har returnerats så hamnar man här när i kommit upp till < v.length och då returneras true för då har alla element varit i ordning. MEN jag är osäker på om man hamnar här efter break ändå?

}

}

Break-satsen kommer aldrig att exekveras eftersom du innan dess har gjort return false, vilket avbryter exekveringen omedelbart.

vart hamnar jag efter return false har körts? hamnar jag i return true?

Yngve 40279 – Livehjälpare
Postad: 27 mar 2017 21:15
gulfi52 skrev :
Yngve skrev :
gulfi52 skrev :

"Undersök om elementen är sorterade i växande ordning"

 

Jag är inte hemma  i programmering men jag vill väldigt gärna lära mig. Så här är mitt försök och problem:

Jag kanske har kommit på något - och mitt mål är inte att bli perfekt utan jag vill veta om jag ALLS är i närheten av att göra något som fungerar.

En fråga jag har i många uppgifter är vart man hamnar med breaksatsen och om det finns något annat liknande som får mig dit jag vill.

Mitt försök till uppgoiften ovan är

 

public static boolean isSorted(int[] v){

int i = 1;

while (i < v.length) {

if ( v[i-1) < v[i]) {

i++

} else {

return false;

break; //VART HAMNAR JAG EFTER BREAK HÄR?

}

}

return true; //tänker att om inte man kommit till else och false har returnerats så hamnar man här när i kommit upp till < v.length och då returneras true för då har alla element varit i ordning. MEN jag är osäker på om man hamnar här efter break ändå?

}

}

Break-satsen kommer aldrig att exekveras eftersom du innan dess har gjort return false, vilket avbryter exekveringen omedelbart.

vart hamnar jag efter return false har körts? hamnar jag i return true?

Du hamnar där anropet till isSorted(vec) görs.

gulfi52 896 – Fd. Medlem
Postad: 27 mar 2017 21:29
Yngve skrev :
gulfi52 skrev :
Yngve skrev :
gulfi52 skrev :

"Undersök om elementen är sorterade i växande ordning"

 

Jag är inte hemma  i programmering men jag vill väldigt gärna lära mig. Så här är mitt försök och problem:

Jag kanske har kommit på något - och mitt mål är inte att bli perfekt utan jag vill veta om jag ALLS är i närheten av att göra något som fungerar.

En fråga jag har i många uppgifter är vart man hamnar med breaksatsen och om det finns något annat liknande som får mig dit jag vill.

Mitt försök till uppgoiften ovan är

 

public static boolean isSorted(int[] v){

int i = 1;

while (i < v.length) {

if ( v[i-1) < v[i]) {

i++

} else {

return false;

break; //VART HAMNAR JAG EFTER BREAK HÄR?

}

}

return true; //tänker att om inte man kommit till else och false har returnerats så hamnar man här när i kommit upp till < v.length och då returneras true för då har alla element varit i ordning. MEN jag är osäker på om man hamnar här efter break ändå?

}

}

Break-satsen kommer aldrig att exekveras eftersom du innan dess har gjort return false, vilket avbryter exekveringen omedelbart.

vart hamnar jag efter return false har körts? hamnar jag i return true?

Du hamnar där anropet till isSorted(vec) görs.

va?? men hur hamnar jag efter anropet så programmet fortsätter?

nu är jag verkligen förvirrad

 

va??

Yngve 40279 – Livehjälpare
Postad: 27 mar 2017 21:54

Ja förlåt jag menar att du hamnar efter anropet till isSorted()

gulfi52 896 – Fd. Medlem
Postad: 28 mar 2017 07:42
Yngve skrev :

Ja förlåt jag menar att du hamnar efter anropet till isSorted()

Okej tack!

Hur gör man om man bara vill komma ur närmaste loopen -

1. som här från if-else satsen till for satsen?

eller 2. från if-else satsen OCH for satsen men ut i isSorted() "området"?

Yngve 40279 – Livehjälpare
Postad: 28 mar 2017 07:44
gulfi52 skrev :
Yngve skrev :

Ja förlåt jag menar att du hamnar efter anropet till isSorted()

Okej tack!

Hur gör man om man bara vill komma ur närmaste loopen -

1. som här från if-else satsen till for satsen?

eller 2. från if-else satsen OCH for satsen men ut i isSorted() "området"?

Ett break avbryter loopen.

PeterÅ 842
Postad: 28 mar 2017 17:17 Redigerad: 28 mar 2017 17:24

Ett alternativ med relevant användning av break:

    public static void main(String[] args)
    {
        int[] v = { 1, 2, 3, 4};
       
        if (isSorted(v))
        {
            // ... sorterad korrekt
        }
    } // end main()

    public static boolean isSorted(int[] v)
    {
        int i, len;
        boolean result = true; // Antag att allt är sorterat i rätt ordning
        len = v.length;

            for (i = 1; i < len; i++)
            {
                if (v[i - 1] > v[i])
                {
                    result = false; // Fel ordning
                    break;          // Avbryt (hoppa ur) for-loopen
                }
            } // End for   
            return result;
    }

Svara
Close