Article View: be.comp.programming
Article #17633Re: wat is mjn fout bij volgend C-programma
From: Lieven Marchand
Date: Thu, 18 Nov 1999 00:00
Date: Thu, 18 Nov 1999 00:00
102 lines
2661 bytes
2661 bytes
"Joris Van Droogenbroeck" <Joris.Van.Droogenbroeck@pandora.be> writes:
> Voor school moet ik een C-programma schrijven die alle priemgetallen
> afdrukt. Doch na compilatie en uitvoerig doet hij niets buiten af te
Moet het ooit stoppen? Er zijn nogal veel priemgetallen ;-)
> printen: "Dit zijn de priemgetallen"? Kan iemand mijn fout vinden, ik vind
> ze niet !
>
> #include <stdio.h>
> #include <conio.h>
De header conio.h is niet standaard C.
>
> void priem(int getal)
> { int i, test,uitk;
> i=getal-1;
> test=1;
> do
>
Ik veronderstel dat hier een { ontbreekt. Probeer ook wat meer
indentatie en ruimte te laten.
>
> uitk=getal%i;
> if (uitk<test) { test=0; }
> i--;
> }
> while ((i>=2) || (test!=0));
> if (test!=0)
> { printf ("%d ",getal); }
> }
>
Je pakt dit nogal omslachtig aan. Wat wil je eigenlijk doen: testen of
een van de getallen kleiner dan getal een deler is. Gebruik een for
loop en break wanneer je succes hebt. Het heeft ook geen zin de even
getallen te proberen als deler.
void priem( int getal )
{
int index;
/* 2 is priem */
if(getal==2)
{
printf("%d ", getal);
return;
}
/* andere even getallen niet */
if(getal%2==0)
return;
for(index=3;index<getal;index+=2)
{
if(getal%index==0) /* we hebben een deler gevonden */
return;
}
/* als we hier aankomen hebben we geen deler gevonden */
printf("%d ", getal);
return;
}
Deze routine heeft net als de jouwe problemen met negatieve
argumenten. Als je het idee van even getallen vermijden verder
uitwerkt kom je op de Zeef van Eratosthenes wat een efficientere
manier is om je probleem op te lossen.
> void main()
In C kan main 2 prototypes hebben:
int main() en int main(int, char *[]). void main() is niet toegelaten.
> {
> clrscr();
niet standaard functie
> printf ("Dit zijn de priemgetallen\n");
> for (int i=2; i<=100; i++)
C++ syntax. In standaard C moet je de variable i te voren declareren.
> {
> priem (i);
> }
> getch();
niet standaard functie
> }
>
>
--
Lieven Marchand <mal@bewoner.dma.be>
If there are aliens, they play Go. -- Lasker
Technical Details
Message-ID:
<m366yzmoiw.fsf@localhost.localdomain>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<5sXY3.1067$UW4.29942@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,d68fc8b5c744907e X-Google-Attributes: gidfcea4,public From: Lieven Marchand <mal@bewoner.dma.be> Subject: Re: wat is mjn fout bij volgend C-programma Date: 1999/11/18 Message-ID: <m366yzmoiw.fsf@localhost.localdomain> X-Deja-AN: 550618479 References: <5sXY3.1067$UW4.29942@afrodite.telenet-ops.be> Organization: Only under extreme pressure Newsgroups: be.comp.programming