Springen naar inhoud

C++ probleem fibonacci


  • Log in om te kunnen reageren

#1

Danieln

    Danieln


  • 0 - 25 berichten
  • 4 berichten
  • Gebruiker

Geplaatst op 18 oktober 2007 - 08:43

beste mensen...
voor school heb ik een programmeer opdracht.
Ik moet een programma schrijven dat als je twee getallen op de commandline invult deze optelt als een rij a la fibonacci...
hij moet alle uitgerekende getallen printen tot aan het beriek van de signed integer dus 65767 ik hoop van harte dat iemand mij hiermee kan helpen!!
alsvast bedankt
daniel

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 18 oktober 2007 - 08:57

Tenzij je op een systeem uit de vorige eeuw werkt, is het bereik van een signed integer 2147483647 (en anders 32767) ;)

Wat is het probleem, waar loop je vast? Kun je om te beginnen een simpel basisprogje opzetten dat de twee ingevulde getallen leest en op het scherm print?
In theory, there's no difference between theory and practice. In practice, there is.

#3

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 18 oktober 2007 - 09:19

Dit lijkt me niet zo'n moeilijke opdracht, tot welk punt geraak je zelf?

#4

Danieln

    Danieln


  • 0 - 25 berichten
  • 4 berichten
  • Gebruiker

Geplaatst op 18 oktober 2007 - 09:33

sorrie kweet weer wat t bereik is:P
En trouwens er moet een while-statemant gebruikt worden...

Ik kom niet zo ver..
Dit s niet mijn sterke kant als k er heel lang voor ga zitten kom k wel ergens maar daar heb k de tijd niet voor.

ik weet wel wat het programma moet gaan doen:

na invoeren van 2 willekeurige getallen op commandline moeten ongeveer dit loopje worden gebruikt...

C1
C2
C3 = C1 + C2

C1
C2 > C1
C3 > C2 > C1
..........C3 > C2
....................C3

dit moet elke keer doorgaan totdat de MAXINT is bereikt. Ook moet het programma de uitgerekende waardes printen in een rij.
mvrgr. daniel

Veranderd door Danieln, 18 oktober 2007 - 09:34


#5

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 18 oktober 2007 - 10:03

Het is dus helemaal niet zo moeilijk. In m'n while kijk ik tot wanneer de waarde negatief wordt (dan zit je over de max int heen). Voor de rest is het dus gewoon telkens de 2 voorgaande waarden optellen.

Wat ik net merk aan je uitleg is dat je het waarschijnlijk zonder tabel moet doen. Ik zal die code ook ff posten.

#include<iostream>
using namespace std;

int main() {
	int reeks[200];
	cin >> reeks[0];
	cin >> reeks[1];
	
	cout << reeks[0] << " ";
	
	int i=1;
	while (reeks[i]>0) {
		cout << reeks[i] << " ";
		i++;
		reeks[i]=reeks[i-1]+reeks[i-2];
	}
	return 0;
}

zonder tabel:

int main() {
	int c1, c2, c3;
	cin >> c1;
	cin >> c2;
	
	c3=c1+c2;
	
	cout << c1 << " ";
	cout << c2 << " ";
	
	while (c3>0) {
		cout << c3 << " ";
		c1=c2;
		c2=c3;
		c3=c2+c1;
	}
	
	return 0;
}

Veranderd door Cycloon, 18 oktober 2007 - 10:12


#6

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 18 oktober 2007 - 10:25

In m'n while kijk ik tot wanneer de waarde negatief wordt (dan zit je over de max int heen)

Dit was de enige echte trick question in deze opdracht denk ik ;)

Het kan natuurlijk ook met while (MAXINT-c2 >= c1)
In theory, there's no difference between theory and practice. In practice, there is.

#7

Iwerke

    Iwerke


  • >250 berichten
  • 407 berichten
  • Ervaren gebruiker

Geplaatst op 18 oktober 2007 - 10:38

moet je niet eerst initialiseren dat je eerste twee waardes van de reeks '1' zijn?

of worden de 1ste twee waardens gevraagd aan de gebruiker tijdens de voorbeelden hier boven?
( ben niet echt volledig vertrouwd met C++)

ah nvm in de opdracht stond ook dat de getallen ingegeven moeten worden.

Veranderd door Iwerke, 18 oktober 2007 - 10:40

I know not with what weapons World War III will be fought, but World War IV will be fought with sticks and stones.
_-'-.Albert Einstein.-'-_

#8

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 18 oktober 2007 - 11:26

de "cin" opdracht zorgt daar dus voor ;)

#9

Danieln

    Danieln


  • 0 - 25 berichten
  • 4 berichten
  • Gebruiker

Geplaatst op 18 oktober 2007 - 15:53

mogguh...
kheb nu dit gemaakt... de compiler geeft alleen nog een paar fouten aan.. weten jullie waar ze zitten..
bij nader navragen bij leraar hoefden er geen commandline arguments gegeven te worden.


/* Fibonacci.cpp
INPUT: twee cijfers willekeurig gekozen
VERW.: De getallen optellen a la fibonacci tot aan 32767
OUTPUT: alle opgetelde getallen*/


include<iostream.h>


int main()
{
int c1;
cout << Geef het eerste getal!! ";
cin >> C1; //Lees het eerste getal

int c2;
cout << Geef het tweede getal!! ";
cin >> C2; //Lees het tweede getal

int c1, c2, c3;

cin >> c1;
cin >> c2;

c3=c1+c2;

cout << c1 << " ";
cout << c2 << " ";

while (c3>0)
{
cout << c3 << " ";
c1=c2;
c2=c3;
c3=c2+c1;
}

return 0;
}


mvrgr. daniel

#10

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 18 oktober 2007 - 17:22

mogguh...
kheb nu dit gemaakt... de compiler geeft alleen nog een paar fouten aan.. weten jullie waar ze zitten..

Dat geeft je compiler toch aan?

Maar zo op het eerste gezicht: #-teken voor include vergeten, geen quotes aan begin van strings, hoofd- en kleine letters door elkaar gebruikt voor variabelen, dubbele declaratie van c1 en c2 (en je leest ze ook twee keer in met cin trouwens).
In theory, there's no difference between theory and practice. In practice, there is.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures