• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Działanie continue w c++.

Cloud VPS
0 głosów
293 wizyt
pytanie zadane 13 września 2020 w C i C++ przez Pelo Użytkownik (520 p.)
#include <iostream>
#include <cmath>
using namespace std;

void sort()
{
    static int b=1;
    int tab[8]={1, 6, 3, 8, 6, 2, 3, 4};
    while(b>0)
    {
        for(int k=0;k<8;k++)
        {
            
            if(tab[k]>tab[k+1])
            {int z=tab[k+1];
            tab[k+1]=tab[k];
            tab[k]=z;
            b++;
            continue;
            }
            
            
            }
            if(b>1)
            b=1;
            else
            b=0;
        }
        for(int k=0;k<8;k++)
        {
            cout<<tab[k]<<" ";
        }
    }


int main ()
{
    sort();
}

Cześć. Zastanawia mnie dlaczego mój program bez linijki z continue; zamiast elementu tablicy wyrzucał coś takiego:  -1868221920 1 2 3 3 4 6 6 .

W jaki sposob continue zapobiegło temu?

komentarz 13 września 2020 przez Pelo Użytkownik (520 p.)
Jeżeli macie jakieś uwagi co do kodu to też chętnie poczytam :)
2
komentarz 13 września 2020 przez Oscar Nałogowiec (29,360 p.)

@Pelo,
 Cóż, sortowanie bąbelkowe. Pojedynczy przebieg zamienia miejscami elementy, które są w złej kolejności. Przebiegi powtarza się do momentu, aż wystąpi "pusty" przebieg - taki który nic nie zamieni. Potrzebny do tego jest jakiś znacznik albo licznik wskazujący czy albo ile razy dokonano zamiany w danym przebiegu. Naturalne jest więc zerowanie tego znacznika/licznika przed rozpoczęciem każdego przebiegu, a więc zaraz na początku pętli (u ciebie) while, a nie raz, na początku funkcji. Ponieważ należy wykonać co najmniej 1 przebieg (nawet jeśli tablica już jest posortowana to tak dla sprawdzenia) bardziej naturalne będzie pętla do ... while. Wtedy nie będziesz potrzebował dziwnych konstrukcji w kodzie.

1 odpowiedź

+1 głos
odpowiedź 13 września 2020 przez Kabuuz Bywalec (2,820 p.)
wybrane 13 września 2020 przez Pelo
 
Najlepsza
Cześć,

Ogólnie masz tablice 8-elementową. W pętli iterujesz od 0 do 7. W tej samej pętli dobierasz się do elementu i+1, skoro i na końcu jest równe 7 to dobierasz się do tablica[8] czyli bierzesz element, który nie jest w tablicy i tam moze być wszystko - ta spora ujemna liczba.
komentarz 13 września 2020 przez Pelo Użytkownik (520 p.)
Dziękuję bardzo!

Podobne pytania

+2 głosów
1 odpowiedź 743 wizyt
pytanie zadane 12 lutego 2022 w C i C++ przez Yacob Nowicjusz (190 p.)
0 głosów
2 odpowiedzi 581 wizyt
pytanie zadane 2 lutego 2017 w C i C++ przez BinaryMan Stary wyjadacz (12,620 p.)
0 głosów
0 odpowiedzi 693 wizyt
pytanie zadane 7 kwietnia 2020 w C i C++ przez Atman Użytkownik (810 p.)

93,485 zapytań

142,417 odpowiedzi

322,763 komentarzy

62,896 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...