uitlijnen van decimalen

Status
Niet open voor verdere reacties.

Aggror

Gebruiker
Lid geworden
16 jan 2009
Berichten
46
Hallo,

Ik heb een vraag waar ik maar geen antwoord kan vinden op google. Ik heb een aantal sommen die automatisch gegenereerd worden. De weergave hiervan is te zien in de afbeelding. (verkeer uitlijning.jpg).

Ik wil de uitkomsten en de som zelf, mooier laten neerzetten, zodat alles netjes onder elkaar komt te staan.V ooral bij de laatste som (10 x 5 = 50). Wordt alles neergezet als een zin. weet iemand welke syntaxis ik kan gebruiken om alles mooi uit te lijnen. Uiteiendelin moeten alle 1-tallen onder elkaar, 10 tallen onder elkaar etc..

alvast bedankt!
 

Bijlagen

  • verkeerde uitlijning.jpg
    verkeerde uitlijning.jpg
    4,8 KB · Weergaven: 55
Hey,
wat is het voor iets waar je de uitkomsten op laat zien?
Je kunt een tab invoegen met \t. Dan kun je het wel netjes uitlijnen.
Ook kun je een 0 toevoegen voor 1 t/m 9.
dus 01 02 03 04 05 06 07 08 09 10 11 12 ... enz.

Gr,
Mathijs
 
Hey Mathijs,

bedankt voor je reactie alvast! De uitkomsten word weergegeven via MessageBox.Show. Met tabs werken is inderdaad een oplossing. Helaas zou een tab niet altijd werken. Stel dat ik het tafeltje van 4502399239 zou willen hebben dan zou de tab niet meer uitlijnen denk ik. met 01,02 zou het inderdaad te proberen zijn. ik post hier iets terug zodra dit enigzins werkt. Thanks
 
Helaas kom ik toch niet goed uit met alleen het gebruiken van tabs. De weergave ziet er als volgt uit (bij tafeltje van 4)

1 x 4 = 4
2 x 4 = 8
3 x 4 = 12
4 x 4 = 16
5 x 4 = 20
6 x 4 = 24
7 x 4 = 28
8 x 4 = 32
9 x 4 = 36
10 x 4 = 40

In de reeks hierboven staan de uitkomsten wel naar rechtgeplaatst met een tab, maar blijven ze de 4 en de 8 op de positie van de tientallen staan.
ook wannneer de som met ' 10 x' begint, ziet je dat de uitkomst verkeerd verspringt. Ik zoek meer een opmaak eigenschap (of commando) dat dit als een decimale notitie weerschrijft.
 
Waarschijnlijk heb je de tabs niet goed geplaatst.
Kun je je code plaatsen? Die de sommen samenstellen?
 
Hey,

Code:
double number;
            number = Convert.ToDouble(textBox1.Text);    
            string output = "";

            for (int teller = 1; teller <= 10; teller++)
            {
                double uitkomst = teller * number;
                output += teller + " x " + number + " = " + "\t" + uitkomst + "\n";
            }
            MessageBox.Show(output);

probeer maar eens ´20´ in te vullen in. Dan zie je dat de uitlijning verkeerd gaat.
 
Dan denk ik dat het met een MessageBox niet gaat.
Je kunt achter elke cijfer een tab zetten, maar daar word het niet netter op.

Je kunt een formulier maken, en daarop jouw antwoorden geven.
Als je een uitlijning vind met een MessageBox, dan ben ik erg benieuwd..;)

Gr,
Mathijs
 
Wat ik wil proberen gaat inderdaad niet in een messagebox aangezien je van deze messagebox geen properties kunt bewerken.

Ik kan echter een nieuwe form aanroepen met een panel of text box en daar de uitkomsten ingegeven. Ik ben er nog niet helemaal uit maar het komt in de richting van:

Code:
string.Format(" {0:d}")
 
Wat ik zou doen is, 2 dingen controleren en aanvullen, namelijk:

Ga ervan uit dat aantalX 10 is.
Neem dan het voorbeeld 11 * aantalX = 110;

Zo moet je weten wat de lengte is van aantalX. Als je vermenigvuldigd t/m 10 dan is de lengte 2. Zo moet je controleren welke lengte kleiner is dan 2 en deze aanvullen met 0 of een ander karakter.
Dit moet je ook doen voor je uitkomst, wat in mijn geval de lengte van 3 bevat.

Hopelijk kan je nu vooruit met stoeien.

Gegroet,

GTi
 
Hey Geerttim,

bedankt voor de reactie

ik begrijp de techniek die je hier bij wilt toepassen en het is ook gelukt om deze voor elkaar te krijgen.

door middel van
Code:
{0:000,}, Getalvariabale

hiermee zeg ik :
- pak de eerste variabel uit deze zin (Getalvariabele).
- zorg ervoor dat de getallen voor de komma minimaal uit drie posities bestaat.
- als de waarde minder is dan de 3 posities, vul er dan een 0 in

enige probleem hier nog is het weg zien te werken van de nullen.
 
Kben ook pas bezig met C#, dus voor mij ook ff wennen.. kben opgeleid met java namelijk.
Maar kheb nog eens gekeken naar je vraag... kheb ontdekt dat je beter string.Format kan gebruiken, maar ook dit is weer ff stoeien.

Je kan je output beter zo printen:

output += String.Format("{0}" + " x " + "{1}" + "{2}" + " = " + "{3}" + "{4}", teller.ToString().PadLeft(5), number, "\t", uitkomst.ToString().PadLeft(5), Environment.NewLine);

als je deze print in de console is ie wel goed, kweet niet precies waarom, misschien dat iemand hier een antwoord op heeft.

Gegroet GTi
 
.PadLeft(5) manier kende ik nog niet dus wel weer wat geleerd, maar helaas lost dit mijn probleem niet op. Aangezien de uitkomsten gewoon naar rechts of links worden verplaats met een bepaald aantal spaties.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan