PHP sin/cos/tan plotten

Pagina: 1
Acties:
  • 469 views

Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 449109

Topicstarter
Beste mensen,

Ik ben een beginner in PHP en probeer de sinus, cosinus en tangens te plotten in een tabel. Dit is al redelijk gelukt alleen treft mij nog één probleem. Bij de tangens van 90 en 270 graden is deze oneindig. Ik zou graag in de cel van de tangens bij 90 en 270 graden willen weergeven dat deze oneindig is.

Ik heb geprobeerd een IF/ELSE te plaatsen bij het berkenen van de tangens en bij de ECHO van de grafiek alleen geeft mij dit een (unexpected "{" bij de IF/ELSE lijnen.


Hopelijk kan iemand mij helpen
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
<html>
<heading>

</heading>
<body>
<?php

echo "<table border=1>";    

    echo "<tr>";    
        echo "<th>hoek<br>(graden)</th><th>sinus</th><th>cosinus</th><th>tangens</th>"; 
    echo "</tr>";
    
    for ($hoek=0; $hoek <= 380 ; $hoek++) { 
        echo "<tr>";
            $rad=$hoek * M_PI / 180;    
            $s=number_format(sin($rad),2);  
            $c=number_format(cos($rad),2);
            $t=number_format(tan($rad),2);
            echo "<td>$hoek</td><td>$s</td><td>$c</td><td>$t</td>";
        echo "</tr>";
        $hoek=$hoek+1;
    }
echo "</table>";


?>

...
XAMP
Sublime Text
Firefox
...

[ Voor 8% gewijzigd door Anoniem: 449109 op 03-10-2018 20:42 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Nu online

Reptile209

- gers -

Code kan je posten tussen [code=php] en [/code].

Voor wat je probleem betreft heb je meerdere routes:
1) vals spelen: bij een "illegale" waarde van $rad druk je niet de berekening af, maar 'infinite' ofzo. Dat werkt als dit een eenmalige actie met bekende waarden is.
2) je checkt de berekende waarde van je tan() functie en past daar je output mee aan.
3) weer vals spelen: begin niet met $hoek=0, maar $hoek=0.0001. Dan zit je nooit op een exacte hoek en krijg je een hele grote waarde als antwoord. Zal ook allerlei andere onbedoelde bij-effecten introduceren, dus hangt er vanaf wat je verder met de code wil.

Ik zou voor 2 gaan ;)

Edit: dat had je dus al geprobeerd. Post eens hoe je je code met if () had, daar zal dus een foutje in zitten. Nog beter: zoeken bij google naar 'php if syntax'

[ Voor 12% gewijzigd door Reptile209 op 03-10-2018 20:44 ]

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

Anoniem: 449109

Topicstarter
Bedankt voor je reactie.

Ik denk ook dat ik optie 2 aan het proberen ben. Ik wil graag dat wanneer de hoek 90 of 270 is er "oneindig" wordt weergegeven. Of door te zeggen dat wanneer $t bijvoorbeeld groter is dan 100 ook vervolgens "oneindig" weer te geven. Toch heb ik moeite met het plaatsen hiervan. Hieronder een niet werkend voorbeeld

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
<heading>

</heading>
<body>
<?php

echo "<table border=1>";    
    echo "<tr>";    
        echo "<th>hoek<br>(graden)</th><th>sinus</th><th>cosinus</th><th>tangens</th>"; 
    echo "</tr>";
    

    for ($hoek=0; $hoek <= 380 ; $hoek++) { 
        echo "<tr>";
            $rad=$hoek * M_PI / 180;
            $s=number_format(sin($rad),2);  
            $c=number_format(cos($rad),2);
            if ($hoek=90) {
                $t="oneindig"
            } else {
                $t=number_format(tan($rad),2);
            };
            
            
            echo "<td>$hoek</td><td>$s</td><td>$c</td><td>$t</td>";
        echo "</tr>";
        $hoek=$hoek+1;
    }
echo "</table>";

?>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • CB32
  • Registratie: November 2011
  • Laatst online: 06:07
De puntkomma achter je afsluitende } hoort er niet. Je mist een puntkomma achter oneindig.

Acties:
  • 0 Henk 'm!

  • Aganim
  • Registratie: Oktober 2006
  • Laatst online: 11:45

Aganim

I have a cunning plan..

Post dan ook even wat er niet werkt. Wat verwacht je en wat gebeurde er?

Als dat voorbeeld je code is, dan is het nogal wiedes dat die niet werkt, ik zie zo al 2 fouten die ervoor zorgen dat dit script in zijn geheel niet gaat draaien.

En als we dan toch vervelend zijn, leer jezelf meteen aan met Engelstalige en zinnige namen voor je variabelen/functies/constants/etc te gebruiken. Nu snappen we het nog, maar de betekenis van een variabele $t is in een groter project niet makkelijk te interpreteren. Treinen? Toestellen? T**ten? ;)

En wie twijfelt aan de zin van Engelstalig programmeren: ik heb een collega die een systeem mocht herbouwen met Oost-Europese variabelen en functienamen. :F Geloof me.. Niet leuk.. -O-

Acties:
  • 0 Henk 'm!

  • nino_070
  • Registratie: Januari 2012
  • Laatst online: 20-06 00:39
PHP:
1
2
3
4
5
if ($hoek == 90) {
                $t="oneindig";
            } else {
                $t=number_format(tan($rad),2);
            }

Zo moet ie werken. Check voortaan je syntax he, er zijn gewoon syntax checkers online die je precies vertellen waar je fouten zitten

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je bent al eerder gewezen op onze Quickstart (2x zelfs) en bent ook bekend met code tags maar kiest er klaarblijkelijk voor ze maar niet te gebruiken.

Daarbij is dit gewoon een kwestie van de foutmelding lezen; je geeft in je topicstart al aan: "(unexpected "{""; daar staat ook nog een regelnummer bij. Als je dan eens gewoon naar je code kijkt (daar heb je niet eens 'online syntax checkers' voor nodig...). Dat was minder werk dan een topic typen.

Los daarvan is dit gewoon een "Kan iemand even... m'n code debuggen" en is er een totaal gebrek aan eigen inzet. Misschien dat Debuggen: Hoe doe ik dat? voor jou ook nog handig is. Either way; dit topic is hiermee wel klaar :)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.