C# Klein beetje hulp nodig

Pagina: 1
Acties:
  • 1.866 views

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik zou maar meteen met de deur in huis vallen. Voor school moet ik een C# console applicatie schrijven waarmee je een decimaal getal naar binair omzet. Binair rekenen is verder geen kunst maar ik heb nog nooit 1 regel geprogrammeerd. Tot nu toe heb ik alleen een Powerpoint gezien met een aantal basis termen.

Of ik uiterlijk maandag dit af wil hebben... nu geloof ik dat het niet echt heel veel code zal zijn maar ik weet ook niet waar ik moet beginnen :? Ik heb inmiddels Visual Studio geinstalleerd en op Google al de nodige stukken code gevonden maar snappen doe ik het nog niet (de code dus).

Kortom, heeft iemand enig idee waar ik zou kunnen beginnen? Googlen op C# tutorial geeft natuurlijk wel heel veel hits..

alvast bedankt :)

Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 23:08
Googlen naar code gaat natuurlijk niet helpen, het beste advies dat ik je kan geven is om gewoon C# te gaan leren en beginnen bij de absolute basis. Als je nu een stukje code kunt vinden dat doet wat jij wilt heb je geluk, maar als je dalijk een moeilijkere opdracht krijgt dan ga je het niet meer op die manier op kunnen lossen en zul je het toch echt zelf moeten doen.

Maar no offense: voor maandag af? Ik geloof niet dat scholen zoiets doen, ben je niet gewoon zelf een beetje veel te laat begonnen?

Acties:
  • 0 Henk 'm!

  • sfranken
  • Registratie: Mei 2010
  • Laatst online: 17-06 20:00
Met goed googlewerk kom je een heel eind: http://snipplr.com/view/2401/
Avalaxy schreef op zaterdag 11 februari 2012 @ 13:25:
Maar no offense: voor maandag af? Ik geloof niet dat scholen zoiets doen, ben je niet gewoon zelf een beetje veel te laat begonnen?
Denk het ook

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt. Het is ook zeker niet mijn bedoeling de code van Google over te nemen en zo in te leveren zonder dat ik de hele code begrijp.

En nee, niet te laat begonnen, 9 februari kreeg ik de opdracht. Maar had ook ander werk te doen dus pas vandaag mee begonnen.

Natuurlijk vind ik het ook handiger om bij het begin te beginnen, maar blijkbaar vindt onze leraar dit het begin want we hebben inmiddels pas 2 lessen gehad.

bedankt voor de link.. ik ga aan de slag.

Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 23:08
Om je in ieder geval een voorzetje te geven:

Hoe je normaal een decimaal getal omzet naar binaire is zo:

282726252423222120
2561286432168421


Om een willekeurig getal (laten we zeggen 53) te ontleden heb je dus 1x de 32, 1x de 16, 0x de 8, 1x de 4, 0x de 2 en 1x de 1. Dit wordt 110101.

Wat jij dus moet doen is ruwweg dit:
  • Maak een loop/recursieve functie
  • Begin bij de eerste macht van 2 die boven jouw getal ligt (in het geval van 53 is dit dus 64)
  • Tel omlaag met machten van 2
  • Elke keer als je het huidige getal van het door jou gekozen getalen af kunt halen doe je dit en noteer je een 1
  • Elke keer als dat niet lukt ga je naar het volgende getal en noteer je 0

Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 07:25

Mavamaarten

Omdat het kan!

Hoe wij bij wiskunde altijd geleerd hebben om om te zetten naar binair, is het volgende:
bijvoorbeeld het getal 53:

53/2 = 26, rest 1
26/2 = 13, rest 0
13/2 = 6, rest 1
6/2 = 3, rest 0
3/2 = 1, rest 1
1/2 = 0, rest 1

Nu lees je het getal van onder naar boven: 110101.
Controle: 1*25 + 1*24 + 1*21 + 1*20 = 32+16+4+1 = 53

Dit moet makkelijk te doen zijn met een loopje, en de functie "mod" die zegt of iets deelbaar is of niet.

[ Voor 11% gewijzigd door Mavamaarten op 11-02-2012 14:12 ]

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 00:35
Zoals iedereen in dit topic zegt, wat voor algoritme heb je bedacht om dit voor elkaar te krijgen. Meeste van deze problemen zijn op te lossen door pseudo-code te schrijven, en die langzaam te veranderen in echte code.

Een site die je vaak zult gebruiken is MSDN, en voor de algoritme schreeuwt dit om het gebruik van de class Math.

Voor de algoritme hierboven kun je gaan kijken naar de modulo (%) or Math.DivRem.

Denk dat je hiermee wel veel vooruit kan :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt allen. Was zojuist weg dus ga nu aan de gang met de gegeven links en tips.Hoop dat het lukt, ziet er allemaal erg lastig uit voor nu. :F

Zoals ik in mijn eerste post zei, binair rekenen kan ik al. heb netwerk-beheer gedaan :p Maar een converter/calc schrijven is toch wel wat anders...

ik laat jullie weten of het is gelukt

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 07:09

Haan

dotnetter

Als het trouwens niet gaat om het algoritme, maar puur om het resultaat, zou ik je de Convert class aanraden :p

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Gaat het om een natuurlijk getal?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Haan schreef op zaterdag 11 februari 2012 @ 18:01:
Als het trouwens niet gaat om het algoritme, maar puur om het resultaat, zou ik je de Convert class aanraden :p
Inderdaad, het gaat mij, en ik denk ook de leraar (?) gewoon om het resultaat. Wiskunde krijgen we namelijk ook nog naast programmeren :)

Inmiddels heb ik dit gevonden en dat werkt:
(Weet niet hoe je dit in een Code box krijgt.. )

using System;

namespace _Dec2Bin
{
class DecimalToBinary
{
static void Main(string[] args)
{
Console.Write("Enter Decimal number and press Enter: ");
int decimalNumber = int.Parse(Console.ReadLine());

int remainder;
string result = string.Empty;
while (decimalNumber > 0)
{
remainder = decimalNumber % 2;
decimalNumber /= 2;
result = remainder.ToString() + result;
}
Console.WriteLine("Binary: {0}", result);
Console.ReadLine();
}
}
}



Sommige begrijp ik al maar ik probeer nu uit te zoeken wat elke regel exact doet..

[ Voor 3% gewijzigd door Verwijderd op 11-02-2012 18:08 ]


Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 22:34
Nu gaat jouw applicatie crashen als je een ongeldig getal ingeeft. Kijk eens naar int.TryParse methode (of anders moet je exceptions opvangen).

[ Voor 10% gewijzigd door Styxxy op 11-02-2012 18:10 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Styxxy schreef op zaterdag 11 februari 2012 @ 18:10:
Nu gaat jouw applicatie crashen als je een ongeldig getal ingeeft. Kijk eens naar int.TryParse methode (of anders moet je exceptions opvangen).
Wat voor een ongeldig getal? Hij doet het anders perfect..

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 23:45
Verwijderd schreef op zaterdag 11 februari 2012 @ 18:25:
[...]
Wat voor een ongeldig getal? Hij doet het anders perfect..
Een letter of enig ander teken dat niet in een normaal cijfer thuis hoort ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Caelorum schreef op zaterdag 11 februari 2012 @ 18:28:
[...]

Een letter of enig ander teken dat niet in een normaal cijfer thuis hoort ;)
Dan doet ie niets.. Maar dat is toch logisch?

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 22:34
Verwijderd schreef op zaterdag 11 februari 2012 @ 18:33:
[...]
Dan doet ie niets.. Maar dat is toch logisch?
Dan crasht jouw applicatie wegens een uncaught exception...

Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Laatst online: 21:27
Verwijderd schreef op zaterdag 11 februari 2012 @ 18:06:
[...]
Inderdaad, het gaat mij, en ik denk ook de leraar (?) gewoon om het resultaat. Wiskunde krijgen we namelijk ook nog naast programmeren :)
[...]
Doe het dan gewoon zo? >:)
C#:
1
Console.WriteLine(Convert.ToString(Convert.ToInt32(Console.ReadLine()), 2));

Of vind je leraar dat niet leuk? :+

En als je het een beetje n00bproof wilt houden, doe je er een try omheen. :P
C#:
1
2
3
4
try {
    Console.WriteLine(Convert.ToString(Convert.ToInt32(Console.ReadLine()), 2));
}
catch { Console.WriteLine("Ongeldig karakter ingevoerd"); }

[ Voor 27% gewijzigd door CrashOverDrive op 11-02-2012 19:52 . Reden: Try/catch versie geadd ]


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
CrashOverDrive schreef op zaterdag 11 februari 2012 @ 19:47:
[...]

Doe het dan gewoon zo? >:)
C#:
1
Console.WriteLine(Convert.ToString(Convert.ToInt32(Console.ReadLine()), 2));

Of vind je leraar dat niet leuk? :+

En als je het een beetje n00bproof wilt houden, doe je er een try omheen. :P
C#:
1
2
3
4
try {
    Console.WriteLine(Convert.ToString(Convert.ToInt32(Console.ReadLine()), 2));
}
catch { Console.WriteLine("Ongeldig karakter ingevoerd"); }
Catches zijn traag, en zijn hiervoor niet bedoeld, ze zijn bedoeld om exceptions op te vangen..

Je kan gewoon doen wat hierboven al werd geopperd:
code:
1
2
3
4
5
6
Int32 getal = 0;

Int32.TryParse(inputGetal, out getal);

if (getal <= 0)
Console.WriteLine("Doe eens normaal joh!");

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CrashOverDrive schreef op zaterdag 11 februari 2012 @ 19:47:
[...]

Doe het dan gewoon zo? >:)
C#:
1
Console.WriteLine(Convert.ToString(Convert.ToInt32(Console.ReadLine()), 2));

Of vind je leraar dat niet leuk? :+

