• 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ą

Cloud VPS
0 głosów
410 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 510 wizyt
pytanie zadane 27 stycznia 2016 w C i C++ przez Kimi Bywalec (2,050 p.)
0 głosów
3 odpowiedzi 673 wizyt
pytanie zadane 29 grudnia 2020 w C i C++ przez Sabax Nowicjusz (160 p.)
0 głosów
1 odpowiedź 497 wizyt

93,483 zapytań

142,417 odpowiedzi

322,763 komentarzy

62,895 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

Kursy INF.02 i INF.03
...