• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed problem z pętlą

Object Storage Arubacloud
0 głosów
230 wizyt
pytanie zadane 12 października 2018 w C i C++ przez patrykziel Nowicjusz (170 p.)
zamknięte 12 października 2018 przez patrykziel

Próbowałem stworzyć pętlę w której po wpisaniu odpowiedzi na pytanie program odpowiadał mi czy wykonałem zadanie dobrze czy źle. Niestety za każdym razem pisze dobra odpowiedz. Proszę o pomoc co tu zmienić ?(to tylko część większego programu)


 

  case 0:
        {
          for(i=0;i>=0;i++)
          {

              x=rand()%10+1;
              y=rand()%10+1;
              z=rand()%10+1;
              k=rand()%10+1*10;

              cout<<"Jezeli kangur w ciagu "<<x<<" minut skacze "<<y<<" razy to po czym musi odpoczac "<<z<<" minut to w ile minut wykona "<<k<<" skokow?"<<endl;
              cin>>odpowiedz[i];
              w[i]=(k/y)*(x+z);
              if(odpowiedz[i]=w[i])
                cout<<"poprawna odpowiedz"<<endl;

              else
              cout<<"Zla odpowiedz sprobuj jeszcze raz..."<<endl;
              }
              }

     

komentarz zamknięcia: Problem rozwiązany
komentarz 12 października 2018 przez PanRik Gaduła (4,510 p.)

Jeśłi możesz pokaż cały kod. 

Co to tej częsci interesuje mnie ten nieskończony for:
 

for(i=0;i>=0;i++)

Co chciałeś tym osiągnąć?

komentarz 12 października 2018 przez patrykziel Nowicjusz (170 p.)
Cały kod wyślę wieczorem, natomiast ta pętla ma powtarzać zadanie w kółko tylko, że zmieniając wartosć "i", tym samym zmieniając "szufladke" w tablicy przy wartościach "w" i "odpowiedz".
komentarz 12 października 2018 przez PanRik Gaduła (4,510 p.)

Ale wiesz o tym, że to nie zmienia faktu, że jest to pętla, która nigdy się nie skończy?
 

for( int i =0; i >= 0; i++ )
//Rób dopóki i będzie większe lub równe 0

Z tego co widzę robisz to na tablicach, więc na pewno wychodzisz po za ich zakres.
 

komentarz 12 października 2018 przez patrykziel Nowicjusz (170 p.)
Wiem, ale planuje dodać funkcje pozwalającą zamknąć program i w dodatku jestem pewien że nie przokroczy to ich zakresu do momentu zamknięcia programu ;p
komentarz 12 października 2018 przez patrykziel Nowicjusz (170 p.)

@PanRik, oto cały kod:

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

int wybor, nr_zad, x, y, z, k, w[50], i, odpowiedz[50];
string powrot;

