• 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
92 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,560 p.)
while(true)

bo pętla jest nieskończona? 

1
komentarz 29 lipca 2018 przez RafalS VIP (112,220 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,560 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,560 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ź 107 wizyt
pytanie zadane 29 listopada 2016 w C i C++ przez xAl1aNse Początkujący (290 p.)
0 głosów
2 odpowiedzi 120 wizyt
+1 głos
3 odpowiedzi 717 wizyt
pytanie zadane 1 września 2016 w C i C++ przez MrRozgunek Użytkownik (830 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

64,198 zapytań

110,595 odpowiedzi

231,808 komentarzy

46,959 pasjonatów

Przeglądających: 267
Pasjonatów: 21 Gości: 246

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.

...