Anonymní profil Jan Beránek – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Jan Beránek – Programujte.comAnonymní profil Jan Beránek – Programujte.com

 

Příspěvky odeslané z IP adresy 81.90.168.–

Jan Beránek
C / C++ › Ošetření stejných hodnot - c…
19. 11. 2017   #218629

#10 gna
Jojo, to už šlape, v tom mým původním programu jsem použil ještě navíc ten cyklus for (i) a áčku jsem na začátku přiřadil 1 a fungovalo mi to pak taky! 
Ale tento tvůj program je přehlednější a srozumitelnější, tak ho s dovolením použiji :)

Teď už jen potřebuji místo vypsání daných rozměrů spočítat kolik jich je, ale to už (snad) zvládnu sám! 

Jan Beránek
C / C++ › Ošetření stejných hodnot - c…
19. 11. 2017   #218627

Oprava: program stále není plně funkční.
Můj kód:

int main(int argc, char** argv) {

    int x,y,a,b,c,i;

    scanf ("%d%d", &x,&y);
    
    for (i = x; i <= y; i++) {
    for (a = x; a <= y; a++) 
    { for (b = a; b <= y; b++)
        { for (c = b; c <= y; ++c)
            {
            if (a*b*c != i) continue;
            printf ("%dx%dx%d\n", a,b,c);
            }
           
        }
    }    
    }                      
    
    return (EXIT_SUCCESS);
}

Přidal jsem cyklus for (i) a podmínku. A program správně vypíše rozměry pouze pokud napíšu interval ve tvaru <1,y>. Pokud místo 1 dám jakékoliv jiné číslo, program nic nevypíše.

Jan Beránek
C / C++ › Ošetření stejných hodnot - c…
19. 11. 2017   #218626

Už to asi mám, jak jsem se s tím trápil tak jsem úplně vypustil podmínku if, že a*b*c se musí rovnat některému z těch objemů.

Jan Beránek
C / C++ › Ošetření stejných hodnot - c…
19. 11. 2017   #218625

V zadání je napsáno:

"Základní řešení úlohy vyžaduje použití cyklů a podmínek. Není potřeba používat pole. Rozhodně není dobrý nápad vygenerovat všechny možnosti a z nich odstraňovat duplicity - takové řešení by bylo těžkopádné, pomalé a pravděpodobně by selhalo na časovém nebo paměťovém limitu. V základní verzi je cílem získat zkušenosti s cykly s vhodně nastavenými mezemi."

To s tím b = a, c = b bude nejspíš správně, jen to buď špatně zapisuji nebo by to chtělo ještě drobet poupravit.

Jan Beránek
C / C++ › Ošetření stejných hodnot - c…
19. 11. 2017   #218624

Bohužel nefunguje, program vypisuje pro interval <1,2> :
1x1x1
1x1x2
1x2x2
2x2x2

Ale pro 1x2x2 nebo 2x2x2 objem <1,2> nesedí. Ale jinak děkuji za snahu.

Jan Beránek
C / C++ › Ošetření stejných hodnot - c…
19. 11. 2017   #218614

#2 gna
Děkuji za odpověď!
To a:, b:, c: je myšleno jako pole nebo jako cykly ?

To s těmi jednotkami vím, povedlo se mi dojít do stádia, kde mi program vypíše např.:

Interval - <1,2> (minimální a maximální objem)

Možné kvádry: 1x1x1
                         1x1x2
                         1x2x1
                         2x1x1

Já z toho ale potřebuji dostat ty "duplikáty" a nechat tam např. jen 1x1x2. Edit. takto mi to vypisuje pouze pokud jsou minimální a maximální obsah o 1 ... takže špatně :(

Jan Beránek
C / C++ › Ošetření stejných hodnot - c…
18. 11. 2017   #218586

Zdravím, 
potřeboval bych poradit. 
Mám úlohu, kdy dostanu kvádr o minimálním a maximálním objemu a já mám určit kolik takových kvádrů lze sestrojit s celočíselnými rozměry a,b,c. Do řešení ale nemám započítávat kvádry, které se pouze "otočí", tzn. kvádr 1x2x3 je stejný jako kvádr 2x3x1.

A v tom je onen problém, nevím jak ošetřit, aby se nevypisoval (nezapočítával) kvádr se stejnými rozměry. 
Na vypsání všech možných kvádrů používám do sebe vnořené cykly FOR:

int main(int argc, char** argv) {

    int x,y,a,b,c,i;

    scanf ("%d%d", &x,&y);
      
    for (a = x; a <= y; a++)
    { for (b = x; b <= y; b++)
        { for (c = x; c <= y; c++)
            {
             }
        }
    }    
                             
    
    return (EXIT_SUCCESS);

Budu rád za každou radu nebo myšlenku, jak na to alespoň jít. Děkuji předem! :)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý