• 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
97 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 Obywatel (1,520 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 Pasjonat (18,400 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 105 wizyt
pytanie zadane 27 stycznia 2016 w C i C++ przez Kimi Obywatel (1,990 p.)
0 głosów
0 odpowiedzi 38 wizyt
+1 głos
1 odpowiedź 83 wizyt
pytanie zadane 10 marca 2018 w C i C++ przez Sic Mądrala (6,930 p.)
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

59,199 zapytań

104,616 odpowiedzi

216,478 komentarzy

31,589 pasjonatów

Przeglądających: 170
Pasjonatów: 1 Gości: 169

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.

...