Autor Zpráva
mat_vzorec
Profil *
Dobrý večer,

mám jeden matematický problém. Potřebuju vypočítat číslo strany a řádku. Moje představa je: 2 str, 3 řádek. Výpis mám Limit 21 položek, tak to počítám:

ceil($celek/21); // tohle mi vyhodí stranu, ale jak na řádek?

Pod celkem je celkový počet záznamů do dané položky ( celek 1000, ale vyhodí 90 ). Najde se nějaký matematický guru co zná vzorec aby dokázal vypočítat řádek? Děkuju za každou radu
Tori
Profil
Takže chcete vědět, když máte x záznamů stránkovaných po y, tak kolikátý na stránce bude ten poslední (x-tý) záznam? Koukněte se na operátor modulo. Pokud číslujete řádky od nuly, musíte výsledek zvýšit o 1. Oprava, tahle věta byla asi z ospalosti.
mat_vzorec
Profil *
Strašně moc Vám děkuju. Použil jsem vzrorec: ($r + 2) % 21;
Jeden výsledek mi vypsal ojednu navíc. Připsal + 2 protože mi jinak pro změnu házel menší. I tenhle vásledek je super a určitě ho tam nechám pokud nedocílím 100%. Nevíte náhodou, kde je problém? Vím, že mezi židlí a počítačem :-) ale přeci jenom jiná informace taky moc pomůže. Ještě jednou moc děkuju za manuál. Moc mi pomohl a ještě ho prozkoumám, ale myslím si, že tam řašení asi nenajdu
Tori
Profil

(($posledni-1) % $zaznamu_na_stranku + 1)
jinak by se 21.řádek nezobrazil jako 21., ale nultý na další straně.
Keeehi
Profil
$celek = 1000;

$strana = ceil($celek/21);
$radek = $celek ? ($celek % 21 ? $celek % 21 : 21) : 0;

echo "Stran s alespoň jednou položkou: $strana<br>Celých stran: ".($radek == 0 || $radek == 21 ? $strana : ($strana-1)."<br>Položek na poslední nekompletní stránce: $radek");
mat_vzorec
Profil *
Keeehi:
váš vzorec je asi dost dobrý, ale vyhazuje mi úplně stejný vásledek.
Keeehi
Profil
mat_vzorec:
Stejný výsledek jako co?

Co přesně má v to vyhazovat pro tato čísla: {0,1,20,21,22}
mat_vzorec
Profil *
Stejný výsledek jako při použití ($r + 2) % 21; Je tam jen minimální odchylka u jedný položky o jednu. Jinak to vypadá, žš počítá dobře. I tenhle výpočet je jako boží dar. Nemohl jsem se ani přiblížit podobnému výsledku. Jen nechápu proc tam musím vypsat + 2 aby to sedělo. Ale 2 ze stří výsledků přesně trefil
Keeehi
Profil
mat_vzorec:
Tak nevím. Už jsi spokojený, nebo se ti ještě něco nelíbí.
Ale neodpověděl jsi mi na druhou otázku. Co má být v proměnné $strana a co v $radek pokud $celek bude každé z těch čísel. (výsledkem je 5 párů čísel)
mat_vzorec
Profil *
$strana = vypočítáva počet stran: ceil($r/21);
$radek = ma veškeré řádky do položky. Jesti je hledaná položka na řádku 140, tak tím to končí i když je záznamů třeba 1000

Příklad: $radek = 140;
$radek = ($radek + 2) % 21;
Keeehi
Profil
Tak znova. Už jsi spokojený nebo ne?

Pokud ne, doplň tuto tabulku:
$vstup == 0;
$strana == // doplň číslo
$radek == // doplň číslo


$vstup == 1;
$strana == // doplň číslo
$radek == // doplň číslo


$vstup == 20;
$strana == // doplň číslo
$radek == // doplň číslo


$vstup == 21;
$strana == // doplň číslo
$radek == // doplň číslo


$vstup == 22;
$strana == // doplň číslo
$radek == // doplň číslo

//$vstup je to číslo, ze kterého to chceš počítat
mat_vzorec
Profil *
Nerozumím co po mě chcete za údaje. Nejsem 100% spokojený proto, že třeba 4 řádek označuje za 6tý, ale i to je velký pokrok. Celek začíná jedničkou, tak vlastně přesně říká jaký je to řádek. Stránkování je limitováno na 21 položek.
Alphard
Profil
mat_vzorec:
Nerozumím co po mě chcete za údaje.
Chceme jen veškeré vstupní údaje, tj. co máte v proměnných. (Nečetl jsem úplně vše, ale Keeehimu můžete věřit.)

Keeehi:
$radek = $celek ? $celek % 21 ? $celek % 21 : 21 : 0;
Ty jsi kouzelník, kdyby jsi tam dal závorku, tak by to šlo přečíst, ale zase by to nepůsobilo tak složitě :-)
mat_vzorec
Profil *
  if($r > 21){
  $str = ceil($r/21);
   $por = ($r + 2) % 21;
  $r = "str.ana ".$str.", řádek.".$por;
Alphard
Profil
$r = 48; 

 if($r > 21){
  $str = ceil($r/21);
   $por = ($r + 2) % 21;
  $r = "strana ".$str.", řádek.".$por;
  echo $r;
}

Vypíše
strana 3, řádek.8
Nevím, proč tam dáváte to +2, pak to nesedí.

Dal bych
$r = 48; 
$limit = 21;
 if($r > 21)
{
  echo "strana: ".ceil($r/$limit).", řádek: ".($r%$limit);
}

vypíše
strana: 3, řádek: 6
Na první 2 strany se vejde 42 položek, zbyde jich 6 na třetí stranu. Nebo chcete něco jiného?
Keeehi
Profil
Tak už jsme se pohnuli. Teď vám položím 8 otázek na které když odpovíte, sestavím Vám algoritmus na míru.
V proměnné $r je 0. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?
V proměnné $r je 1. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?
V proměnné $r je 20. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?
V proměnné $r je 21. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?
V proměnné $r je 22. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?
V proměnné $r je 41. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?
V proměnné $r je 42. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?
V proměnné $r je 43. Jaká číslo byste chtěl, aby po vykonání toho algoritmu bylo v proměnné $str a jaké v proměnné $por?

Nejlepší by bylo, kdyby jste odpovídal takto: "Když je proměnná $r rovna x, v proměnné $str má být y a v $por má být z"
mat_vzorec
Profil *
mě to vypisuje špatně: str. 97, ř.9x
skutečnost: strana: 97, řádek: 12


$r počítá od 1, Je to ++$i;
stránkování je po 21. Já už jsem v koncích nevím už vůbec nic
Keeehi
Profil
mat_vzorec:
Dávám Vám poslední šanci alespoň trochu spolupracovat. Pokud mi odpovíte na otázky v [#16], napíši Vám algoritmus, pokud ne, tak v [#5] jsem napsal kód, který funguje podle zadání tak jak jsem ho pochopil já, pokud Vám nevyhovuje, použijte něco od Alpharda nebo Tori, nebo si to vymyslete sám.
mat_vzorec
Profil *
Myslíte si, že se nesnažim spolupracovat? Já jsem už úplně dutej. Děkuju vám moc, ale já už vážně dál nemůžu.


napsal jsem všechno co jsem věděl a dokola. Skončilo to tím, že ted jsem na tom ještě hůř než jsem začínal. Proč musím přičítat dvě a proč to někdy vyhodí správně a někdy špatně? Začíná počítat od 1 (1,2,3,4,5,....). počet končí na aktuální položce. Co víc napsat? Já už vážně nevím v jakém bodě nespolupracuju
Keeehi
Profil
mat_vzorec:
Rádo se stalo. Dobrou noc.
mat_vzorec
Profil *
Děkuju nejvíc mi upřímně dal manuál od Tori. Ještě se na něj podívám a snad na to přijdu sám. Vám taky děkuju, ale spíš všechno bylo komplkovanější od chvíle co jste přišel. Určitě jste to myslel dobře, ale jen jste mi zamotal hlavu. Taky přeji dobrou noc. Já jdu na ten manuál :-)


Alphard:
Nevím, proč tam dáváte to +2, pak to nesedí.
Ono to nesedí nikdy. Nechápu proč, ale +2 sedělo a pokud to udělám jako to máte vy nebo radil Keeehi, tak to taky nevychází. Nechápu proč.
Tori
Profil
mat_vzorec:
Když dělíte, tak vám na první stránku vyjdou řádky č.1 - 21, to je v pořádku.
Jenže modulo je zbytek z dělení, takže na první stránku vyjdou řádky č.1,2,3...19,20,0. Proto jsem ve [#4] přidávala ten posun o jednu míň (aby byly řádky nejdřív správně číslované, i když od nuly: 0,1,2...19,20) a potom zase o jednu víc (na číslování od jedničky).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0