#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!
Příspěvky odeslané z IP adresy 81.90.168.–
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.
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ů.
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.
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.
#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ě :(
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! :)