[C] aantal argumenten bepalen

Pagina: 1
Acties:

  • mandroid
  • Registratie: Juli 2002
  • Laatst online: 01-02 07:50
Voor school moet ik een programma schrijven dat van een variabel aantal argumenten het maximum berekent.

Dus in de main() staat :

double Max(double a,double b,...)

waarbij Max de functie is die het maximum van de argumenten geeft.

Indien je het aantal argumenten kent is dit niet zo moeilijk, dan maak je een functie van de vorm Max(int aantal, double a, double b, ...)

Maar hier wordt het aantal dus niet vermeld.
Hoe kan je er in C nu achterkomen hoeveel argumenten er zijn weergegeven ?

  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Dat kun je niet weten, je zult het echt mee moeten geven. Dit omdat het volgens de standaard niet te bepalen is. Misschien zijn er wat rare compilers die het mogelijk maken met uitbreidingen maar normaalgesproken lukt dit niet. De implementatie die vrijwel elke compiler gebruikt (argumenten op de stack zetten, functie aanroepen, argumenten verwijderen) maakt het technisch ook onmogelijk.

edit
Misschien heb ik je vraag niet helemaal begrepen, welk aantal argumenten probeer je nou te krijgen? Het aantal dat aan Max meegegeven wordt of aan je programma? Want een functie Max(double a, double b, ...) kan dus nooit (portable) werken in C. Moet je die Max schrijven of het hoofdprogramma?

[ Voor 29% gewijzigd door madwizard op 07-03-2004 16:13 ]

www.madwizard.org


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Als je het programma bedoelt dan heeft de main functie 2 argumenten:(int argc, char **argv)
In argc staat het aantal argumenten (inclusief de naam van het commando) en argv bevat een array van strings met de argumenten.
Ik stel dan ook voor dat je hetzelfde doet met je MAX functie:
double function max(int N, double *arr);
N bevat het aantal getallen in de array arr, en arr bevat de getallen. Hetzelfde als dat main het doet.

"Beauty is the ultimate defence against complexity." David Gelernter


  • mandroid
  • Registratie: Juli 2002
  • Laatst online: 01-02 07:50
Ok,

dan doe ik het zo wel

bedankt !

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Een functie kan in C een variabel aantal parameters hebben. Daarvoor staan een aantal macro's tot je beschikking. Tik maar eens in google in: va_arg, va_end, va_start, dan vind je vast wel ergens een voorbeeldje. En als je dit als practicum opdracht krijgt, dan staat dit denk ik ook wel in je boek ;)

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Dat klopt, printf gebruikt dat ook, maar toch is het lastig om te gebruiken en de argumenten die je binnen krijgt in de functie is eigenlijk ook toch gewoon een array.

"Beauty is the ultimate defence against complexity." David Gelernter

Pagina: 1