Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost] [C] [VAL] Probleem met functie  (gelezen 843 keer)

Offline Joshua822

  • Documentatieteam
  • Steunpunt: Nee
[Opgelost] [C] [VAL] Probleem met functie
« Gepost op: 2009/08/20, 20:17:43 »
Hallo allemaal.

Als eerste, wil ik even de afkorting "VAL" verklaren. Hiermee bedoel ik "Variabele argument lijst ". Ik zal deze ook verderop in deze post en dit draadje gebruiken.

Dit is nog zeer nieuwe leerstof voor mij en ik hoop daarom ook dat iemand mij advies kan geven.

Ik wil dus een simpele functie schrijven met behulp van een VAL die een willekeurig ( minstens één ) aantal argumenten neemt en deze bij elkaar optelt.

Nu, ik heb hiervoor de volgende code geschreven :

#include <stdarg.h>
#include <stdio.h>

 double add ( int a, ... )
 {
   double som;
   int x;
   va_list termen;
   va_start ( termen, a );

   for ( x = 0; x < a; x++ )
     som += va_arg ( termen, int );

   va_end ( termen );
 
   return som;
 }

 int main()
 {
   double uitvoer;
   uitvoer = add ( 6, 12, 21 );
   printf ( "%d", uitvoer );
 
   return 0;
 }

Maar ik krijg verkeerde uitvoer als, bijvoorbeeld "1740636160", dat is niet echt de bedoeling neem ik aan.

Nog even over de For lus, met de expressie x < a wil ik proberen te kijken of x kleiner is dan het aantal argumenten, maar ik weet niet of ik dit goed doe.

Alvast hartelijk bedankt :)
« Laatst bewerkt op: 2009/08/20, 22:02:52 door Joshua822 »

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Re: [C] [VAL] Probleem met functie
« Reactie #1 Gepost op: 2009/08/20, 20:42:03 »
- variabele a hoort niet bij de variabele argumenten lijst, hier kan je bv. het aantal getallen zetten, anders kan de functie dit niet weten
- je tracht een double als een integer uit te printen

Probeer dit:

#include <stdarg.h>
#include <stdio.h>

 double add ( int a, ... )
 {
   double som;
   va_list termen;
   va_start ( termen, a );

   for ( ; a > 0; a-- )
     som += va_arg ( termen, int );

   va_end ( termen );

   return som;
 }

 int main()
 {
   double uitvoer;
   uitvoer = add ( 3, 6, 12, 21 );
   printf ( "%g\n", uitvoer );

   return 0;
 }
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Joshua822

  • Documentatieteam
  • Steunpunt: Nee
Re: [C] [VAL] Probleem met functie
« Reactie #2 Gepost op: 2009/08/20, 22:02:04 »
Bedankt, dit probleem is opgelost.