En als je het een beetje n00bproof wilt houden, doe je er een try omheen. :P
C#:
1
2
3
4
try {
    Console.WriteLine(Convert.ToString(Convert.ToInt32(Console.ReadLine()), 2));
}
catch { Console.WriteLine("Ongeldig karakter ingevoerd"); }
Geen idee! Bedankt in ieder geval!

Kun je mij misschien je code een beetje uitleggen?

(Inmiddels heb ik een boek besteld. Die Powerpoints van de leraar zijn echt 3x niets)

Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Laatst online: 21:27
Megamind schreef op zaterdag 11 februari 2012 @ 19:55:
Catches zijn traag, en zijn hiervoor niet bedoeld, ze zijn bedoeld om exceptions op te vangen..

Je kan gewoon doen wat hierboven al werd geopperd:
Je hebt gelijk :'(
Zo dan :>
C#:
1
2
3
4
5
6
7
Int32 getal = 0;
Int32.TryParse(Console.ReadLine(), out getal);

if (getal <= 0)
    Console.WriteLine("Ongeldig karakter ingevoerd");
else
    Console.WriteLine(Convert.ToString(getal, 2));

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CrashOverDrive schreef op zaterdag 11 februari 2012 @ 19:58:
[...]

Je hebt gelijk :'(
Zo dan :>
C#:
1
2
3
4
5
6
7
Int32 getal = 0;
Int32.TryParse(Console.ReadLine(), out getal);

if (getal <= 0)
    Console.WriteLine("Ongeldig karakter ingevoerd");
else
    Console.WriteLine(Convert.ToString(getal, 2));
Hij werkt.. En ik kan hem voor de helft begrijpen :+
Maar waar haalt die console nou de wijsheid vandaan dat 255 11111111 is?
Dat vertel jij hem in ieder geval niet in je code? Welk stukje in de code maakt het nu een decimal to binairy converter? TryParse ?


Vraagje... om de console-box open te houden is het dan een optie om te eindigen met " Console.ReadLine(); " ?
Of is dat noob?

gracias..

Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Laatst online: 21:27
Zoals hierboven ook al geoppert is, lees MSDN.
Zie hier voor uitleg waarom hij weet dat 11111111 255 is. ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CrashOverDrive schreef op zaterdag 11 februari 2012 @ 20:06:
Zoals hierboven ook al geoppert is, lees MSDN.
Zie hier voor uitleg waarom hij weet dat 11111111 255 is. ;)
Thanks :)

/edit: snap er nog steeds niet veel van 8)7

[ Voor 7% gewijzigd door Verwijderd op 11-02-2012 20:21 ]


Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Laatst online: 21:27
Ah kom op,
Ik weet zeker dat je Int32 getal = 0; snapt.
Ook if(getal <= 0) Console.WriteLine("Ongeldig karakter ingevoerd");
moet geen problemen geven.

Blijven er nog 2 regels over:
Int32.TryParse( Console.ReadLine(), out getal);
Console.WriteLine(Convert.ToString(getal, 2));

Gewoon de functies die je niet snapt inkloppen op MSDN. Kom je er dan nog niet uit, googlen op de functies. Kom je er daarna nog steeds niet uit, dan kan je hier vragen welke (specifieke) functie je niet snapt, en wat je er niet aan snapt. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik begrijp de if. Ik begrijp ook Console.WriteLine en ReadLine en het verband tussen de regels. Wat ik alleen niet snap is de 0 en de 2 ..

Ook snap ik niet precies wat int32.TryParse precies doet..

" Converts the string representation of a number to its 32-bit signed integer equivalent. "

Wat is in hemelsnaam een 32-bit gesigneerd equivalent?

Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Laatst online: 21:27
Verwijderd schreef op zaterdag 11 februari 2012 @ 20:59:
Wat is in hemelsnaam een 32-bit gesigneerd equivalent?
Hier en Hier

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 07:09

Haan

dotnetter

Dat is gewoon een geheel getal ;)
Signed betekent dat het getal positief of negatief kan zijn (itt unsigned dat alleen positief is)

edit:
reactie op 4ppl3 dus

[ Voor 11% gewijzigd door Haan op 11-02-2012 21:10 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 00:35
Binair, het woort zegt het al, 2-tallig stelsel.

Pak de functie erbij:
C#:
1
String Convert.ToString(int, int)


Voor de type die je zeker moet weten, heeft wikipedia een heleboel over nummers opzich, en op MSDN heb je het specifiek voor C#.

Misschien is het handig om ook naar beginner tutorials te kijken, en voornamelijk veel lezen.
En nogmaals MSDN is je vriend.

offtopic:
Voor de code tag zie: UBB-codes faq

[ Voor 37% gewijzigd door P-Storm op 11-02-2012 21:21 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14-09 17:03

Creepy

Tactical Espionage Splatterer

Hmja, kom op. Documentatie lezen van kant en klare code is wel het minste wat je kan doen. Dat je iets nog niet begrijpt is niet erg maar basiskennis zou je prima jezelf eigen moeten kunnen maken. Google even op Convert en Convert.toString en je kan echt zal voorbeelden + uitleg vinden.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.