Multidesk.be » Forums » C en C++ » lees getallen in

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door jack1234 op donderdag 29 november 2007 om 14:08:14.
jack1234 heeft nog geen avatar toegevoegd
Multiviteit: 2
hallo,
wie kan mij met het volgend vraag stuk helpen?

Lees 20 gehele getallen in en tel hoe vaak het voorkomt dat een groter getal direckt wordt gevolgd door een kleiner....

tot nu toe heb ik dit kunnen bereiken, maar ik krijg steeds weer foutmeldingen
ikben pas met c++ begonnen.....
CODE
  1. #pragma hdrstop
  2. #include <iostream.h>
  3.  
  4. int main()
  5. {   int i,n ;
  6.     cout <<" Voer 20 gehele getallen in : "<<endl;
  7.     cin>> n;
  8.     for (i=0; i<=n; i++)
  9.     {
  10.         if i>i++
  11.         cout<<i<<endl;
  12.     }
  13.  
  14.      system("pause");
  15.      return 0;
  16. }



alvast bedankt
jack

Opmerking van de crew

[code] tags gebruikt voor duidelijkheid
SMG
^ Reactie #1 geschreven door thekid op donderdag 29 november 2007 om 15:18:19.
thekid's avatar
Multiviteit: 5273
Moderator
Ik denk dat ik zo'n schoolopdracht (iets gelijkaardigs allesinds) hier vorig jaar ook al heb opgelost, ik meen het mij toch te herinneren, heb je al eens gezocht tussen de oudere C++ threads?

Als je een melding maakt van "Ik krijg steeds weer foutmeldingen" kan het handig zijn dat je ook vermeld welke foutmeldingen dit zijn

op het eerste zicht is je code iets speciaals to say the least

je declareert 2 variabelen i en n, type int (geen enkele is een array zo te zien)
je vraagt 1 invoer, nl cin >> n; wat u dus 1 integer value zal opleveren

in uwen for ga je van i = 0 tot i kleiner of gelijk aan n werken, en je verhoogt bij iedere stap i met 1

in for loop
een rare if syntax, wie weet wat je hier probeerde??? als i groter is dan i (en verhoog I met 1 achteraf) waarom ga je hier nu uw for I gaan verhogen? hier zit je sterk mis!!
uwen cout zal noot worden uitgevoerd aangezien uw if het blokkeert (als het al compileert)
end for loop

ik geloof niet dat dit een serieus geprobeerd stuk code is, 't is om te huilen met de pet op ;)

ge kunt misschien het gemakkelijkst zo bekijken

CODE
  1.  
  2. #include <cstdlib>
  3. #include <iostream>
  4. #include <sstream>
  5.  
  6. using namespace std;
  7.  
  8. string ParseInt(int nr)
  9. {
  10.        std::stringstream ss;
  11.        ss << nr;
  12.        return ss.str();
  13. }
  14.  
  15. int main(int argc, char *argv[])
  16. {
  17.     int laatsteGetal = 0, aantalTeLezen = 5, aantalKeerGroter = 0;
  18.     string invoer = "Ingevoerde waardes:\n\n";
  19.  
  20.     cout << "Geef " << aantalTeLezen << " getallen in:\n\n";
  21.     for (int x = 0; x < aantalTeLezen; x++)
  22.     {
  23.         int nieuwGetal;
  24.         cout << "\nGetal " << (x + 1) << ": ";
  25.         cin >> nieuwGetal;
  26.  
  27.         if (nieuwGetal < laatsteGetal && x != 0)
  28.         {
  29.            aantalKeerGroter++;
  30.         }
  31.         laatsteGetal = nieuwGetal;
  32.         invoer +=  ParseInt(laatsteGetal) + ((x < aantalTeLezen - 1) ? " - " : "\n\n");
  33.     }
  34.     cout << "Er werden " << aantalTeLezen << " getallen ingegeven, en " << aantalKeerGroter << " keer was het vorige getal groter dan het nieuwe!\n\n" << invoer;
  35.  
  36.     system("PAUSE");
  37.     return EXIT_SUCCESS;
  38. }
  39.  


enfin, vragen stel ze aub en Nightcreature zal ze wel beantwoorden :)

Even overlopen wat ik juist doe

1 functie ParseInt(int)
die een string retourneert is enkel en alleen om vorige ingaves te onthouden zodat je kunt bewijzen hoeveel x er 1 kleiner is ;)

1 main functie, en deze doet volgende zaken:

* ik declareer 3 variabelen als integer:
- laasteGetal dient om te onthouden welk getal er de laatste keer werd ingevoerd (en azo moet je geen array's gebruiken :))
- aantalTeLezen dient om te weten hoeveel er getallen er moeten ingevoerd worden, azo kan je dan nog wat dynamisch aanpassen ('t is volgens mij ook het handigst bij het debuggen zo moet je ook niet steeds 20 getallen ingeven, ik teste het met 5, wil je er 20 hebben pas deze waarde aan
- aantalKeerGroter dient om te tellen hoeveel keer het laatsteGetal groter was dan het nieuwe getal

* 1 variabele als string
- invoer dient enkel en alleen om de vorige invoer te onthouden

* ik zeg wat de bedoeling is van het programma

* start van de for loop
- 1 declaratie van nieuwGetal dient om het nieuwe getal in te lezen
- vragen voor de nieuwe invoer
- invoer opvragen en invoeren in nieuwGetal

- if blok:
Indien mijn laatsteGetal groter is dan nieuwGetal en x verschilt van 0 (want het eerste getal kan niet kleiner zijn dan het laatsteGetal, er is nl nog geen laatsteGetal op dit moment)
OK -> verhoog aantalKeerGroter

- laasteGetal wordt nieuwGetal
- voeg het laatste nieuwe getal toe bij de invoer (en op het eind zit er een syntax die kijkt of er nog een getal komt of dit het einde is OK = "-" niet OK = "\n")

* einde for loop

- uitvoeren van de gegevens en de verwerking ervan

- programma pauzeren zodat de uitvoer te lezen valt

- ga uit het programma met een succescode
Deze tekst werd het laatst bewerkt voor 26.33 % door thekid op donderdag 29 november 2007 om 15:27:39.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door SMG op donderdag 29 november 2007 om 15:21:00.
SMG's avatar
Multiviteit: 12000
Moderator

Randinformatie

Nu wil ik niet meteen moeilijk gaan beginnen doen maar als je begint met programmeren is C++ niet bepaald de makkelijkste keuze.
Moest je nog kunnen/willen kan je ga voor Java. Java is eveneens een OO taal maar is over het algemeen simpeler om aan te leren (ook veiliger :p)
^ Reactie #3 geschreven door thekid op donderdag 29 november 2007 om 15:29:44.
thekid's avatar
Multiviteit: 5273
Moderator

Randinformatie

ik denk smg dat dit een schoolopdracht is ;)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #4 geschreven door NightCreature op donderdag 29 november 2007 om 15:37:00.
NightCreature's avatar
Multiviteit: 1196
MSc.
Euhm die for lus hoogt i met 2 op als je goed leest in de eerste source nl. for (i;;i++) en dan ook nog eens in if i>i++.

Aanvulling

niet je hele post gelezen theKid

Die hele if zal nooit worden uitgevoerd want er wordt namelijk geen conditie gegeven. In C++ heeft een if de volgende syntax if (condition) statement; () haakjes zijn belangrijk.

Eigenlijk is java ook een erg slechte taal om te beginnen/ zeker om alleen die taal te kennen. Ik zou toch voor object pascal/Delphi of een andere taal gaan die gemaakt zijn om in te leren programeren.
Deze tekst werd het laatst bewerkt voor 0.18 % door NightCreature op donderdag 29 november 2007 om 15:43:22.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
^ Reactie #5 geschreven door thekid op donderdag 29 november 2007 om 15:49:06.
thekid's avatar
Multiviteit: 5273
Moderator
nog even opmerken dat er iets veranderd is in mijn bovenstaande code zo te zien

std :: stringstream ss; moet het wel degelijk zijn in de functie ParseInt, deze is blijkbaar gewijzigd (normaal gezien zonder spaties (en waarschijnlijk daarmee dat het zo online geplaatst werd 't is een smilley code :D) maar ik ben geen zo'n crack in c++)

ik ga deels akkoord met Night zijn visie op Java :) Vooral het feit van beperkt zijn aan 1 taal is niet goed, ik doe mijn best om zowel met Java, brokkel c++ en C# te kunnen prutsen, maar heb ook nog met asm, pascal, dosc++/asm c++, euphoria, qbasic, visual basic, vb.net geprogrammeerd, het is een groot voordeel meerdere talen te kennen (ik zeg niet dat ik ze allemaal nog even goed ken als toen, maar de basis houdt je toch steeds bij (behalve voor asm dan))
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen