Avatar billede 7th Praktikant
21. november 2003 - 21:52 Der er 21 kommentarer og
2 løsninger

Hjælp til matematisk formel

Jeg har et lille regnestykke som jeg simpelthen ikke kan få løst. Opgaven lyder således.

Jeg kender kun én fast konstant, et 5 tal. Derudover har en jeg et x tal. Tilsammen skal de angive følgende.

x = 0 - udskriv 0
x = 1 - udskriv 1
x = 2 - udskriv 1
x = 3 - udskriv 1
x = 4 - udskriv 2
x = 5 - udskriv 2
x = 6 - udskriv 2
x = 7 - udskriv 3
x = 8 - udskriv 3
x = 9 - udskriv 3

Jeg har prøvet med forskellige kombinationer af ceil(), floor(), int() / * - % + men kan ikke finde den magiske nøgle. Kan du? :o)

P.S. jeg vil helst undgå brug af andre fordefinerede konstanter, hvis I forstår hvad jeg mener.
Avatar billede cool_casper Nybegynder
21. november 2003 - 21:56 #1
$tal = ceil($x / 3);
Avatar billede nicklasb Nybegynder
21. november 2003 - 21:58 #2
kan ikke lige se hvor du 5 kommer ind i billedet.. men er det ikke bar noget ligende;

$tal = 3;
$antal = 10;
for ($i = 0; $i < $antal; $i++) {
    echo 'x = ' . $i . ' - udskriv ' . ceil($i/$tal) . '<br>
';
}
Avatar billede 7th Praktikant
21. november 2003 - 21:58 #3
Hvor har du det 3 tal fra? Du gør jo brug af en fordefineret konstant :o)
Avatar billede soreno Praktikant
21. november 2003 - 21:59 #4
Dvs.

5 (et eller andet) (x=0) - udskriv 0
5 (et eller andet) (x=1) - udskriv 1
..
5 (et eller andet) (x=9) - udskriv 3

?


Hvis du ikke behøver at bruge 5 tallet, så tror jeg en kvadratrod af x (afrundet til nærmeste heltal) er løsningen.

Noget ala:
$n = round(sqrt($x));
Avatar billede nicklasb Nybegynder
21. november 2003 - 22:02 #5
soreno -> naa.. hvad er det nu lige kvardratroden af 3 er??! ;)

Det er MEGET svært at gætte sig frem til hvad vi skal gøre, når vi igen sammenhæng har.. i dit eksempel kan vi vel bare trække 2 fra? Eller symbolisere det hvor mange gange den skal kører tal igennem, eller hvordan?!
Avatar billede 7th Praktikant
21. november 2003 - 22:05 #6
Du er inde på noget af det rigtige soreno. Nu er matematik ikke min stærke side, men sådan som jeg forestiller mig det, så kan jeg via den rigtige løsning, styrer antal kolonner ved hjælp af blot et tal, og det ene tal er 5 lige i øjeblikket.
Avatar billede soreno Praktikant
21. november 2003 - 22:06 #7
Har du flere værdier vi kan gå udfra ?

Gerne nogle lidt mere spredte også, f.eks. x=25, x=40 og x=50
Avatar billede nicklasb Nybegynder
21. november 2003 - 22:08 #8
hvorfor lige 5?? Hvorfor ikke 3 eller 6? eller et hvilket som helst andet? Og hvorfor får dine funktions-værdier lige præcis de værdier??
Avatar billede soreno Praktikant
21. november 2003 - 22:13 #9
Måske det vigtigste spørgsmål:

- Hvad skal det bruges til ?

- Og i hvilken sammenhæng ?
Avatar billede 7th Praktikant
21. november 2003 - 22:14 #10
nicklasb > outputtet skal styre antal rækker gennem en for-løkke.

OK, lang forklaring :o)

Jeg har en tabel med i øjeblikket 5 kolonner på hver række. Via en for-løkke indsætter jeg et billede hver anden gang i en række. Det vil sige, ialt 3 gange. Udfra antal billeder skal jeg så finde antal rækker. Håber det hjalp.

Lad os nu sige, at jeg ændre antal af kolonner til 3 eller 7. Så passer 2 jo pludselig ikke mere ind nogen steder. Selvfølgelig kunne jeg nemt rette det til, men jeg vil gerne se om det andet, mit spørgsmål, kan lade sig gøre først.
Avatar billede 7th Praktikant
21. november 2003 - 22:17 #11
x kan være alt fra 0 til mange.
Avatar billede nicklasb Nybegynder
21. november 2003 - 22:22 #12
ok.. så giver det jo pludselig meget mere mening.. nu har du jo fået endnu en faktor med i spillet.. evt noget lignende:

$tal = 5;
$tal = ceil($tal / 2);

for ($i = 0; $i < 10; $i++) {
    echo ceil($i / $tal) . '<br>';
}
Avatar billede 7th Praktikant
21. november 2003 - 22:50 #13
Måske tænker jeg forkert, men jeg fumler med sådan noget som...

$cols = 5;

for ($i = 0; $i < 10; $i++) {
    $test[] = $i." = ".ceil (sqrt ($i * $cols) / $cols);
    }

echo implode ("<br>" , $test);
Avatar billede 7th Praktikant
21. november 2003 - 23:14 #14
$cols = 5;

for ($i = 0; $i < 10; $i++)
{
    $test[] = $i." = ".ceil ($i / ($cols - round (sqrt ($cols))));
}

echo implode ("<br>" , $test);

er mit bedste bud indtil nu.
Avatar billede amix Nybegynder
22. november 2003 - 00:04 #15
Hvorfor bare ikke tjekke om de billeder er der ved at bruge databasen selv?

Eller er det en database du bruger?
Avatar billede 7th Praktikant
22. november 2003 - 00:24 #16
Ja bruger database. x = antal billeder fra database.
Avatar billede nicklasb Nybegynder
22. november 2003 - 00:28 #17
hvad er der galt med mit eksempel 21/11-2003 22:22:03 ?!?

Der tager jeg jo bare og siger hver andet af 5 er 3.. og så sætter jeg tallene ind.. ellers skal du lave en løkke der ganger resultatet op så den bliver en faktor 3-5
Så kan du ud fra det nye tal jo bare lave din løkke, og så kun tage resultat ud ved en modulus af gennemgangstallet på 1..

En ide?
Avatar billede 7th Praktikant
22. november 2003 - 00:53 #18
Der er skam intet galt :o) Dit er lige så godt som mit, blot med den forskel, at de har brugt yderligere en fordefineret konstant. Jeg kunne bare godt tænke mig, at prøve at lave det ud fra de parametre jeg har opsat. Altså et fast defineret tal, som er 5, og så et vilkårligt tal.

Mit test script ser altså i øjeblikket således ud.

$cols = 5;
$rows = ceil (count ($pics) / ($cols - (round (sqrt ($cols)))));

hvor count ($pics) er det vilkårlige tal (antal billeder i databasen).

Jeg håber ikke det lyder som noget vrøvl, så må I endelig sige til. I kan se mit testeri via http://www.xtranet.1go.dk/formel.php - det er noget rodet ;o)
Avatar billede nicklasb Nybegynder
22. november 2003 - 01:00 #19
hvad er der galt med den du har lavet der? Er eneste problem at koden er rodet eller?

Og hvad er ideen egnetligt med at lave en tom boks efter hver?
Er det ikke lettere i dit database-udtræk bare at lave en ekstra ved siden af, igennem noget tjek på kolonne-numre? Dels så den skrifter efter det i forvejen definerede antal billeder, og dels for at der ikke kommer en boks ved sidste, men i stedet en slut og en start tr ??!
Avatar billede 7th Praktikant
22. november 2003 - 01:11 #20
Det er ikke optimeret korrekt endnu. Jeg føler mig frem gradvis ;o) Jov både og, men jeg synes det var nemmere at lave det bagefter, når jeg kender alle de vilkårlige tal.
Avatar billede 7th Praktikant
22. november 2003 - 20:00 #21
Dem som føler de har hjulpet, må gerne lægge et svar, ellers løber cool_casper med halvdelen af points.
Avatar billede 7th Praktikant
24. november 2003 - 17:06 #22
Takker for hjælpen. Tillader mig at trække halvdelen tilbage, da jeg selv fandt en løsning.
Avatar billede cool_casper Nybegynder
25. november 2003 - 18:19 #23
Helt ok.. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester