Bij deze de code, is getest met Borland C++ 5.01:
#include <stdio.h>
#include <conio.h>
main(){
float U[10], I[10], R[10];
char JaNee;
do{
clrscr();
for(int x=0;x<10;x++){
printf("Voer spanning nummer %d in:",x+1);
scanf("%f", &U[x]);
};
for(int x=0;x<10;x++){
printf("Voer stroom nummer %d in:",x+1);
scanf("%f", &I[x]);
};
for(int x=0;x<10;x++){
R[x]=U[x]/I[x];
printf("Weerstand nummer %d is %f\n",x+1, R[x]);
};
printf("Nog een keer ? J/N\n");
JaNee=getch();
while(!(JaNee=='J'||JaNee=='j'||JaNee=='N'||JaNee=='n')){
printf("Je kunt kiezen tussen J of N en jij vulde %c in, dat is niet de bedoeling !\n", JaNee);
printf("Dus vraag ik je weer: wil je nu nog een keer ? J/N\n");
JaNee=getch();
};
}while(JaNee=='J'||JaNee=='j');
}
Ik weet het: het is geen stabiele code, zodra je een letter invoerd op een plaats waar een getal had moeten worden ingevoerd gaat het mis. Ook wanneer je een stroom van nul invult gaat het mis (leverd een oneindige weerstand op).
Als je dit wilt voorkomen moet je veel meer code schrijven.
@golf2: Is dit zo ongeveer wat je bedoelde ?
super! ik zal hem morgen op school uitproberen ik heb namelijk zelf geen borland.maar ik ga er van uit dat dit goed werkt.ik weet eigenlijk niet goed hoe ik je moet bedanken.
misschien dat ik later nog terug kom op een paar instructies die ik niet snap maar ik denk dat ik er wel uitkom.
vr grt mark
ben ff bezig geweest met analyseren en ik snap 3 dingetjes niet.
1 do{?
zal wel gewoon zijn doen?
2 clrscr();
die vat ik helemaal niet.
3 getch?
voor de rest snap ik het aardig.
o ja nog iets conio.h is dat een aparte header ofzo?
mark
Jeroen Boere
IF you can't convince them, then confuse them!
Op 16 juni 2004 20:52:37 schreef golf2:
ben ff bezig geweest met analyseren en ik snap 3 dingetjes niet.
1 do{?
zal wel gewoon zijn doen?
2 clrscr();
die vat ik helemaal niet.
3 getch?
voor de rest snap ik het aardig.
o ja nog iets conio.h is dat een aparte header ofzo?mark
1. do....while = soort van loop functie
2. clrscr(); = clear screen. alle aanwezige informatie word van je scherm gehaalt.
3. getch(); = ?
getch()= get character ofzo denk ik (ik kan enkel java)
conio.h is gewoon een library die gebruikt wordt denk ik?
[Bericht gewijzigd door acheron op ]
Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.
Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.
conio.h is een include file.. om bepaalde instructies te kunnen aanroepen zoals getch() denk ik.
die stdio.h is de standaard include voor basic in en output zoals printf() en scanf() etc..
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
conio.h is een header file
conio = console io
stdio = standard io
io = input output
Een header file bevat alle definities van methodes uit de bijbehorende library. De header file word gebruikt voor het compileren, zodat de compiler de definities van de gebruikte functies kent. De linker zorgt er vervolgens voor dat de library ook daadwerkelijk meegenomen word in de executable.
do{ }while()Is een herhaling die wordt herhaald zolang datgene tussen de haakjes achter while een '1' opleverd. De code tussen de accolades wordt hierbij zowieso één maal uitgevoerd. Dit omdat je pas achteraf kijkt of er een '1' staat.
Je hebt ook
while(){ }Hierbij wordt eerst gekeken of datgene wat achter while tussen haakjes een '1' opleverd, zo niet dan wordt de code tussen de accolades niet uitgevoerd. Hierbij kan het dus zijn dat de code nooit wordt uitgevoerd.
clrscr()Leegt het scherm, maar hier moet ik nog wel even een opmerking plaatsen. Dit is namelijk geen ANSI C functie, maar een functie die door borland is toegevoegd. Indien je dus een andere compiler gebruikt zal deze dit niet herkennen en een foutmelding geven. Veel compilers hebben wel een functie die hetzelfde doet, maar een andere naam heeft.
getch()Deze functie 'leest' welke toets je indrukt, je programa zal wachten totdat je een toets hebt ingedrukt. Als jij een toets indrukt zal hij het karakter dat bij die toets hoort 'returnen' voorbeeld:
JaNee=getch()Als je nu een toets indrukt zal de variabele JaNee de waarde krijgen van de ingedrukte toets. Dus wanneer jij een 'j' intoetst zal JaNee de waarde 'j' krijgen. Later kun je kijken wat er in JaNee staat en aan de hand daarvan bepalen of het programma herhaald moet worden.
conio.hIs inderdaad een header file, deze moet je 'includen' zodat je compiler bepaalde functies kent.
Zodra je weer eens met borland werkt moet je maar eens kijken in de help. Daarin staat van elke functie en header wel een beschrijving.
File Edit Search Run Compile Debug Project Options Window Help
________________________________________________________________________________
_+-------------------------------- \PROGRA.TXT --------------------------2-----+
_Š+-[_]--------------------------- \PROGRA.EXE --------------------------5-[]-+
_ŠŠ#include <stdio.h>
_ŠŠ#include <conio.h> _
_ŠŠ _
_ŠŠmain(){ _
_ŠŠ float U[10], I[10], R[10]; _
_ŠŠ char JaNee; _
_ŠŠ do{ _
_ŠŠ clrscr(); _
_ŠŠ for(int x=0;x<10;x++){ _
_ŠŠ printf("Voer spanning nummer %d in:",x+1); _
_ŠŠ scanf("%f", &U[x]); _
_ŠŠ }; _
_ŠŠ for(int x=0;x<10;x++){ _
_ŠŠ printf("Voer stroom nummer %d in:",x+1); _
_ŠŠ scanf("%f", &I[x]); _
_ŠŠ }; _
_ŠŠ for(int x=0;x<10;x++){ _
_ŠŠ R[x]=U[x]/I[x]; _
_ŠŠ printf("Weerstand nummer %d is %f\n",x+1, R[x]); _
_ŠŠ }; _
_ŠŠ printf("Nog een keer ? J/N\n"); _
_ŠŠ JaNee=getch(); _
_ŠŠ while(!(JaNee=='J'||JaNee=='j'||JaNee=='N'||JaNee=='n')){ _
_ŠŠ printf("Je kunt kiezen tussen J of N en jij vulde %c in, dat is niet d_
_ŠŠ printf("Dus vraag ik je weer: wil je nu nog een keer ? J/N\n"); _
_ŠŠ JaNee=getch(); _
_ŠŠ }; _
_ŠŠ }while(JaNee=='J'||JaNee=='j'); _
_ŠŠ}
_++-€---- 29:2 -----________________________________________________________-+
________________________________________________________________________________
________________________________________________________________________________
+---------------------------------- Message -----------------------------3-----+
ŠCompiling ..\..\PROGRA.EXE: Š
Š Error ..\..\PROGRA.EXE 9: Expression syntax Š
Š Error ..\..\PROGRA.EXE 9: Undefined symbol 'x' Š
Š Error ..\..\PROGRA.EXE 9: Statement missing ; Š
Š Error ..\..\PROGRA.EXE 13: Expression syntax Š
Š Error ..\..\PROGRA.EXE 13: Statement missing ; Š
Š Error ..\..\PROGRA.EXE 17: Expression syntax Š
Š Error ..\..\PROGRA.EXE 17: Statement missing ; Š
Š Warning ..\..\PROGRA.EXE 29: Function should return a value Š
Š Š
Š Š
+------------------------------------------------------------------------------+
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt-F9 Compile F9 Make F10 Menu
ik weet niet of dat kan komen door de compiler. ik heb hem ingevoerd in borland c++. volgens mij een oude versie dos kon geen versie nr vinden
sorry had de compiler verkeerd staan
maar dan nog rekent hij de weerstand niet uit. je kunt alles netjes invullen en hij laat alle weerstanden wel zien maar komt allemaal nul uit.
ik heb 'e'en ding verandert en dat is bij de u r en de i gebruikde jij allemaal de x en kon niet volgens de compiler , dus heb ik x, y,en z vangemaakt en doorgevoerd.
suggesties
Laten we er eerst eens een leesbare opmaak van maken:
________________________________________________________________________________
_+-------------------------------- \PROGRA.TXT --------------------------2-----+
_Š+-[_]--------------------------- \PROGRA.EXE --------------------------5-[]-+
_ŠŠ#include <stdio.h>
_ŠŠ#include <conio.h> _
_ŠŠ _
_ŠŠmain(){ _
_ŠŠ float U[10], I[10], R[10]; _
_ŠŠ char JaNee; _
_ŠŠ do{ _
_ŠŠ clrscr(); _
_ŠŠ for(int x=0;x<10;x++){ _
_ŠŠ printf("Voer spanning nummer %d in:",x+1); _
_ŠŠ scanf("%f", &U[x]); _
_ŠŠ }; _
_ŠŠ for(int x=0;x<10;x++){ _
_ŠŠ printf("Voer stroom nummer %d in:",x+1); _
_ŠŠ scanf("%f", &I[x]); _
_ŠŠ }; _
_ŠŠ for(int x=0;x<10;x++){ _
_ŠŠ R[x]=U[x]/I[x]; _
_ŠŠ printf("Weerstand nummer %d is %f\n",x+1, R[x]); _
_ŠŠ }; _
_ŠŠ printf("Nog een keer ? J/N\n"); _
_ŠŠ JaNee=getch(); _
_ŠŠ while(!(JaNee=='J'||JaNee=='j'||JaNee=='N'||JaNee=='n')){ _
_ŠŠ printf("Je kunt kiezen tussen J of N en jij vulde %c in, dat is niet d_
_ŠŠ printf("Dus vraag ik je weer: wil je nu nog een keer ? J/N\n"); _
_ŠŠ JaNee=getch(); _
_ŠŠ }; _
_ŠŠ }while(JaNee=='J'||JaNee=='j'); _
_ŠŠ}
_++-€---- 29:2 -----________________________________________________________-+
________________________________________________________________________________
________________________________________________________________________________
+---------------------------------- Message -----------------------------3-----+
ŠCompiling ..\..\PROGRA.EXE: Š
Š Error ..\..\PROGRA.EXE 9: Expression syntax Š
Š Error ..\..\PROGRA.EXE 9: Undefined symbol 'x' Š
Š Error ..\..\PROGRA.EXE 9: Statement missing ; Š
Š Error ..\..\PROGRA.EXE 13: Expression syntax Š
Š Error ..\..\PROGRA.EXE 13: Statement missing ; Š
Š Error ..\..\PROGRA.EXE 17: Expression syntax Š
Š Error ..\..\PROGRA.EXE 17: Statement missing ; Š
Š Warning ..\..\PROGRA.EXE 29: Function should return a value Š
Š Š
Š Š
+------------------------------------------------------------------------------+
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt-F9 Compile F9 Make F10 MenuIk heb nooit gewerkt met de dos versie, maar je compileerd normaal geen .exe bestand maar een .c of .cpp bestand, het resultaat is dan een .exe bestand.
Het zou aan de compiler kunnen liggen, indien dit geen ANSI C compiler is kun je inderdaad problemen krijgen.
K&R C vereist een return van de main-functie, dat zou i.i.g. de laatste error kunnen verklaren.
dit kun je oplossen door van
main(){te maken
int main(void){en voor de laatste regel
return 0;in te voegen.
Ook niet alle compilers accepteren een variabele declaratie in een for-loop, dit zou ook een aantal errors kunnen verklaren.
Dit kun je verhelpen door
for(int x=0;x<10;x++){te vervangen door
for(x=0;x<10;x++){en dan nog een regel toevoegen:
char JaNee;
int x; << deze regel toevoegen.
do{remko zet even entertjes in je ubb code, nu staat het er nogal vaag, maakt het voor de vraagsteller makkelijker
Op 17 juni 2004 13:25:17 schreef High met henk:
remko zet even entertjes in je ubb code, nu staat het er nogal vaag, maakt het voor de vraagsteller makkelijker
Huh ? Wat bedoel je ?
je hebt het al opgelost zag ik 
net stond er dit
{code}
for(int x=0;x<10;x++){{/code}te vervangen door{code}for(x=0;x<10;x++){
{/code}
door de code zonder enter te doen gaat het vaak fout hier
op het forum let ff op [ = eigenlijk { maar nu doet hij het ineens wel goed 
[Bericht gewijzigd door High met Henk op ]
@Hmh: ik heb niks veranderd, het zal wel uit zichzelf zijn opgelost.
Maar jij hebt je bericht nu al 2 keer veranderd, telkens als ik wil antwoorden staat er wat anders. Als je voortaan nou eerst eens op de preview-knop drukt dan hoef je ook niet zo vaak te editten.
hmm het probleem is dat die previeuw knop hier niet goed werkt, dan gaat heel die ubb code op zijn/haar gezicht. maybe heeft mijn browser er moeite meej, zou best weleens kunnen, de reden da tik het wijzigde was omda thij het nu dus weer wel deed, maar met de preview knop heb ik slechte ervaringen: dubbele post, triple posts, helemaal geen posts en al die dingen en dan nog klopt vaak de ubb code niet met wat er in et echt komt te staan, is heel irri:(
@Hmh: preview werkt bij mij prima, en ik vele versies van IE gebruikt.
@golf2: helpen de door mij voorgestelde wijzigingen ?
ik denk wel het, maar ik ben nu thuis en heb geen compiler hier. ik heb wel geprobeerd borland te donwloade maar ding doet het niet.
alweer bedankt voor de tips.
ik laat het je morgenochten wel weten,
mark
Op 17 juni 2004 16:30:19 schreef mark m:
ik laat het je morgenochten wel weten.
Ik ben de komende dagen slechts sporadisch online, dus een reactie kan wel eens even op zich laten wachten.
je raad het nooooooooit ?
hij doet het:):):).
jongens super bedanktt!
remko ik heb alle aanpassing doorgevoerd die jij mij voorstelde. en in een keer goed.
vr grt mark