Archief - C-Taal : Wat is er mis ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

CosMiced

Legacy Member
We zijn op school een soort programma aanmaken met lokaal en globaal functies , maar dit draait voor geen meter en de leerkracht weet zelf niet wat de fout is :P
we hebben geprobeert met void maar dit helpt niet :(

#include <stdio.h>
#include <iostream>

int som;
main()
{
int index;
hoofding()
for (index=1;index<=7;index++)
kwadraat(index)
einde();
}
hoofding()
{
som=0;
printf("Dit is het begin van het prg\n\n");
}
kwadraat(getal)
int getal;
{
int a;
a=getal*getal;
som+=a;
printf("Het kwadraat van %d is %d\n",getal,a);
}
einde()
{
printf("De som van de kwadraten is %d\n",som);
}


system ("PAUSE");
Return 0 ;
}



MvG

Parnakra

Legacy Member
Je sluit je main op lijn 12, de laatste 3 lijnen slaan dus op niets.

CosMiced

Legacy Member
Parnakra zei:
Je sluit je main op lijn 12, de laatste 3 lijnen slaan dus op niets.

Die Lijn 12 weg en de laatste 3 lijnen ook ? ma je hebt die laatste toch nodig voor u programma aftesluiten ?

Daedie

Legacy Member
Wat wilt ge eigenlijk precies verwezenlijken met uw code?

Om te beginnen staat het vol met fouten tegen basis-syntrax (ge vergeet regels af te sluiten met ";", uw functies hebben geen return type).

Maar ook uw hele programma grammatica is ongeldig, omdat ge uw main afsluit net na einde(); (zonder iets te returnen bovendien). En dan nog eens iets probeert af te sluiten dat nooit ge-opent is (laatste 3 regels).

Kheb zo'n vermoeden dat ge aant proberen zijt om uw functies binnen de scope van uw main functie te definiëren, iets dat zover ik weet totaal niet mogelijk.

CosMiced

Legacy Member
Maja :P tgaat over lokale en globale functies dus het zou zo moeten :S

Daedie

Legacy Member
gaat het niet toevallig over lokale en globale variabelen ipv functies?

Daedie

Legacy Member
Ok, dan moet ge uw functies verhuizen buiten de scope van uw main (erboven, om het makkelijk te maken), return type geven en uw syntax foutjes oplossen.

edit

en:

kwadraat(getal)
int getal;
{
...
}

is ook niet geldig. moet zijn:

kwadraat(int getal)
{
...
}

Krueger

Legacy Member
Als de leerkracht zelf niet weet wat er fout is, dan moet die dringend eens een andere job zoeken denk ik. Want dat staat echt wel vol met fouten. (minstens 5 ofzo op zo'n klein basisprogramma'tje)

Tyfius

Legacy Member
Daedie zei:
Ok, dan moet ge uw functies verhuizen buiten de scope van uw main (erboven, om het makkelijk te maken), return type geven en uw syntax foutjes oplossen.

edit

en:

kwadraat(getal)
int getal;
{
...
}

is ook niet geldig. moet zijn:

kwadraat(int getal)
{
...
}
Dat is wel geldig. Maar als zijne cursus dat leert zou ik eens een nieuwe cursus zoeken, bij voorkeur eentje die dateert van na 1980. Desalniettemin ondersteunen vrijwel alle compilers dit nog. Afgaand op de rest van de code (functies zonder return type) is die hele cursus ongelooflijk gedateerd. Tijd voor een nieuwe.

Daarnaast slaat uw programma zoals dat hier staat inderdaad op niets. Ge haalt dingen door elkaar. Ge roept functies aan die nog niet gedeclareerd zijn, ge gebruikt geen ; tekens als ge die aanroept... Ik zou die cursus toch eens grondig herbekijken. Ik weet niet naar welke school je gaat, maar misschien moeten ze daar toch eens met die leerkracht spreken want dit zouden ze eigenlijk moeten verbieden van nog te leren.

edit:
Het meest viel ik achterover van uw includes. stdio.h EN iostream? Dat is 2 talen door mekaar halen.

Daedie

Legacy Member
Tyfius zei:
Dat is wel geldig. Maar als zijne cursus dat leert zou ik eens een nieuwe cursus zoeken, bij voorkeur eentje die dateert van na 1980. Desalniettemin ondersteunen vrijwel alle compilers dit nog. Afgaand op de rest van de code (functies zonder return type) is die hele cursus ongelooflijk gedateerd. Tijd voor een nieuwe.

Ah, dat wist ik niet. We leren nog iets bij ^^.

MorGo7h

Legacy Member
Ik kan nu wel geen C, maar ist ni simpeler voor gwn te zette:

for (int i = 1; index<=7; index++) { //evt. index ipv i, maar iets declareren voor een stomme forlus? :s
}

Daedie

Legacy Member
MorGo7h zei:
Ik kan nu wel geen C, maar ist ni simpeler voor gwn te zette:

for (int i = 1; index<=7; index++) { //evt. index ipv i, maar iets declareren voor een stomme forlus? :s
}

Mag niet in c. declaraties moeten aant begin van een functie.

Uw schrijfwijze bevat bovendien ook een declaratie van int i. Maar dan 1 die enkel geldig is in de scope van de for lus.

Tyfius

Legacy Member
Daedie zei:
Mag niet in c. declaraties moeten aant begin van een functie.

Uw schrijfwijze bevat bovendien ook een declaratie van int i. Maar dan 1 die enkel geldig is in de scope van de for lus.
C99 heeft daar geen probleem meer mee. GCC kan daar mee overweg maar de compiler die bij Visual Studio zit niet.

MorGo7h

Legacy Member
Daedie zei:
Mag niet in c. declaraties moeten aant begin van een functie.

Uw schrijfwijze bevat bovendien ook een declaratie van int i. Maar dan 1 die enkel geldig is in de scope van de for lus.

Kzeg het, kan geen c dus kzout ni weten.
Zijn index wordt toch niet buiten de lus gebruikt? Dus leek het mij overbodig om die appart nog is te declareren.
Watk mij ook afvraag is wrm die { telkens op een nieuwe lijn worden gezet? Kvind da vrij onoverzichtelijk. Of is dat ook een apparte stijlregel voor c? :unsure: :p

Tyfius

Legacy Member
MorGo7h zei:
Kzeg het, kan geen c dus kzout ni weten.
Zijn index wordt toch niet buiten de lus gebruikt? Dus leek het mij overbodig om die appart nog is te declareren.
Watk mij ook afvraag is wrm die { telkens op een nieuwe lijn worden gezet? Kvind da vrij onoverzichtelijk. Of is dat ook een apparte stijlregel voor c? :unsure: :p
In C zijn er eigenlijk verschillende gangbare indentatie regels. De meesten worden hier uitgelegd: Indent style - Wikipedia, the free encyclopedia

K&R was de eerste (aangezien zij de taal ontwikkeld hebben), BSD wordt vaak gebruikt.

Het hangt er vooral van af welke indentatie ze in het bedrijf of voor het project waar je aan werkt gebruiken, maar een echte single standaard is er niet.

Curahee Q

Legacy Member
Dat is toch uweige stijl waar ge die { zet.

Bij ons op school hanteren ze de regel
- Bij aanmaken functies wordt { op een nieuwe regel gezet
- Bij elke andere aanroep wordt hij erachter geplaatst

Niet dat ze daar strikt in zijn want ik zet altijd mijn { erachter. Het is wat jij het overzichtelijkste vindt.

Cycloon

Legacy Member
Binnen een bedrijf moet je toch de bedrijfscultuur volgen, onafhankelijk van wat je op school leert. Doe dus maar gewoon wat je zelf het beste vindt ;) (maar zorg wel dat je een bepaalde stijl aanhoudt natuurlijk :p).

Daedie

Legacy Member
MorGo7h zei:
Watk mij ook afvraag is wrm die { telkens op een nieuwe lijn worden gezet? Kvind da vrij onoverzichtelijk. Of is dat ook een apparte stijlregel voor c? :unsure: :p

Tis maar wat ge gewoon zijt, ik zet mijn { ook altijd op een nieuwe regel en ik vind code waarbij { achter de functie staat minder aangenaam lezen.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan