problem z pętlą for

problem z pętlą for
PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:7
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ć?

Kopiuj
#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;
}
edytowany 2x, ostatnio: Paproć
.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
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.


Software is like sex: it's better when it's free.
- Linus Torvalds
edytowany 4x, ostatnio: .andy
PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:7
0

nie mam pojęcia o co chodzi :(

jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 godziny
  • Postów:3493
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?

PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:7
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

.andy
Na przyszłość polecam lepiej opisać problem, bo po pierwszym poście kompletnie nie dało się odgadnąć tego co masz zrobić.
YO
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 3 lata
  • Postów:540
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.

Kopiuj
  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;
        }
   
   }
   }

Dziura w ścianie gdzie Panowie widzą Panie,
Rick and Morty, season 1.
Szukam tej dziury, jak coś dajcie znać gdzie jest :D "A z Ciebie c**** pisowski" - Ula Papuszko (w sensie, że JA) 05.06.2020 r., grupa: Strajk Przedsiębiorców. Witam zatem, jestem c**** pisowski ;)
TomaszLiMoon
Pętla for nigdy się tutaj nie skończy, a sprawdzanie czy liczba jest parzysta - nie jest w ogóle potrzebne.
YO
oczekuje, że skończy ją warunek while (liczba < krok)... Albo już zbyt dawno się nie bawiłem w programowanie, że nie pamiętam jak to działa :D
TomaszLiMoon
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 2 godziny
  • Postów:530
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ą.

Kopiuj
#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;
   }
}
edytowany 1x, ostatnio: TomaszLiMoon
PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:7
0

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

MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
DE
DE
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Postów:311
0
Kopiuj
#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;
}
edytowany 2x, ostatnio: Descendant
YO
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 3 lata
  • Postów:540
1

To optymalnie już Ci o tym powiedzieli:

Kopiuj

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


Dziura w ścianie gdzie Panowie widzą Panie,
Rick and Morty, season 1.
Szukam tej dziury, jak coś dajcie znać gdzie jest :D "A z Ciebie c**** pisowski" - Ula Papuszko (w sensie, że JA) 05.06.2020 r., grupa: Strajk Przedsiębiorców. Witam zatem, jestem c**** pisowski ;)
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

Strasznie, jak przekombinowane wasze kody:

Kopiuj
#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;
}

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
YO
To wyjaśnij jeszcze jak działa przesunięcie bitowe. Bo to nie każdy zrozumie, OP pewnie też.
_13th_Dragon
Dla ciebie (dla OP pewnie też) polecam dokumentacje.
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 minuty
  • Postów:1027
1

Ale skomplikowane rozwiązania pff

Kopiuj
#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);
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.