int main()
{
    srand(time(NULL));
    for(;;)
    {
    cout<<"Wybierz typ zadan:"<<endl;
    cout<<"---------------------------"<<endl;
    cout<<"1. Zadanie z czasem i dlugoscia trasy"<<endl;
    cout<<"2. Czysto obliczeniowe tekstowe"<<endl;
    cout<<"3. Czysta matematyka"<<endl;
    cout<<"4. Ilosc lat w przyszlosci"<<endl;
    cout<<"5. Wyjdz z programu"<<endl;

    if(!(cin>>wybor))
    {
        cerr<<"To nie liczba!";

    }

    else
    {
        switch(wybor)
        {
            case 1:
            for(;;)
    {
         nr_zad=rand()%4;

         switch(nr_zad)
         {
          case 0:
        {
          for(i=0;i>=0;i++)
          {

              x=rand()%10+1;
              y=rand()%10+1;
              z=rand()%10+1;
              k=rand()%10+1*10;

              cout<<"Jezeli kangur w ciagu "<<x<<" minut skacze "<<y<<" razy to po czym musi odpoczac "<<z<<" minut to w ile minut wykona "<<k<<" skokow?"<<endl;
              cin>>odpowiedz[i];
              w[i]=(k/y)*(x+z);
              if(odpowiedz[i]==w[i])
                cout<<"poprawna odpowiedz"<<endl;

              else
              cout<<"Zla odpowiedz sprobuj jeszcze raz..."<<endl;
              }
              }



          break;
}
return(0);
}
komentarz 12 października 2018 przez PanRik Gaduła (4,510 p.)

Szczerze powiedziawszy po po przeniesieniu linijek w taki sposób

z:

cin>>odpowiedz[i];
w[i]=(k/y)*(x+z);

na:

w[i]=(k/y)*(x+z);
cout << "odpowiedz: " << w[i] <<endl;
cin>>odpowiedz[i];

I wpisaniu innej w[i] niż się wyświetli daje błąd ,a jak wpisuje to samo to jest , że okej.
>Kod tutaj<

komentarz 12 października 2018 przez patrykziel Nowicjusz (170 p.)
Rzeczywiście dzięki wielkie za pomoc :D A wiesz może dlaczego się tak dzieje ?  Jeśli tak to prosiłbym o wyjaśnienie :)
komentarz 12 października 2018 przez PanRik Gaduła (4,510 p.)
Przeniosłem linijki w taki sposób, żeby było widać jaka jest poprawna odpowiedź i zobaczyłem , że działa xD. Ot cała filozofia.

1 odpowiedź

+1 głos
odpowiedź 12 października 2018 przez Rettles Bywalec (2,320 p.)
if(odpowiedz[i]=w[i])

Zamień na

if(odpowiedz[i]==w[i])

wink

komentarz 12 października 2018 przez patrykziel Nowicjusz (170 p.)
Tego już próbowałem, ale efekt jest wciąż ten sam
komentarz 12 października 2018 przez Secrus Nałogowiec (32,880 p.)
Ta zmiana ma znaczenie. Poza tym, pokaż cały kod, bo to co wrzuciłeś nie wystarczy do oceny co mogło pójść nie tak.
komentarz 12 października 2018 przez patrykziel Nowicjusz (170 p.)
#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

int wybor, nr_zad, x, y, z, k, w[50], i, odpowiedz[50];
string powrot;

int main()
{
    srand(time(NULL));
    for(;;)
    {
    cout<<"Wybierz typ zadan:"<<endl;
    cout<<"---------------------------"<<endl;
    cout<<"1. Zadanie z czasem i dlugoscia trasy"<<endl;
    cout<<"2. Czysto obliczeniowe tekstowe"<<endl;
    cout<<"3. Czysta matematyka"<<endl;
    cout<<"4. Ilosc lat w przyszlosci"<<endl;
    cout<<"5. Wyjdz z programu"<<endl;

    if(!(cin>>wybor))
    {
        cerr<<"To nie liczba!";

    }

    else
    {
        switch(wybor)
        {
            case 1:
            for(;;)
    {
         nr_zad=rand()%4;

         switch(nr_zad)
         {
          case 0:
        {
          for(i=0;i>=0;i++)
          {

              x=rand()%10+1;
              y=rand()%10+1;
              z=rand()%10+1;
              k=rand()%10+1*10;

              cout<<"Jezeli kangur w ciagu "<<x<<" minut skacze "<<y<<" razy to po czym musi odpoczac "<<z<<" minut to w ile minut wykona "<<k<<" skokow?"<<endl;
              cin>>odpowiedz[i];
              w[i]=(k/y)*(x+z);
              if(odpowiedz[i]==w[i])
                cout<<"poprawna odpowiedz"<<endl;

              else
              cout<<"Zla odpowiedz sprobuj jeszcze raz..."<<endl;
              }
              }



          break;
}
return(0);
}

 

Podobne pytania

+1 głos
2 odpowiedzi 230 wizyt
pytanie zadane 27 stycznia 2016 w C i C++ przez Kimi Bywalec (2,050 p.)
0 głosów
3 odpowiedzi 458 wizyt
pytanie zadane 29 grudnia 2020 w C i C++ przez Sabax Nowicjusz (160 p.)
0 głosów
1 odpowiedź 261 wizyt

92,539 zapytań

141,382 odpowiedzi

319,479 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...