Pagina 1 van 2

C++ opdracht met while

Geplaatst: vr 19 okt 2007, 09:32
door niels6908
Hoi allemaal,

Ik heb een opdracht gekregen om een programma te schrijven die het volgende doet:

Afwisselend het volgende getal optelt en aftrekt en stopt als het totaalresultaat negatief wordt. (dus: a1+a2-a3+a4-a5 …). Bedenk zelf een fraaie output.

Hierbij moet uiteraard gebruik worden gemaakt met een while functie

Wie zou mij kunnen helpen?????

Alvast bedankt

Groetjes Niels

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 09:51
door Rogier
Lijkt erg [topic="72849"]hierop[/topic], heb je daar wat aan?

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 09:56
door jhnbk
met welk getal begin je?

gewoon bij 1

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 10:22
door niels6908
Ik begin bij een willekeurig getal

groetjes

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 10:53
door jhnbk

Code: Selecteer alles

#include <iostream.h>

#include <math.h>



int main()

{

	int a,totaal;

	cout << "a0 = ";

	cin >> a;

	totaal=a+a+1;

	a++;

	cout << a << "\n";

	

	while (totaal>=0)

	{

		  a=-1*abs(a)*(abs(a)+1)/a;

		  totaal=totaal+a;

		  cout << a << "\n";

	}

	cout << "totaal = " << totaal << "\n";

	system("pause");

	return 1;

}

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 11:37
door EvilBro
A.u.b. geen daadwerkelijke code voorzeggen. Daarmee help je namelijk niet.

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 11:46
door jhnbk
euhm je hebt gelijk, ik was even te snel met een oplossing te posten

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 18:39
door Cycloon
Ik vat de opdracht niet echt, maar waarom dit stukje code?

Code: Selecteer alles

a=-1*abs(a)*(abs(a)+1)/a;
En waarom eindig je met return 1; ? return 0; lijkt eigelijk wel stukken logischer. return 0 heeft de betekenis dat het programma correct geëindigt is, jij geeft dus de indruk dat het programma foutief is afgelopen.

Re: C++ opdracht met while

Geplaatst: vr 19 okt 2007, 20:16
door jhnbk
@Cycloon: return 1 moet idd 0 zijn, dat is een vergissing

a=-1*abs(a)*(abs(a)+1)/a;

de vraag is met beginwaarde bv 5

wanneer deze som < 0

5 + 6 - 7 + 8

totaal is het geheel, waarbij de a telkens het getal is dat erbij komt:

- altijd ander teken:
\(-1 \cdot \frac{|a|}{a}\)
- in absolute waarde: vorige + 1 :
\(|a|+1\)
\(a_{n+1} = -1 \cdot \frac{|a_n|}{a_n} (|a_n|+1)\)
edit: mss wat omslachtig, kan zeker ook anders

Re: C++ opdracht met while

Geplaatst: za 20 okt 2007, 00:13
door Cycloon
Oh zo gaat de opdracht, dat kan idd een stukje makkelijker.

ik zou zoiets doen:

Code: Selecteer alles

#include <iostream>

using namespace std;

int main() {

int a;

cout << "a0 = ";

cin >> a;

int totaal=a;

int teken=1,i=1;

while (totaal>=0) {

totaal+=teken*(a+i);

cout << teken*(a+i) << endl;

teken*=-1;

i++;

}

cout << "totaal = " << totaal << endl;

system("pause");

return 0;

}

Re: C++ opdracht met while

Geplaatst: za 20 okt 2007, 02:09
door Nvt
Code staat er al, bij eenvoudige oefen programma's is het toevoegen van commentaar niet zo belangrijk.

Tenzij ergens in de code een logische fout staat en je weet niet waar, dan is het handig om ieder statement van commentaar te voorzien. Je krijgt dan een soort herleidings effect, je dwingt je om iedere regel nog eens goed te bekijken.

Heb je de fout dan nog steeds niet gevonden, dan kan je herleidingsregels gaan gebruiken. Ik dacht dat je dan bij iedere bewerking van het programma de toestandsverandering gaat weergeven.

Voorbeeld van commentaar:

// voor de opslag van het opvolgende getal

int a;

// opslag totaal, a wordt er bij geteld of afgetrokken

int totaal;

// zolang totaal >= 0 en dus niet negatief

while (totaal>=0)

{ ... }

// voor de weergave totaal, totaal komt na while en is negatief moet dus -1 weergeven

cout << "totaal = " << totaal << endl;

Re: C++ opdracht met while

Geplaatst: za 20 okt 2007, 09:36
door EvilBro
Afwisselend het volgende getal optelt en aftrekt en stopt als het totaalresultaat negatief wordt. (dus: a1+a2-a3+a4-a5 …).
De opdracht die je gekregen hebt is vast precieser. Ik ben er redelijk van overtuigd dat hetgeen jhnbk doet niet de bedoeling is.

Wat betreft de (mijn inziens vage) post over commentaar. Als inline-commentaar nodig is dan is waarschijnlijk je code niet goed opgesplitst. Het volgende stukje code is bijvoorbeeld zo leesbaar dat er geen reden is voor commentaar.

Code: Selecteer alles

int total = 0

int teken = 1;

while (total >= 0) {

  int a = getNextA();

  total += teken * a;

  teken = -teken;

  generateOutput(a, total);

}

Re: C++ opdracht met while

Geplaatst: za 20 okt 2007, 11:44
door niels6908
ziet er allemaal leuk uit ik ga het even testen en dan horen jullie meer;)

allemaal alvast bedankt

Re: C++ opdracht met while

Geplaatst: za 20 okt 2007, 11:51
door jhnbk
De opdracht die je gekregen hebt is vast precieser. Ik ben er redelijk van overtuigd dat hetgeen jhnbk doet niet de bedoeling is.
zou heel goed kunnen, ik heb maar geschreven wat ik dacht dat de opdracht was

@Cycloon: jouw versie is duidelijk beter, je hebt enkel een variabele meer :D

Re: C++ opdracht met while

Geplaatst: za 20 okt 2007, 15:54
door Nvt
Het volgende stukje code is bijvoorbeeld zo leesbaar dat er geen reden is voor commentaar.
Maar had je nu wel commentaar gebruikt in dat kleine stukje code:

Dan had ik me minder moeite hoeven te doen om het te begrijpen.

Dan was de code over een jaar nog duidelijk geweest.

Dan had je, waarschijnlijk, a voor while gedeclareerd waardoor het nog iets efficiënter was.