iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Archief (https://forum.iculture.nl/f47/archief/f48/archief/)
-   -   Delen (/) en maal (*) in Objective-C (https://forum.iculture.nl/f47/archief/f48/archief/44190-delen-maal-objective-c.html)

Niels2678 20-09-09 20:02

Delen (/) en maal (*) in Objective-C
 
Goedeavond,

De laatste 2 weken heb ik mij heel erg veel bezig gehouden met het programmeren in Objective-C omdat ik dan mijn eigen iPhone applicaties kan ontwikkelen.

Nu gaat dit inmiddels aardig, alleen loop ik tegen een terugkomende fout aan. De bedoeling is dat ik van het aantal x seconden een aantal y minuten maak.

int *time = (int) time - 1;
int *aantalSeconden = 60;
double *minutenTime = time / aantalSeconden;

Nu krijg ik de foutmelding:
error: invalid operands to binary / (have 'int *' and 'int *')

Google heeft mij niet kunnen helpen, ik hoopte dat iemand hier mij dat wel kan.

(Kan je mij hier niet mee helpen, maar weet je wel hoe ik deze waarschuwing kan oplossen: warning: assignment makes pointer from integer without a cast ? Voel je vrij om te reageren!)

gekkepietje 20-09-09 20:09

Zoek de verschillen:
Code:

int time = (int) time - 1;
int aantalSeconden = 60;
double minutenTime = (double) time / aantalSeconden;

1) Je hebt alles als pointers gedeclareerd (door het sterretje) maar dat hoeft helemaal niet.
2) Als je twee int's op elkaar deelt, krijg je nooit een getal achter de komma. Dat wil je blijkbaar wel omdat je minutenTime als double hebt gedeclareerd. Vandaar mijn cast naar een double, dan werkt de berekening wel.

Frog 20-09-09 20:27

Je kan toch wel een double krijgen door twee int's door elkaar te delen? Kijk maar eens naar 1/3...

Niels2678 20-09-09 20:42

Citaat:

Oorspronkelijk geplaatst door gekkepietje (Bericht 354412)
Zoek de verschillen:
Code:

int time = (int) time - 1;
int aantalSeconden = 60;
double minutenTime = (double) time / aantalSeconden;

1) Je hebt alles als pointers gedeclareerd (door het sterretje) maar dat hoeft helemaal niet.
2) Als je twee int's op elkaar deelt, krijg je nooit een getal achter de komma. Dat wil je blijkbaar wel omdat je minutenTime als double hebt gedeclareerd. Vandaar mijn cast naar een double, dan werkt de berekening wel.

Bedankt, alle foutmeldingen en waarschuwingen zijn verholpen. Ik denk dat dit topic wel dicht kan. Ik ga weer verder met programmeren. Top!

gekkepietje 20-09-09 21:52

Citaat:

Oorspronkelijk geplaatst door Frog (Bericht 354418)
Je kan toch wel een double krijgen door twee int's door elkaar te delen? Kijk maar eens naar 1/3...

Volgens mij is dat 0, want 1 en 3 zijn allebei ints en het resultaat komt dus ook in een int waarbij alles achter de komma verdwijnt. Van die 0 kun je best een double maken, maar dat is niet het antwoord dat je zoekt. ;-) Daarom eerst van een van die ints een double (of float) maken en daarna pas delen.

Nikooos 21-09-09 08:34

ja.. even goed de basisdocumentatie doorlezen. ;)


Alle tijden zijn GMT +2. Het is nu 06:03.