Hirdetés

Új hozzászólás Aktív témák

  • kovisoft
    őstag

    Sziasztok! Nem tudom hogy jó helyre írom-e, de remélem tudtok segíteni.
    Egy olyan problémám lenne az alábbi egyszerű programmal, hogy valamiért a program kétszer írja ki a jelenlegi állást. Amikor bekérek egy új szín-szám kombinációt mindig kiírja az előzőt, majd a megváltoztatottat... Kezdő programozó vagyok, nagy segítség lenne ha valaki röviden el tudná magyarázni :W

    Forráskód:

    #include <stdio.h>

    int main() {
    int red[8];
    int yellow[8];
    int blue[8];

    for (int i = 0; i < 8; i++) {
    red[i] = i + 1;
    yellow[i] = i + 1;
    blue[i] = i + 1;
    }

    for (int J = 0; J < 10; J++){
    char colour;
    int number;
    scanf("%c%d", &colour, &number);
    if ( colour == 'R' ) { red[number - 1] = 0; }
    else if ( colour == 'Y' ) { yellow[number - 1] = 0; }
    else if ( colour == 'B' ) { blue[number - 1] = 0; }
    for (int i = 0; i < 8; i++) { printf("%d ", red[i]);
    printf("%d ", yellow[i]);
    printf("%d \n", blue[i]); }
    putchar('\n');

    }
    return 0;
    }

    Előre is köszönöm a segítséget!

    A második bekérést úgy érted, hogy amikor a J-s ciklusban másodszor (amikor J=1) kerül a vezérlés a scanf-re? Mert ebben az esetben azért írja ki az előző (J=0) lépésben megváltoztatott értékeket, mert nem állítod vissza a cikluson belül a red/yellow/blue tömb eredeti állapotát. Tedd be a cikluson belülre a red/yellow/blue inicializálását.

Új hozzászólás Aktív témák