Jak przerwać pętlę i zrobić żeby się jeszcze raz wywołała?

0

Witam.
Jak zrobić, żeby w pętli for, po znalezieniu jednego z x elementów, pętla się kończyła i zaczynała ponownie szukać?
Głównie to chodzi mi o pomoc w tym programie który miał rozkładać liczby na czynniki pierwsze, jednakże po np wpisaniu 24, wyświetla 2,3,4 zamiast: 2,2,2,3.

#include <iostream>
using namespace std;

main() 
{
    int a,b,c;
    cout<<"Podaj liczbe";
    cin>>a;
    cout<<"Czynniki pierwsze liczby to: "<<endl;

    while(a!=1)
    {
        for(int i=2; i<=a; i++)
        {
            b=a%i;

            if(b==0)
            {
                a=a/i;
                cout<<i<<" ";
            }
        }
    }

    return 0;
}
0

Jak zrobić, żeby w pętli for, po znalezieniu jednego z x elementów, pętla się kończyła i zaczynała ponownie szukać?

Nijak - pętla for służy do prostego i statycznego iterowania, a Tobie potrzebna jest taka, której iterator można zresetować - przywrócić do wartości początkowej, aby wykonać iterowanie od początku;

Wielkiego wyboru nie ma - while albo do while, zależy czy potrzeba najpierw sprawdzić warunek, czy nie.

0

Formatuj to chryste panie. Naprawienie tego to:

#include <iostream>

using namespace std;

int main () {
    int a, b, c;
    cout << "Podaj liczbe: ";
    cin >> a;
    cout << "Czynniki pierwsze liczby to: " << endl;

    while (a != 1) {
        for (int i = 2; i <= a; i++) {
            b = a % i;
            if (b == 0) {
                a = a / i;
                cout << i << " ";
                --i; // <<<<<<<<<
            }
        }
    }
    return 0;
}

natomiast tak czy siak nie jest to dobre rozwiązanie.

0
cout << i << " ";
break;

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0