Hirdetés

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

  • kingabo
    őstag

    Köszönöm a segítségeteket,sikerült így :DDD most már megírni /talán jól is :DDD /

    #include <stdlib.h> // for itoa() call
    #include <stdio.h> // for printf() call

    int main() {
    int num,i,mard,erd = 0,num2;

    printf("Adjon meg egy szamot \n");
    scanf("%d",&num);
    num2=num;

    for(i = 1; ; i++){
    mard = num%10;
    // printf("mardadek %d\n", mard);

    if(!(mard == 0 || mard == 3 || mard == 6 || mard == 9)){
    erd = erd + mard;
    }


    num = num/10;
    // printf("%d\n", num);
    if(num==0){
    break;
    }

    }

    printf("Szamjegyek osszege /0,3,6,9 kivul/ %d\n", erd);

    if(erd%3 == 0){
    printf("%d oszthato 3 .al",num2);
    }
    else{
    printf("%d nem oszthato 3 .al \n\n",num2);
    }



    return 0;
    }

    Nem tudom feladat-e, de célszerű lenne ellenőrizni, hogy tényleg számot adott-e meg a lyúzer.
    Pár észrevétel a kódhoz:
    - az itoa-t nem használod, szerintem felesleges a hozzá tartozó include
    - if(!(mard == 0 || mard == 3 || mard == 6 || mard == 9)) helyet írhatod ezt is
    if(mard != 0 && mard != 3 && mard != 6 && mard != 9)) (ha már 1 hamisat talál, akkor a többit ki se értékeli)
    - nem tudom kötelezőe a fenti módon való számolás, de sokat gyorsíthatnál, ha simán csak összegzed a számjegyelet, esetleg a mard-nak a 3al vett maradékát néznéd, hogy 0-e (ez utóbbi valszeg lassabb lenne, de a kód átláthatóbbá válna, illetve könnyebben módosítható, ha 3 helyett a 9-el való osztás kell)
    - for ciklus helyett egy while sokkal szebb lenne

    :C

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