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

Nieskończona pętla

Object Storage Arubacloud
0 głosów
519 wizyt
pytanie zadane 15 grudnia 2015 w C i C++ przez Sebastian R Obywatel (1,110 p.)

Witajcie, mam problem, ponieważ zaimportowałem poprzez referencje tablice tab. Nastepnie chcę posortować, lecz pętla jest nieskończona. Myślałem, że to może jest wina zmiennej pomocnicza?

void A6(float *tab) // Sortowanie
	{
		int k;
		system("cls");
		float pomocnicza;
		printf("Tak wyglad nasza nieposortowana tablica.\n");
		for (int j = 0; j < 100; j++)
		{
			printf("%2.2f  ", tab[j]);
			if (!((j + 1) % 10) && (j + 1)>0 && j < 100) printf("\n");
		}
		do 
		{ 
			k = 0;
				for (int j = 0; j < 99; j++)
				{
					if (tab[j] > tab[j + 1]);
					{
						k++;
						(float)pomocnicza = tab[j];
						tab[j] = tab[j + 1];
						tab[j + 1] = (float)pomocnicza;
					}
					printf("%d",k);

				}
		} while (k > 0);
		printf("\n\nA teraz tak wyglada nasza tablica!");
		for (int j = 0; j < 100; j++)
		{
			printf("%2.2f  ", tab[j]);
			if (!((j + 1) % 10) && (j + 1)>0 && j < 100) printf("\n");
		}

	}

 

2 odpowiedzi

0 głosów
odpowiedź 15 grudnia 2015 przez niezalogowany
while (k > 0);
Pętla się wykona pierwszy raz, zainkrementuje zmienną k, przez co k zawsze będzie większa(nie dokońca bo w pewnym momencie nastąpi przepełnienie zakresu zmiennaj k) od 0 i pętla jest przez to nieskończona.
0 głosów
odpowiedź 15 grudnia 2015 przez Michał628496 Pasjonat (17,340 p.)
pętla wykonuje się dopóki k>0

w pętli for w linijce nr 19 inkrementujesz zmienną k,więc jest ona większa od 0 i  pętla się nie skończy bo warunek będzie nadal spełniony. Gdyby tablica była posortowana to pętla by się zakończyła
komentarz 15 grudnia 2015 przez Sebastian R Obywatel (1,110 p.)
No, ale po sprawdzeniu warunku while przypisuje nastepnie zmiennej k wartosc 0, wiec jesli warunek logiczny if zostanie spelniony przy kolejnych przejsciach to się zwiększa, nastepnie dochodząc do punktu, gdzie k nie zostanie zinkrementowane, bo nie zostanie spełniony warunek IF, wtedy pętla zewnętrzna while się przerywa - tzn. program posortował całość.

Podobne pytania

0 głosów
2 odpowiedzi 2,071 wizyt
pytanie zadane 12 października 2019 w C i C++ przez Niepokonana7999 Bywalec (2,270 p.)
0 głosów
3 odpowiedzi 869 wizyt
pytanie zadane 3 listopada 2015 w C i C++ przez macik1423 Początkujący (480 p.)
0 głosów
0 odpowiedzi 464 wizyt

92,568 zapytań

141,421 odpowiedzi

319,626 komentarzy

61,956 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...