problem z pętlą for

0

mam do zrobienia następujące zadanie
Użytkownik podaje liczbę całkowitą x. Program ma wyświetlić kolejne x liczb parzystych np 5/2+4+6+8+10.
jak to zrobić?

#include <iostream>

using namespace std;

int liczba;
int main()
{
   cout<<"podaj liczba"<< endl;
   cin>> liczba;

   for (int i=0; i<=liczba ; i=i+2 )
    {

       cout << i << endl;
   }








return 0;
}
1

Musisz pobrać dwie zmienne ud użytkownika: ilość liczba parzystych jakie ma wyświetlić oraz liczbę od której zaczyna.
Potem w pętli po prostu sprawdzasz czy dana liczba jest parzysta i jeżeli jest to ją wyświetlasz:

for(int i=userNumber; ++i; i<=userNumber + maxNumbers){...} jeżeli coś pomyliłem to sorka, bo na kolanie pisze.

W kropkach sprawdzasz czy jest parzysta i wyświetlasz.

0

nie mam pojęcia o co chodzi :(

2

Ogólnie musisz się zastanowić co się w tym kodzie dzieje. Czy gdzieś w tej pętli wykorzystujesz liczbę wczytaną od użytkownika? Obecnie, jeśli to się kompiluje oczywiście, to petla ile razy się wykona? Jak miałbyś opisać działanie programu?

0

Jak wpiszę liczbe parzystą to wyświetlają mi się liczby parzyste do tej podanej. Czyli wpiszę 12 i wyświetlają się od 0 do 12 a ja chce żeby wyswietliło sie 12 liczb parzystych od 0 a nie do 12. Nie rozumiem tego kodu co kolega napisał wyżej ja ogólnie jestem kompletnie nowy i ledwo pojmuje to co tam napisałem ;D

0

Raczej coś takiego. Tylko to rozwiązanie się zapętla. Nie mam teraz czasu myśleć. Sam się pobaw, coś takiego musi być tylko poprawny warunek.

Twoim krokiem jest to, że masz policzyć X liczb parzystych od podanej.
A więc jak napiszę 7 to program ma wyświetlić 7 najbliższych, a więc kręci pętlą tak długo jak nie trafi.

  int liczba = 0, krok = 0,i=0;;
   cout<<"podaj krok"<< endl;
   cin>> krok;

   
   while (liczba < krok)
   {
   for (;;)
    {
        ++i;

        if (i%2 == 0)
        {
           liczba++;
           cout << i << endl;
        }
   
   }
   }
1

Twój kod jest już prawie poprawny - wystarczy tylko powiększyć zakres pętli. Nie musisz także sprawdzać czy liczba jest parzysta - gdyż w pętli zmienna i zawsze jest liczbą parzystą.

#include <iostream>

using namespace std;

int main()
{
   int liczba; 
   cout << "Podaj liczbe:" << endl;
   cin >> liczba;

   for( int i {2} ; i<=2*liczba ; i+=2 )
   {
       cout << i << endl;
   }
}
0

ok pokombinuje coś sam i będe sobie utrwalać dziękuje wszystkim za pomoc

2

Ja bym polecał nauczyć się używać debuggera w zakresie podstawowym.
Od razu wiele rzeczy będziesz w stanie łatwiej zobaczyć.
Wujek Bob nawet mówi, że ilość używania debuggera jest odwrotnie proporcjonalna do wiedzy i doświadczenia (zgadzam się), ergo obecnie powinieneś używać go przy każdej okazji.

0
#include <iostream>

using namespace std;

int liczba;
int main()
{
   cout<<"podaj liczba"<< endl;
   cin>> liczba;

   for(int i=2;i<=liczba*2;i++) {
       if(i % 2 == 0) {
           cout << i;
           i == liczba*2 ? cout << " " : cout << "+";
       }
      
   }

return 0;
}
1

To optymalnie już Ci o tym powiedzieli:


for(int i=2;i<=liczba*2;i+=2)
   {
      
           cout << i;
           i == liczba*2 ? cout << " " : cout << "+";
        
   }

0

Strasznie, jak przekombinowane wasze kody:

#include <iostream>
using namespace std;

int main()
{
   int liczba;
   cout<<"podaj liczba"<< endl;
   cin>>liczba;
   for(int i=1;i<=liczba;++i) cout<<(i<<1)<<endl;
   return 0;
}
1

Ale skomplikowane rozwiązania pff

#include <iostream>
#include <numeric>
#include <ranges>

using namespace std::views;

std::ostream& print_int_ref(std::ostream& out, int x) {
    return out << " " << x;
}

int main() {
    int count;
    std::cin >> count;
    auto is_even = [] (auto k) { return k % 2 == 0; };
    auto r = iota(2) | filter(is_even) | take(count) | common;
    std::accumulate(std::begin(r), std::end(r), std::reference_wrapper<std::ostream>(std::cout), print_int_ref);
}

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