Toon posts:

PHP sin/cos/tan plotten

Pagina: 1
Acties:
  • 313 views

Vraag


  • blauwblauw
  • Registratie: Maart 2012
  • Laatst online: 15-10-2018
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 blauwblauw op 03-10-2018 20:42]

Alle reacties


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 17:38

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]

Ik verafschuw wat u zegt, maar ik zal uw recht om het te zeggen met mijn leven verdedigen. - Voltaire


  • blauwblauw
  • Registratie: Maart 2012
  • Laatst online: 15-10-2018
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>

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

  • Aganim
  • Registratie: Oktober 2006
  • Laatst online: 20:40

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-

  • nino_070
  • Registratie: Januari 2012
  • Laatst online: 15:47
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

  • RobIII
  • Registratie: December 2001
  • Laatst online: 21:33

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

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.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij

Pagina: 1

Dit topic is gesloten.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee