Springen naar inhoud

C++ opdracht met while


  • Log in om te kunnen reageren

#1

niels6908

    niels6908


  • 0 - 25 berichten
  • 3 berichten
  • Gebruiker

Geplaatst op 19 oktober 2007 - 08:32

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

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 19 oktober 2007 - 08:51

Lijkt erg hierop, heb je daar wat aan?
In theory, there's no difference between theory and practice. In practice, there is.

#3

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 19 oktober 2007 - 08:56

met welk getal begin je?
gewoon bij 1
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#4

niels6908

    niels6908


  • 0 - 25 berichten
  • 3 berichten
  • Gebruiker

Geplaatst op 19 oktober 2007 - 09:22

Ik begin bij een willekeurig getal

groetjes

#5

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 19 oktober 2007 - 09:53

#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;

}
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#6

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 19 oktober 2007 - 10:37

A.u.b. geen daadwerkelijke code voorzeggen. Daarmee help je namelijk niet.

#7

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 19 oktober 2007 - 10:46

euhm je hebt gelijk, ik was even te snel met een oplossing te posten
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#8

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 19 oktober 2007 - 17:39

Ik vat de opdracht niet echt, maar waarom dit stukje code?

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.

#9

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 19 oktober 2007 - 19:16

@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: LaTeX
- in absolute waarde: vorige + 1 : LaTeX
LaTeX

edit: mss wat omslachtig, kan zeker ook anders

Veranderd door jhnbk, 19 oktober 2007 - 19:16

Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#10

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 19 oktober 2007 - 23:13

Oh zo gaat de opdracht, dat kan idd een stukje makkelijker.

ik zou zoiets doen:

#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;
}

Veranderd door Cycloon, 19 oktober 2007 - 23:17


#11

Nvt

    Nvt


  • >25 berichten
  • 99 berichten
  • Ervaren gebruiker

Geplaatst op 20 oktober 2007 - 01:09

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;

#12

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 20 oktober 2007 - 08:36

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.

int total = 0
int teken = 1;
while (total >= 0) {
  int a = getNextA();
  total += teken * a;
  teken = -teken;
  generateOutput(a, total);
}

#13

niels6908

    niels6908


  • 0 - 25 berichten
  • 3 berichten
  • Gebruiker

Geplaatst op 20 oktober 2007 - 10:44

ziet er allemaal leuk uit ik ga het even testen en dan horen jullie meer;)
allemaal alvast bedankt

#14

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 20 oktober 2007 - 10:51

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
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#15

Nvt

    Nvt


  • >25 berichten
  • 99 berichten
  • Ervaren gebruiker

Geplaatst op 20 oktober 2007 - 14:54

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.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures