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++] Segmentatiefout, maar programma werkt wel mét argumenten  (gelezen 1399 keer)

Offline Stefan de Vries

  • Lid
    • fermata
  • Steunpunt: Nee
Beste medeprogrammeurs,

ik werk voor de lol aan een C++-programma dat een paar dingen kan doen met de Rij van Fibonacci, namelijk:
-controleren of twee opeenvolgende getallen in een reeks Fibonaccigetallen zijn;
-de rij van Fibonacci tot een x aantal getallen weergeven.

Het programma werkt foutloos met commandline-argumenten, maar wanneer ik het programma probeer uit te voeren zonder argumenten krijg ik een segmentatiefout toegespeeld, ondanks dat daar in mijn programma rekening mee wordt gehouden.

Ik heb op verschillende gelezen dat het programma bij een segmentatiefout geheugen probeert te bereiken of aan te passen dat het niet mág aanpassen. Ik zie in mijn code echter
geen oorzaak van dit probleem. Kan iemand mij verder helpen? De broncode staat op Ubuntu Pastebin: http://pastebin.ubuntu.com/463385/

Alvast bedankt.
Stefan de Vries

« Laatst bewerkt op: 2010/07/14, 11:15:00 door SteefuitHeerlen »
Bezoek ook eens de Ubuntu NL IRC-kanalen! |

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Re: [C++] Segmentatiefout, maar programma werkt wel mét argumenten
« Reactie #1 Gepost op: 2010/07/14, 11:07:37 »
Je probeert strcmp() uit te voeren op argv[1] terwijl argv[1] niet bestaat indien er geen parameter wordt meegegeven
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Stefan de Vries

  • Lid
    • fermata
  • Steunpunt: Nee
Re: [C++] Segmentatiefout, maar programma werkt wel mét argumenten
« Reactie #2 Gepost op: 2010/07/14, 11:14:38 »
Ik laat main.cpp nu eerst "kijken" naar het aantal argumenten. Als dat 1 is, dus enkel de naam van het uitvoerbare bestand, geeft het programma een foutmelding en "returnt" een 0.
Zo dus:
int main(int argc, char* argv []){
if(argc == 1){
cout << "This program requires arguments. Try FCli -h to see which ones you can use.\n";
return 0;
}


Dank je voor je snelle reactie, profoX. Het werkt!  :)

Stefan

Edit
De uiteindelijke broncode kan gedownload worden via http://techsite.comeze.com/FCli.html
« Laatst bewerkt op: 2010/07/14, 12:32:13 door SteefuitHeerlen »
Bezoek ook eens de Ubuntu NL IRC-kanalen! |

Offline Rachid

  • Vertaalteam
    • rachidbm
    • Mijn blog
  • Steunpunt: Nee
Hey, de konijntjes van Fibonacci!

Hier een recursieve functie om te zien hoeveel konijntje je hebt na n maanden :P.
long fib(int n) {
    if (n == 0 || n == 1) {
      return n;
    } else {
      return fib(n - 1) + fib(n - 2);
    }
}
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
Hier heb je een expliciete functie:

Code: (C++) [Selecteer]
long fib(int n) {
   float phi = (1.0f + std::sqrt(5))/2.0f
   return long((std::pow(phi,n)-std::pow((1-phi),n))/sqrt(5))
}
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net