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

Codeblocks konsola

0 głosów
89 wizyt
pytanie zadane 29 lipca 2018 w C i C++ przez Nowacx02 Użytkownik (990 p.)

Witam co się dzieje z konsolą, że wyświetla ciągle once?

Jak coś kod wygląda następująco: 

#include <iostream>

using namespace std;

int main()
{
    int ile,*tablica;
    cin>>ile;
    tablica=new int [ile];
    for(int i=0;i<(ile*2);i+=2)
        cin>>tablica[i]>>tablica[i+1];
        for(int i=0;i<(ile*2);i+=2)
        {
        int najwieksza = tablica [i],mniejsza = tablica [i+1],liczba = najwieksza;
                if(tablica[i+1]>tablica[i])
                    {najwieksza = tablica[i+1];mniejsza = tablica[i];liczba=najwieksza;}
            while(true)
            {
                if(najwieksza%mniejsza==0)
                    {
                        cout<<najwieksza<<endl;
                        break;
                    }
                else
                    najwieksza+=liczba;
            }

        }

    delete [] tablica;
    return 0;
}

 

komentarz 29 lipca 2018 przez Wiciorny Maniak (66,600 p.)
while(true)

bo pętla jest nieskończona? 

1
komentarz 29 lipca 2018 przez RafalS VIP (105,130 p.)

Na zdjęciu nic nie widać. Jakie once Ci wyświetla?

wyświetla ciągle

co to znaczy ciągle? Program nigdy się nie kończy i napieprza cały czas once, once, once, once... czy program się kończy, i wyświetla dobrą ilość razy once tylko nie wiesz czemu once a nic coś innego? 

2 odpowiedzi

+1 głos
odpowiedź 29 lipca 2018 przez Gramad Obywatel (1,700 p.)
Przy jakich danych wejściowych się tak dzieje? Nie za wiele widać na tym screenie...

Skoro się wyświetla tekst, którego sam nie kazałeś wyświetlać, to podejrzewam że rzucany jest jakiś wyjątek i temu.

A co do kodu, to tak jak pisał poprzednik, w środku pętli while(true) nic się nie zmienia więc o ile nie spełni się ten if, to będzie się ona wykonywać w nieskończoność.
komentarz 29 lipca 2018 przez Wiciorny Maniak (66,600 p.)
Nie po prostu mogą to być FLAGI -> i śmieci... bo wędruje po  bloczkach pamięci a nie ma tam np zmiennych
0 głosów
odpowiedź 29 lipca 2018 przez Wiciorny Maniak (66,600 p.)

Odpalasz pętle while 

   while(true)
            {
                if(najwieksza%mniejsza==0)
                    {
                        cout<<najwieksza<<endl;
                        break;
                    }
                else
                    najwieksza+=liczba;
            }
 

Przecież jak nie zajdzie warunek - > break, to pętla nigdy się nie kończy :D a zmiany dokonywane w pętli  for nie zachodzą ? Dlaczego? Bo... pętla WHILE jest wewnątrz ... i  ona wyoknuje się w nieskończoność jak jej nie przerwiesz a nie na kazdą iteracje 

komentarz 29 lipca 2018 przez Nowacx02 Użytkownik (990 p.)
No dobrze, ale dlaczego wyświetla się to once [...] in [nr] ciągle mimo żw nigdzie tego nie wywołuje

Podobne pytania

0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 29 listopada 2016 w C i C++ przez xAl1aNse Początkujący (290 p.)
0 głosów
2 odpowiedzi 118 wizyt
+1 głos
3 odpowiedzi 632 wizyt
pytanie zadane 1 września 2016 w C i C++ przez MrRozgunek Użytkownik (830 p.)
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

61,351 zapytań

107,293 odpowiedzi

223,438 komentarzy

33,037 pasjonatów

Przeglądających: 174
Pasjonatów: 3 Gości: 171

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...