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

0 głosów
102 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,630 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,630 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,630 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,630 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 Obywatel (1,980 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 (26,680 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 109 wizyt
pytanie zadane 27 stycznia 2016 w C i C++ przez Kimi Bywalec (2,000 p.)
0 głosów
0 odpowiedzi 52 wizyt
0 głosów
1 odpowiedź 109 wizyt
pytanie zadane 28 marca w C i C++ przez sznycel Nowicjusz (120 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

62,316 zapytań

108,446 odpowiedzi

226,391 komentarzy

35,096 pasjonatów

Przeglądających: 200
Pasjonatów: 7 Gości: 193

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...