Jak uprościć kod pozbywając się if'ów

0

Witam, czy można w prosty sposób pozbyć się wielu if'ów.
Program ma za zadanie wyświetlać zmienną gdzie każdą z jej części czyli jedności, dziesiątki i setki można edytować oddzielnie z tym, że przekroczenie którejś wartości powoduje dodanie lub odjęcie 1 od wartości po lewej stronie.
Podkreślnik wskazuje wartość aktualnie edytowną.

#include <iostream>
using namespace std;

int main()
{

    unsigned int x=0,y=0,z=0,r=0;
    char znak;

     while(1){
      cin >> znak;

       if (znak == 'r') r++;
       if (r > 2) r = 0;

     switch (r){  
      case 0:
       cout <<"_  "<<endl;
       if (znak == 'q') x++;
       if (znak == 'z') x--;
       if (x == 25) {x = 24;}
       if (x > 25) {x = 0;}
        break;

      case 1:
       cout <<" _ "<<endl;
       if (znak == 'q') y++;
       if (znak == 'z') y--;    
       if (y == 10) {y = 0; x++;}
       if (y > 10) {y = 9; x--;}
        break;

      case 2:
       cout <<"  _"<<endl;
       if (znak == 'q') z++;
       if (znak == 'z') z--;
       if (z == 10) {z = 0; y++;}
       if (z > 10) {z = 9; y--;}
        break;
       }   

  cout << x << y << z << endl;

   }// loop
 }// main
0
Boliano napisał(a):

Witam, czy można w prosty sposób pozbyć się wielu if'ów.
Program ma za zadanie wyświetlać zmienną gdzie każdą z jej części czyli jedności, dziesiątki i setki

Czyli sam zdefiniowałeś (hipotetyczną) klasę, posiadająca pola j/w.
A ify nie będą tak razić, jak będą schowane w krótkich metodach tej klasy.

Kod na zmiennych prostych w tym przypadku jest - bez urazy - patologiczny

0

Nie wiem czy dobrze rozumiem zamierzenie, ale prawdopodobnie chcesz sobie to stablicować i przypisać obsługę klawiszy do zmiany wartości konkretnych elementów tej tablicy.

1

Kod jest tak zły, że wygląda na to, że niestety korzystasz z kursów Zelenta (ten switch w pętli to jego znak firmowy).
Dobry kod dzieli się na małe funkcje/metody/klasy.
Tu masz takiego overkill-a https://godbolt.org/z/xToY5x
Disclaimer: kod ma dobrze ukrytego bug-a :) (w tej wersji kodu bug się nie uaktywnia).

0

Dokładnie, za pomocą x, y, z... chciałbym wywoływać wartości np 103, 125, 168, 190... i różne inne zapisane w np. trzech tablicach.

0
MarekR22 napisał(a):

Kod jest tak zły, że wygląda na to, że niestety korzystasz z kursów Zelenta (ten switch w pętli to jego znak firmowy).
Dobry kod dzieli się na małe funkcje/metody/klasy.
Tu masz takiego overkill-a https://godbolt.org/z/xToY5x
Disclaimer: kod ma dobrze ukrytego bug-a :) (w tej wersji kodu bug się nie uaktywnia).

No if'ów jakby mniej w tym overkill'u.
Zelneta przebija niestety bascom i moje zaszłości z niego

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0