Nieskończona pętla wczytująca liczby

0

Cześć chciałbym żeby ta pętla wykonywała się w nieskończoność dopóki nie zostanie spełniony warunek a nie jak jest teraz. Z góry dzięki za pomoc :)

int number;
cout<<"enter an even number: ";
cin>>number;

for(int i=0;i<100;i++)
{
    if(number>0)
    {
        cout<<"THE END";
        break;
    }
    else
    {
        cout<<"enter an even number: ";
        cin>>number;
    }
}
2

Zmień zatem warunek pętli na ten warunek, jaki chcesz, a którego nam nie podałeś¹, zamiast tego, co masz. Dla przypomnienia, pętla for w jednej ze swoich postaci wygląda tak:

for (instrukcja_początkowa; warunek_pętli; instrukcja_po_każdym_kroku) {
  ciało_pętli;
}

¹ Znaczy, mogę zgadywać, że chodzi o test parzystości, ale że kod wygląda na wzięty skądś, to trudno mi powiedzieć, czy cout << "enter an even number" jest elementem zamierzonym, czy nie.

3
#include <iostream>
using namespace std;

int main()
{

  int number;

  do {

    cout<<"enter an even number: ";
    cin>>number;

  }while (number%2==0);   // pętla działa dopóki wprowadzona została liczba parzysta


  cout<<"THE END";
}
2
#include <iostream>

using namespace std;

int main()
{
    //for(int i=0;(cout<<"Enter an even num: ")&&(cin>>i)&&(!((i&1)!=0));++i){}
    for(int i=0;(cout<<"Enter an even num: ")&&(cin>>i)&&((~i&1));){}

    return 0;
}

2

eh, dla mnie to forma zabawy intelektualnej, dla tych co lubią więcej czytać
poniżej taki mój "Infinite Ranges Concepts" z humorem

// (Debian 10.2.1-6) Code::Blocks 20.03 -std=c++20
// g++ -Wall -fexceptions -g -std=c++20 -c main.cpp -o main.o

#include <iostream>
#include <ranges>
#include <climits>
#include <algorithm>

using namespace std;

int main()
{
    double inf = std::numeric_limits<double>::infinity();
    for (int i : std::ranges::iota_view{1, inf}) {
        std::cout << "Enter an even num: ";
        std::cin >> i;
        if(i&1)break;
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    }

    std::cout << '\n';
    std::cout << '\n';

    std::ranges::for_each(std::views::iota(1, inf), [](int i) {
        std::cout << "Enter an even num: ";
        std::cin >> i;
        if(i&1)exit(0);
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    });

    return 0;
}

0
reich napisał(a):

eh, dla mnie to forma zabawy intelektualnej, dla tych co lubią więcej czytać

Dla mnie to forma (mało intelektualnej) zabawy kolegi @Zygwryd
Wklejam kod z pierwszej pozycji z googla, zróbcie żeby on działał tak, jakie są załozenia

Trzy watki, wszystkie jednakowe

0
// (Debian 10.2.1-6) Code::Blocks 20.03 -std=gnu++14 or higher
// g++ -Wall -fexceptions -g -std=gnu++14 -c main.cpp -o main.o
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    auto check = [](auto const & val){if(!((val&(1<<31))|!val)){cout<<"Bye!";exit(0);}else if(val&1){cout<<"Only even numbers. ";}};
    for(int num=log10(1);(cout<<"Enter num: ")&&(cin>>num);check(num)){}

    return log10(1);
}

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