![]() |
[C] infinite loop verkeerde waarde
Code:
Ik kan btw ook unsigned ints gebruiken voor dit algoritme, maar of dit echt nut heeft weet ik niet zeker - ik zal hoogstens wat meer waardes kunnen evalueren. Het punt is dat 'm in een infinite loop raakt bij verkeerde input (alles wat niet een cijfer is), en dat is heel irritant. Slimme jongens zeggen nu wel 'ja maar hij is altijd in een infinite loop - ik bedoel uiteraard dat 'm de scanf() functie niet meer uitvoert, en gewoon alles telkens blijft herhalen. Weet iemand een manier om dit te voorkomen? |
fflush(stdin);
ervoor zetten. |
waarvoor precies? :O
|
Code:
main() Dit moet werken... |
Code:
edit: en btw, ik weet zeker dat er een meer efficient algoritme moet zijn voor het vinden van priemgetallen :O je hoeft nl alleen maar door priemgetallen te delen. Probleem daarvan is dat je eerst wel een array moet hebben van die priemgetallen. |
Was de bedoeling idd (code niet goed gelezen)
ipv van %*s kan je eigenlijk beter %*[^\n] (leest tot newline), dan moet je eigenlijk ook een do while loopje ervoor maken, je kan nu meerdere invoeren op een regel geven: "2 3 4 5 6", tenzij je dit goed vind Voor beter algo moet je even kijken op google. Er zijn algos die zonder tabel kunnen controleren op priem in kortere tijd. Maar het gaat toch snel genoeg zo ? En natuurlijk even zeuren over slechte code :) 1. main MOET int zijn (ANSI C) 2. main MOET return value geven (ANSI C) |
hmm, als ik t goed begrijp treed er een probleem op wanneer de invoer niet numeriek is? Kan je niet gewoon effe kijken wat de invoer is voordat je t schrijft naar een variable? Of anders nadat het geschreven is controleren of t wel of geen geldige variable is en zoniet een break; ?
|
Citaat:
|
ja natuurlijk wel, maar ik druk nog wel 'ns op omhoog voor ik op enter druk, en dan flipt 'm ook :) en het is makkelikjker dat sofwarematig op te lossen
GVR... ehm... ik ga nog wel ff kjken of ik dat kan implementeren... maar eigenljk snap ik nog niet helemaal wat die code doet :bloos: edit: k heb zojuist factor herschreven :cool: bedankt, het heeft geholpen :) |
Citaat:
Het is uiteraard wel aardig om op te schrijven, voor t geval je een kutcompiler hebt. btw, als ik de functies sqrt(), pow() en de andere functies van math.h gebruik, moet ik de -lm optie van gcc gebruiken, omdat 'm anders niet compileert. Wete jullie hoe dit komt, en of het te omzeilen valt? bedankt :) |
Citaat:
Je kan er niet onderuit, anders krijgen de functies in math.h geen bijhorende code. Functies die geen returnvalue geven, geven niet perse 0 terug !!! Zij geven een ongedefineerde waarde terug. En main mag dan impliciet int zijn, volgens mij is dat er ook uit in c99... |
is er eigenlijk een manier om een functie meerdere variabelen terug te laten geven? want ik zou graag een functie invoer() willen maken die het volgende doet:
Code:
/*invoer*/ |
Citaat:
Code:
|
Code:
void invoer(int *p, int *q) aan te roepen met Code:
int a,b; Code:
int a,b,*p,*q; ik wist niet dat scanf naar 'n adres stuurde (hoewel t wel logisch is, gezien je ook &a voor n normale variabele geeft) |
Citaat:
Citaat:
Citaat:
Citaat:
Als je een beetje goede inleiding wil in C (dat is pointers ed) kan ik je aanraden om de tutorial te lezen van lcc-win32 (google naar lcc-win32 voor website :) ) Hoewel er enkele windows onderdelen in zitten geeft hij heel wat duidelijkheid over C zelf. |
Citaat:
|
:O het zit weer ns niet mee
ik hoef voor geen enkele functie uit <string.h> iets extra's te doen, maar voor strien() wel, heb t zo gefixt (met wat hulp uit m'n boek ;)) Code:
is er een compilatieoptie om het te fixen? dat is makkelijker dan dit telkens mee te voegen :) hoewel ik natuurlijk altijd een header file kan maken |
Citaat:
|
oeps, jah ... :bloos:
|
Alle tijden zijn GMT +1. Het is nu 12:12. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.