spatie toevoegen aan elke getallen

Status
Niet open voor verdere reacties.

triplehnl

Gebruiker
Lid geworden
28 jul 2007
Berichten
9
hallo iedereen;

voor school opdracht moet ik een simple programma schrijven:

Schrijf een programma dat de cijfers van een natuurlijk getal g afdrukt met een tussenruimte van één spatie. Als g = 8361 wordt het volgende afgedrukt:

8 3 6 1

ik ben echt noob in C++ wereld. volgens de leraar moet ik " string "gebruiken. Ik heb hoofdstuk over de strings van mijn studieboek ' aan de slag met C++ van Gertjan Laan" gelezen. maar ik word niet echt wijs van.

kunt iemand mij helpen?

alvast bedank
 
Heb je misschien een concrete vraag/concrete vragen?


Strings gebruiken is inderdaad erg handig. Het makkelijkste is om de invoer van de gebruiker in een string te stoppen. Vervolgens kan je de insert functie gebruiken om de spaties toe te voegen (dit is de makkelijkste manier (ik heb het zelf geprobeerd en het programma telt 28 regels), er zijn natuurlijk nog andere manieren).
 
Laatst bewerkt:
Ik zou zoiets via een recursieve procedure oplossen. Elegantie ten top al is het niet altijd even efficient. Uiteraard kun je het ook in een loopje oplossen.
De crux zit hem in het analyseren van het probleem. Waar begin je mee en hoe ga je door tot je de hele "oplossing" hebt. Als het goed is heb je deze technieken uitgelegd gekregen en is nu het moment om ze toe te passen.
De kern van goed programmeren is immers het probleem (of beter de uitdaging) zodanig in stukjes opdelen dat je het op een simpele manier kunt oplossen.
 
Ik zou zoiets via een recursieve procedure oplossen. Elegantie ten top al is het niet altijd even efficient.

Niet helemaal mee eens. Recursieve functies zijn vaak juist (indien goed geprogrammeerd) efficienter dan loops omdat er minder code uitgevoerd hoeft te worden per iteratie. Elegant en stoer: JA. Handig: Vaker niet dan wel.De leesbaarheid van de code heeft vaak enorm te lijden onder recursieve functies


ik heb het zelf geprobeerd en het programma telt 28 regels

Mijn programma zonder insert telt maarliefst 16 regels inclusief headers etc. Geen ge-obfuscate code :) Het zal wel tegen de regels zijn om het hier te posten neem ik aan?
 
Niet helemaal mee eens. Recursieve functies zijn vaak juist (indien goed geprogrammeerd) efficienter dan loops omdat er minder code uitgevoerd hoeft te worden per iteratie. Elegant en stoer: JA. Handig: Vaker niet dan wel.De leesbaarheid van de code heeft vaak enorm te lijden onder recursieve functies

Het probleem met recursieve functies is dat ze veel data via de stack verplaatsen (anders is het een verkapte loop) en meer status gegevens moeten bewaren voor een function call. Maar op het gebied van programma-code zijn ze vaak heel overzichtelijk. Vergelijk het met wiskundige bewijsvoering.... uhm, hoe heet dat ook alweer als je bewijst dat het voor n+1 geldt als het voor n ook geldt en dat de bewering voor n=1 ook waar is. Theoretisch gezien is een recursieve functie vaak beter dan een loop, uitvoeringssnelheid wil nog wel eens in het voordeel van een loop uitpakken. Er zit immers nogal wat overhead in een function-call, zeker gezien de moderne processoren vergeleken met de oertijd veel meer anticiperen op mogelijk branches en loops in de code. Uiteindelijk praten we over mini-milli-seconden per loop/call maar in programma's die enkele uren moeten draaien (ja die bestaan, ik werk er mee) is run-time efficiency uiteraard wel belangrijk. Voor deze schoolopgave in eerste instantie niet maar voor het inzicht wel.
 
Ik weet niet veel van C++, maar in andere talen (JavaScript / PHP), kan dit heel erg eenvoudig.

Javascript:

[JS]
var g = "8361";
g = g.split('');
g = g.join(' ');
[/JS]

PHP:

PHP:
$g = "8361";
$g = explode('', $g);
$g = implode(' ', $g);

Met andere woorden je maakt er een array met allemaal lossen tekens, en dan plak je ze weer aan elkaar met overal een spatie tussen.

Maargoed, als C++ geen gelijken kent voor deze functies, dan moeten jullie deze post maar als niet gepost beschouwen ;)
 
Mijn programma zonder insert telt maarliefst 16 regels inclusief headers etc. Geen ge-obfuscate code :) Het zal wel tegen de regels zijn om het hier te posten neem ik aan?

Ik wilde even aangeven dat het geen groot, ingewikkeld programma is. Het was niet bedoeld om te beweren dat het niet korter kan :). Overigens is het poster ervan niet tegen de regels, maar het is niet didactisch verantwoord om het huiswerk van anderen te gaan doen.

Palmpje zei:
Vergelijk het met wiskundige bewijsvoering.... uhm, hoe heet dat ook alweer als je bewijst dat het voor n+1 geldt als het voor n ook geldt en dat de bewering voor n=1 ook waar is.

Volledige inductie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan