Hirdetés

Keresés

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

  • kovisoft
    őstag

    Sziasztok, eddig jutottam el, a program elindul, fut is hibaüzenet nélkül, csak nem ír ki semmit, nem látom hol rontottam el.
    #include <stdio.h>
    void main()
    {
    system("CHCP 1250"); system("CLS");
    int szazasok, tizesek, egyesek, i, szam;
    do {
    for (i=0; i=999; i++); {
    szazasok=i/100 ;
    tizesek= i%100/10 ;
    egyesek= i%10 ; }
    }
    while (i=999) ;
    szam=szazasok*100+tizesek*10+egyesek;
    if (szam==szazasok*szazasok*szazasok+tizesek*tizesek*tizesek+egyesek*egyesek*egyesek)
    printf("%d ", szam);
    }
    %MCEPASTEBIN%

    1. A külső do...while-ra nincs szükség (amúgy sem jó, mert a feltételben a szimpla = jel értékadás, nem pedig egyenlőségvizsgálat, ami a dupla == lenne).

    2. A belső for feltétele nem jó, mert itt is az i=999 feltételben a szimpla = értékadás. Amúgy sem egyenlőség, hanem <= vizsgálat kellene, és ha 3-jegyű számokat akarsz, akkor nem 0-tól, hanem 100-tól kellene indítani:

    for (i=100; i<=999; i++)

    3. A for után, de még a nyitó { előtt van egy pontosvessző, ez nem kell ide, emiatt üres a for belseje.

    4. A végső feltételvizsgálat és a printf a for ciklus belsejében kellene, hiszen minden egyes i-t meg akarsz vizsgálni.

    Szerk.: lassan gépeltem :)

  • axioma
    veterán

    Sziasztok, eddig jutottam el, a program elindul, fut is hibaüzenet nélkül, csak nem ír ki semmit, nem látom hol rontottam el.
    #include <stdio.h>
    void main()
    {
    system("CHCP 1250"); system("CLS");
    int szazasok, tizesek, egyesek, i, szam;
    do {
    for (i=0; i=999; i++); {
    szazasok=i/100 ;
    tizesek= i%100/10 ;
    egyesek= i%10 ; }
    }
    while (i=999) ;
    szam=szazasok*100+tizesek*10+egyesek;
    if (szam==szazasok*szazasok*szazasok+tizesek*tizesek*tizesek+egyesek*egyesek*egyesek)
    printf("%d ", szam);
    }
    %MCEPASTEBIN%

    1. hasznald a kod formazast
    2. a haromjegyu szamok 100-tol vannak nem 0-tol
    3. miert van do es for ciklus is?
    4. a for ciklus bentmaradasi feltetele sose teljesul, mert ott <= kene legyen, a while meg a kilepesit sose eri el, (*) mivel nem noveled az i-t (na jo 1x de aztan visszaall)
    +1. ilyenkor elso teszt hogy kiveszed az if-et, es ha me'g mindig nem ir ki semmit, akkor a kiirasig (feltetelig) el se jut - az nem tunt fel hogy nemcsak hogy nem ir ki, hanem nem is allt le? azt is figyeld
    Egy picit kene szerintem nezegetned az alapveto vezerlesi szerkezetek helyes hasznalatat a tankonyvben, jegyzetben, vagy a neten. [Beirhatnank ide a megoldast de azzal nem jegyezned meg melyik miert nem volt jo.]

    (*) Re 6092:
    Igen, ezen en is gondolkoztam mert nem is neztem elsore hogy pont egy C-s topikban van egy algoritmikus(nak tuno) kerdes, nalam a hatultesztelos ciklus az kilepesi felteteleskent rogzult me'g pascal idokbol. De teny, tudhattam volna a while-bol hogy az is bennmaradasi, bocsanat a hibaert. Tehat kilep, es leall, csak a 0 nem felel meg a feltetelnek...

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