C# Tafeltjes berekenen

Pagina: 1
Acties:
  • 4.700 views

Acties:
  • 0 Henk 'm!

  • Paprika
  • Registratie: September 2007
  • Laatst online: 00:18
Nou, we moesten voor school ( :+ ) d.m.v. PSD (programma structuur diagram) iets maken dat de tafeltjes, van het getal dat je invoert, berekent. Nu heb ik een simpel iets met PSD gemaakt, verder geen problemen mee.

Echter wilde ik dit ook eens proberen met C#, nu ben ik al een heel eind, echter vroeg ik me af hoe je ervoor kunt zorgen dat hij stopt als je een letter invult.

Nu krijg je namelijk een error die zegt: "Input string was not in a correct format."
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
namespace Tafels
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
                     if (textBox1.Text.Length < 1 ) { MessageBox.Show("Voer wel even een getal in.... ;-)"); return; }
            textBox2.Text = "";
            int num = Convert.ToInt32(textBox1.Text);
            int n = 0;
            while (n < 11)
            {
                int nn = n * num;
                textBox2.Text += num + " x " + n + " = " + nn + "\r\n";
                n++;
            }

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
          
        private void button1_Click(object sender, EventArgs e)
        {
            int num;
            
            
    
            if (textBox1.Text.Length < 1 || !Integer.TryParse(textBox1.Text, out num)) { MessageBox.Show("Voer wel even een getal in.... ;-)"); return; }
            textBox2.Text = "";
           // int num = Convert.ToInt32(textBox1.Text);
            int n = 0;
            while (n < 11)
            {
                int nn = n * num;
                textBox2.Text += num + " x " + n + " = " + nn + "\r\n";
                n++;
            }

        }

[ Voor 0% gewijzigd door Snake op 05-09-2008 17:45 . Reden: out toegevoegd. ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Paprika
  • Registratie: September 2007
  • Laatst online: 00:18
Bedankt :).

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Doe mij plezier, en lees de code he.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Misschien een tip voor in de toekomst: In C# heb je voor deze constructie:
C#:
1
2
3
4
5
6
int n = 0;
while (n < 11)
{
    //(Rekenen gebeurt hier...)
    n++;
}

...ook een mooier alternatief, namelijk de 'for'-lus. Die ziet er zo uit:
C#:
1
2
3
4
for(/* Toekenning startwaarde */; /* conditie (doorgaan?) */; /* Ophogen */)
{
    //(Rekenen gebeurt hier...)
}

In jouw geval zou de code dan dus worden:
C#:
1
2
3
4
5
for(int n = 0; n < 11; n++)
{
    int nn = n * num;
    textBox2.Text += num + " x " + n + " = " + nn + "\r\n";
}

Acties:
  • 0 Henk 'm!

  • Paprika
  • Registratie: September 2007
  • Laatst online: 00:18
Nog eens bedankt :P.

Ik had het nog even aangepast naar:
int num = Convert.ToInt32(textBox1.Text);
int n = 0;
int b = Convert.ToInt32(textBox3.Text) + 1;
while (n < b)
Zodat je zelf kunt bepalen tot welk tafeltje er berekent moet worden. O-)

i.i.g. iets nieuws geleerd voor de volgende keer.
Snake schreef op vrijdag 05 september 2008 @ 18:34:
[...]

Doe mij plezier, en lees de code he.
Natuurlijk, anders heb ik er niets aan. :D

[ Voor 29% gewijzigd door Paprika op 05-09-2008 20:26 ]


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

MrBucket schreef op vrijdag 05 september 2008 @ 19:45:
Misschien een tip voor in de toekomst: In C# iedere op-C-gebaseerde taal heb je voor deze constructie:
;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 02-10 17:38

dusty

Celebrate Life!

En voor de gein: Een recursieve oplossing
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void button1_Click(object sender, EventArgs e) 
        { 
            int num; 
     
            if (textBox1.Text.Length < 1 || !Integer.TryParse(textBox1.Text, out num)) { MessageBox.Show("Voer wel even een getal in.... ;-)"); return; } 
 
           TextBox2=ShowMyTable(num,1,10);
        }

private string ShowMyTable(int num, int cur, int max) {
   string result=num + " x " + cur + " = " + (num*cur) + "\r\n";
  if (cur<max) {
    result+=ShowMytable(num, cur+1, max);
  } 
    return result;
}

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
In dat geval dan ook nog maar eens de Haskell-oplossing:

code:
1
2
3
4
5
6
7
8
9
10
11
*Main Text.Printf> putStrLn $ unlines $ zipWith (\x y -> printf "%d x %d = %d" x y (x*y)) [1..10] $ repeat 13
1 x 13 = 13
2 x 13 = 26
3 x 13 = 39
4 x 13 = 52
5 x 13 = 65
6 x 13 = 78
7 x 13 = 91
8 x 13 = 104
9 x 13 = 117
10 x 13 = 130

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 02-10 17:38

dusty

Celebrate Life!

chris schreef op zaterdag 06 september 2008 @ 00:09:
In dat geval dan ook nog maar eens de Haskell-oplossing:
[..]
En iemand die C# aan het leren is heeft hoeveel nut bij een voorbeeld in Haskell?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

dusty schreef op zaterdag 06 september 2008 @ 01:59:
[...]

En iemand die C# aan het leren is heeft hoeveel nut bij een voorbeeld in Haskell?
Tsja je moet het evangelie toch verspreiden? :>
offtopic:
Even serieus; het heeft niet direct C# nut vind ik, maar geeft wel leuk inzicht in recursief programmeren. Dat vinden veel imperatieve programmeurs nml lastig.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

Boudewijn schreef op zaterdag 06 september 2008 @ 02:07:
[...]

offtopic:
Even serieus; het heeft niet direct C# nut vind ik, maar geeft wel leuk inzicht in recursief programmeren. Dat vinden veel imperatieve programmeurs nml lastig.
offtopic:
Je denkt in het dagelijks leven ook niet echt recursief hè. Het is geen natuurlijke manier van denken en daarom lastig.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 02-10 16:20

gorgi_19

Kruimeltjes zijn weer op :9

Als we toch bezig zijn, gebruik dan String.Format, Environment.Newline en de Stringbuilder class.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

gorgi_19 schreef op zaterdag 06 september 2008 @ 11:13:
Als we toch bezig zijn, gebruik dan String.Format, Environment.Newline en de Stringbuilder class.
Zou ook wel fijn zijn als je hem vertelt waarom hij die moet gebruiken :). Hier mijn poging.

String.Format: Dit houdt je code simpeler. Je geeft aan waar een bepaalde tekst moet staan en vervolgens geef je aan wat er moet staan

code:
1
string.Format("Dit is {0} string","mijn"); //geeft "Dit is mijn string"


Environment.NewLine: Deze moet je gebruiken omdat er tussen verschillende systemen verschillen zitten betreffende de karakters gebruikt voor een nieuwe lijn (\n\r of \n of \r) (dit was altijd leuk in Java... Mac en PC doen het beide anders)

StringBuilder: String concatenations in een loop is zeer vervelend voor je stack (geheugen) als je miljoenen keren door een loop loopt blijft er teveel data op de stack. Als je namelijk een string verlengt door += of + te gebruiken (dat heet concatenation) wordt er een nieuwe string gemaakt en blijft de oude in het geheugen hangen (deze wordt later wel door de garbage collector opgehaald, maar dat kan even duren). Met StringBuilder blijft je stack mooi schoon.

Als je ooit een autiditing tool (als FXCop) over je code haalt zal hij ook hierover gaan zeuren.

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Sebazzz schreef op zaterdag 06 september 2008 @ 10:25:
[...]

offtopic:
Je denkt in het dagelijks leven ook niet echt recursief hè. Het is geen natuurlijke manier van denken en daarom lastig.
offtopic:
En dus hoef je er maar niet over na te denken? Zo komen mensen idd echt verder, met die houding. Het feit dat jij het niet interessant of nuttig vindt betekent niet dat dat het niet is ;).

[ Voor 11% gewijzigd door Boudewijn op 06-09-2008 11:57 ]

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

Boudewijn schreef op zaterdag 06 september 2008 @ 11:56:
[...]

offtopic:
En dus hoef je er maar niet over na te denken? Zo komen mensen idd echt verder, met die houding. Het feit dat jij het niet interessant of nuttig vindt betekent niet dat dat het niet is ;).
offtopic:
Ik zei niet dat ik het niet interessant of relevant vond of wel? Ik zei dat het logisch is dat het moeilijk is om recursief te denken ;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 02-10 17:38

dusty

Celebrate Life!

Sebazzz schreef op zaterdag 06 september 2008 @ 10:25:
[...]
offtopic:
Je denkt in het dagelijks leven ook niet echt recursief hè. Het is geen natuurlijke manier van denken en daarom lastig.
Het is juist WEL een natuurlijke manier van denken.

Als jij namelijk een tafeltje opzegt dan 7, en je hebt net vast gesteld dat 5x7 35 is, ga jij dan voor 6x7 de som geheel overnieuw tellen, of tel jij 8 bij de 35 op en kom je op die manier op 42? Als jij dus de laatste manier gebruikt om sneller je tafels op te kunnen zeggen, gebruik je dus een "natuurlijke" recursieve manier om het uit te rekenen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • wontcachme
  • Registratie: September 2005
  • Laatst online: 08:55

wontcachme

You catch me? No you wont

dusty schreef op zaterdag 06 september 2008 @ 15:12:
[...]

Het is juist WEL een natuurlijke manier van denken.

Als jij namelijk een tafeltje opzegt dan 7, en je hebt net vast gesteld dat 5x7 35 is, ga jij dan voor 6x7 de som geheel overnieuw tellen, of tel jij 8 bij de 35 op en kom je op die manier op 42? Als jij dus de laatste manier gebruikt om sneller je tafels op te kunnen zeggen, gebruik je dus een "natuurlijke" recursieve manier om het uit te rekenen.
8+35=42??? :+

GamePC (AMD Ryzen 5900x - Gigabyte RTX 3070 Gaming OC 8G - Gigabyte Aorus X570 ELITE - 32GB Corsair Vengeance 3600C18 - 1.5TB Samsung 970 EVO NVME - 500GB Samsung 950 EVO Sata - Fractal Design Define 7 - Corsair RM750x - 2x Asus VG27AQ 1440p@144hz)


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

dusty schreef op zaterdag 06 september 2008 @ 15:12:
Als jij namelijk een tafeltje opzegt dan 7, en je hebt net vast gesteld dat 5x7 35 is, ga jij dan voor 6x7 de som geheel overnieuw tellen, of tel jij 8 bij de 35 op en kom je op die manier op 42? Als jij dus de laatste manier gebruikt om sneller je tafels op te kunnen zeggen, gebruik je dus een "natuurlijke" recursieve manier om het uit te rekenen.
Ik had het niet beter kunnen verwoorden. Sowieso is het heel jammer dat in het (met name HBO (uit eigen ervaring)) onderwijs hier veel te weinig mee wordt gedaan mi.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
dusty schreef op zaterdag 06 september 2008 @ 01:59:
[...]

En iemand die C# aan het leren is heeft hoeveel nut bij een voorbeeld in Haskell?
Oh, het leek me gewoon grappig. Het heeft weinig nut, ik had het alleen voor mezelf uitgeprogrammeerd en ik dacht: laat ik het dan maar gewoon met jullie delen. Wie weet, aangezien Erik Meijer ook aan C# werkt, is het ook ooit zelfs nuttig.

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

dusty schreef op zaterdag 06 september 2008 @ 15:12:
[...]

Het is juist WEL een natuurlijke manier van denken.

Als jij namelijk een tafeltje opzegt dan 7, en je hebt net vast gesteld dat 5x7 35 is, ga jij dan voor 6x7 de som geheel overnieuw tellen, of tel jij 8 bij de 35 op en kom je op die manier op 42? Als jij dus de laatste manier gebruikt om sneller je tafels op te kunnen zeggen, gebruik je dus een "natuurlijke" recursieve manier om het uit te rekenen.
Wat ik niet snap:
In je code doe je iets anders als je tekst hier ^.

Als ik code zou schrijven gelijk jij denkt (en ik ook denk):

C#:
1
2
3
4
5
6
7
8
9
10
11
12
//van 5
int from = 5;
int temp = 0;

string result = "";

for (int x = 1; x <= 10; x++)
{
    result += string.Format("{0} * {1} = {2}\n", from, x, temp += from);
}

Console.WriteLine(result);


Welliswaar niet recursief, maar ik vermenigvuldig nergens.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 02-10 17:38

dusty

Celebrate Life!

Snake schreef op maandag 08 september 2008 @ 00:30:
[...]
Wat ik niet snap:
In je code doe je iets anders als je tekst hier ^.
[...]
Ik zei ook niet dat mijn code hetzelfde was, ik gaf alleen een voorbeeld hoe een mens natuurlijk recursief denkt, en dat het vaker voorkomt dan men denkt.
8=7, tik foutje. Gebeurt zelfs bij mij... blijkbaar :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Patatje01
  • Registratie: December 2020
  • Laatst online: 18-10-2022
Paprika schreef op vrijdag 5 september 2008 @ 20:25:
Nog eens bedankt :P.

Ik had het nog even aangepast naar:
int num = Convert.ToInt32(textBox1.Text);
int n = 0;
int b = Convert.ToInt32(textBox3.Text) + 1;
while (n < b)
Zodat je zelf kunt bepalen tot welk tafeltje er berekent moet worden. O-)

i.i.g. iets nieuws geleerd voor de volgende keer.
[...]


Natuurlijk, anders heb ik er niets aan. :D
Vraagje, hoe wordt je code dan? als ik dit in mijn code verwerk krijg ik een error maar ik heb geen idee wat ik fout doe?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Patatje01 schreef op zondag 21 maart 2021 @ 17:52:
[...]


Vraagje, hoe wordt je code dan? als ik dit in mijn code verwerk krijg ik een error maar ik heb geen idee wat ik fout doe?
Goeiendag zeg :X

Wil je 13 jaar oude koeien gewoon in de sloot laten liggen a.u.b.? :D

Open even een nieuw eigen topic (lees even onze Quickstart voordat je dat doet).

[ Voor 28% gewijzigd door RobIII op 21-03-2021 18:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.