Achterhaal de nummers die tussen 2 ingevoerde nummers liggen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 1324308

Topicstarter
Mijn vraag
Opdracht was om de invoer van de gebruiker te vermenigvuldigen met de cijfers 1 tm 10 en deze uitkomst te tonen als vermenigvuldigingstafel 1 tm 10.

Vervolgens moet ik nu het zelfde doen met 2 cijfers, namelijk de cijfers die (tussen) de door de gebruiker ingevoerde cijfers liggen.

Ik moet dus de cijfers die tussen de 2 ingevoerde cijfers liggen zien uit te vinden
Vervolgens van alle cijfers de tafel van 1 tm 10 tonen in de uitvoer textbox die ik daarvoor heb gemaakt.


voorbeeld:
als ik cijfer 2 en cijfer 7 invoer, moet ik als output krijgen: de tafels (1 tot 10) van 2,3,4,5,6,7


Relevante software en hardware die ik gebruik
Visual Studio 2019

Wat ik al gevonden of geprobeerd heb
de volgende code:
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
private void buttonCalculatie_Click(object sender, EventArgs e)

{
    int inputEen = int.Parse(textBoxInputEersteCijfer.Text);
    int inputTwee = int.Parse(textBoxInputTweedeCijfer.Text);
    var inputDrie = Enumerable.Range(inputEen, inputTwee);
    int vermenigvuldigEen;
  
                                          
    for (vermenigvuldigEen = 1; vermenigvuldigEen <= 10; vermenigvuldigEen++)


    { 
        int newOutputEen, newOutputTwee, newOutputDrie;
      

        newOutputEen = inputEen * vermenigvuldigEen;
        newOutputTwee = inputTwee * vermenigvuldigEen;
        newOutputDrie = Convert.ToInt16(inputDrie) * vermenigvuldigEen;

      
        textBoxUitvoer.Text = textBoxUitvoer.Text + ($" {vermenigvuldigEen} x {inputEen} = {newOutputEen.ToString()} ");

        textBoxUitvoer.Text = textBoxUitvoer.Text + ($" {vermenigvuldigEen} x {inputDrie} = {newOutputDrie.ToString()} ");

        textBoxUitvoer.Text = textBoxUitvoer.Text + ($" {vermenigvuldigEen} x {inputTwee} = {newOutputTwee.ToString()} ") + "\r\n";

    }
}


na starten debug krijg ik de melding:

$exception {"Kan een object van het type <RangeIterator>d__113 niet converteren naar het type System.IConvertible."} System.InvalidCastException


*snip*


ik begrijp hieruit dat wat ik probeer te doen, typecasten dus NIET gaat.


Mijn vraag is dus, hoe kan ik de range van cijfers tussen de invoer van 2 cijfers (door een gebruiker) achterhalen?

Alvast bedankt.

gr. Elijah

[ Voor 11% gewijzigd door RobIII op 14-01-2020 12:00 . Reden: Code tags toegevoegd, irrelevante code verwijderd, link verwijderd ]

Beste antwoord (via Anoniem: 1324308 op 15-01-2020 09:32)


  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Anoniem: 1324308 schreef op dinsdag 14 januari 2020 @ 11:35:
Mijn vraag
na starten debug krijg ik de melding:

$exception {"Kan een object van het type <RangeIterator>d__113 niet converteren naar het type System.IConvertible."} System.InvalidCastException
Nee, en als het goed is wijst visual studio je ook op de precieze regel waar dit mis gaat. En dan zie je dat "inputDrie" een range aan getallen is, en dat je die gaat vermenigvuldigen. Een getal kan je vermenigvuldigen, een range niet.

Je bent nu meerdere problemen tegelijk aan het bevechten, namelijk
1) hoe parse ik twee getallen
2) hoe doe ik iets voor alle getallen tussen die twee getallen
3) hoe maak ik een tafel van X
4) hoe zet ik een tafel in een tekstbox
En die zaken hussel je nu door elkaar waardoor er nu - no offence - een behoorlijke spaghetti staat. ;) Als je niet meer weet wat een foutmelding betekent, dan zegt dat doorgaans dat je niet meer weet wat je eigenlijk aan het doen bent.

Versimpel het eens: lees twee getallen in, en print alle getallen daartussen uit. Dus bij invoer 2 en 7 print je 2 3 4 5 6 7.

Heb je dat voor elkaar, dan kun je het printen van de getallen ertussen gaan vervangen door het printen van een hele tafel van die getallen.

Heb je dat voor elkaar, dan kan je die tafel in een tekstbox gaan zetten.

[ Voor 9% gewijzigd door bwerg op 14-01-2020 11:52 ]

Heeft geen speciale krachten en is daar erg boos over.

Alle reacties


Acties:
  • +1 Henk 'm!

  • Icephase
  • Registratie: Mei 2008
  • Laatst online: 08:44

Icephase

Alle generalisaties zijn FOUT!

De range van getallen tussen 2 getallen (noem ze even x en y) in, dat klinkt als y -/- x.
Vervolgens doe je x+1, x+2 etc. met een maximum van x+(y-x).

Heb je daar wat aan?

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Anoniem: 1324308 schreef op dinsdag 14 januari 2020 @ 11:35:
Mijn vraag
na starten debug krijg ik de melding:

$exception {"Kan een object van het type <RangeIterator>d__113 niet converteren naar het type System.IConvertible."} System.InvalidCastException
Nee, en als het goed is wijst visual studio je ook op de precieze regel waar dit mis gaat. En dan zie je dat "inputDrie" een range aan getallen is, en dat je die gaat vermenigvuldigen. Een getal kan je vermenigvuldigen, een range niet.

Je bent nu meerdere problemen tegelijk aan het bevechten, namelijk
1) hoe parse ik twee getallen
2) hoe doe ik iets voor alle getallen tussen die twee getallen
3) hoe maak ik een tafel van X
4) hoe zet ik een tafel in een tekstbox
En die zaken hussel je nu door elkaar waardoor er nu - no offence - een behoorlijke spaghetti staat. ;) Als je niet meer weet wat een foutmelding betekent, dan zegt dat doorgaans dat je niet meer weet wat je eigenlijk aan het doen bent.

Versimpel het eens: lees twee getallen in, en print alle getallen daartussen uit. Dus bij invoer 2 en 7 print je 2 3 4 5 6 7.

Heb je dat voor elkaar, dan kun je het printen van de getallen ertussen gaan vervangen door het printen van een hele tafel van die getallen.

Heb je dat voor elkaar, dan kan je die tafel in een tekstbox gaan zetten.

[ Voor 9% gewijzigd door bwerg op 14-01-2020 11:52 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • +1 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Kun je je code even in [code] tags zetten?

Ben ik nou zo dom of zijn jullie nou zo slim?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
@Anoniem: 1324308 Als je code post, gebruik dan code tags a.u.b. en beperk je dan tot alleen de relevante code (dus niet meer, maar zeker ook niet minder). Een link naar (een zip van) je project posten is nergens voor nodig en neigt ontzettend naar een Kan iemand even...?. Daarbij verdwijnt op een gegeven moment je code van dropbox, werkt de link dus niet meer en is je topic waardeloos voor iemand die (bijv. via Google) op dit topic stuit met eenzelfde vraag. Dus het vriendelijke verzoek alles wat nodig is voor 't oplossen van je probleem in dit topic te zetten/houden.

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


Acties:
  • 0 Henk 'm!

Anoniem: 1324308

Topicstarter
Hallo, ik heb even snel gekeken.
Moet aan het werk.. ik zal de post morgen ochtend even aanpassen mbt code en de suggesties doorworstelen.
Bedankt en een fijne middag/avond

Elijah

Acties:
  • 0 Henk 'm!

Anoniem: 1324308

Topicstarter
RobIII schreef op dinsdag 14 januari 2020 @ 12:02:
@Anoniem: 1324308 Als je code post, gebruik dan code tags a.u.b. en beperk je dan tot alleen de relevante code (dus niet meer, maar zeker ook niet minder). Een link naar (een zip van) je project posten is nergens voor nodig en neigt ontzettend naar een Kan iemand even...?. Daarbij verdwijnt op een gegeven moment je code van dropbox, werkt de link dus niet meer en is je topic waardeloos voor iemand die (bijv. via Google) op dit topic stuit met eenzelfde vraag. Dus het vriendelijke verzoek alles wat nodig is voor 't oplossen van je probleem in dit topic te zetten/houden.
ik zou graag dan die zip die je binnen hebt gehaald willen zien? wat ik heb gepost is een probleem en nergens heb ik een link naar een zip geplaatst.

wat ik wel heb geplaatst is een link naar een afbeelding. omdat ik alleen maar een link kon plaatsen naar een afbeelding. dus je aanname en reactie is een beetje kort door de bocht.

de link die ik gebruikt hebt is een link naar een afbeeldingen in mijn google drive, dus geen zip bestandje met de vraag of je het even voor mij wil oplossen?
want ik te zien kreeg was ( dmv popup ) : met daarin de mededeling dat ik een link moest gebruiken en geen afbeelding?

voor de rest zal ik mijn post aanpassen waar nodig.

dank je voor je feedback

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Anoniem: 1324308 schreef op woensdag 15 januari 2020 @ 09:31:
ik zou graag dan die zip die je binnen hebt gehaald willen zien? wat ik heb gepost is een probleem en nergens heb ik een link naar een zip geplaatst.
Oh, ik heb de link niet aangeklikt maar ik zag:
Afbeeldingslocatie: https://tweakers.net/ext/f/FVwkbjm3iw2Vi6gkAxIXHuE5/full.png
voor een link naar je project aan. Either way; een screenshot is ook niet heel handig, je kunt een foutmelding veel beter tekstueel in je topic zetten, dan kan onze zoekmachine (en Google etc.) er ook iets mee. Afbeeldingen zijn een stuk lastiger te indexeren ;) Ook voegt je screenshot verder niets toe; de code die er in staat heb je ook al gepost in je topic en dat rode kruisje geloven we wel.

Verder kun je dit soort dingen voortaan beter even per DM bespreken (of, als je wil dat andere mods/gebruikers meekijken omdat je 't ergens niet mee eens bent bijvoorbeeld, bespreken in Feedback op moderatie binnen de Devschuur). Zodoende hoef je je topic niet te vervuilen met dit soort offtopic geneuzel :)

[ Voor 9% gewijzigd door RobIII op 15-01-2020 09:40 ]

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


Acties:
  • +1 Henk 'm!

Anoniem: 1324308

Topicstarter
RobIII schreef op woensdag 15 januari 2020 @ 09:36:
[...]

Oh, ik heb de link niet aangeklikt maar ik zag:
[Afbeelding]
voor een link naar je project aan. Either way; een screenshot is ook niet heel handig, je kunt een foutmelding veel beter tekstueel in je topic zetten, dan kan onze zoekmachine (en Google etc.) er ook iets mee. Afbeeldingen zijn een stuk lastiger te indexeren ;)
Verder kun je dit soort dingen voortaan beter even per DM bespreken (of, als je wil dat andere mods/gebruikers meekijken omdat je 't ergens niet mee eens bent bijvoorbeeld, bespreken in Feedback op moderatie binnen de Devschuur). Zodoende hoef je je topic niet te vervuilen met dit soort offtopic geneuzel :)
check... voortaan even een DMmtje met geneuzel :)

Acties:
  • 0 Henk 'm!

Anoniem: 1324308

Topicstarter
Icephase schreef op dinsdag 14 januari 2020 @ 11:43:
De range van getallen tussen 2 getallen (noem ze even x en y) in, dat klinkt als y -/- x.
Vervolgens doe je x+1, x+2 etc. met een maximum van x+(y-x).

Heb je daar wat aan?
ik heb het probleem van de 2 cijfers gebruiken om 2 tafels van die 2 cijfers te printen apart opgelost.
op aanraden van de feedback van @bwerg en @Icephase

Daarna heb ik even (op papier) het probleem van: "Hoe bereken ik het verschil tussen 2 cijfers" en "
'Hoe haal ik daaruit de tussen liggende cijfers" aangepakt.

(let op dit is pietje puk niveau beredenering van mijn kant, maar het is het maximaal haalbare voor mij op dit moment met MAVO niveau en 0% ervaring) :+

Uitgaande van de cijfers 8 en 4 als input kwam ik tot de volgende beredenering:

8-4 = 4

4+ 4 = 8

Dus als ik bij 4 steeds 1 optel
Heb ik bij elke optelling een uitkomst die gelijk is aan een tussen liggend cijfer

dus: 4 + 1 = (5)
4 + 1 + 1 = (6)
4 + 1 + 1 + 1 = (7)


Daarna moet voor 5,6,7 elk de tafel van 10 uit printen.

Wat het 4 en 8 had ik al een werkende code voor geschreven.

Mis ik nu een stap , of zit ik aardig in de buurt?

Gaarne jullie feedback

Acties:
  • +1 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Zo kan het ook, maar het kan ook eenvoudiger: als je iets wil doen voor de getallen van X tot Y, doe je normaal gesproken iets als
code:
1
2
for (int i = X; i <= Y; i = i+1) {
   ...

Oftewel: we beginnen met getal i op X, dan verhogen we i elke stap met één, en we stoppen zodra i groter wordt dan Y (oftewel, we gaan door zolang i ≤ Y).

En zoals je al gezien lijkt te hebben kunnen we i=i+1 ook schrijven als i++.

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

Anoniem: 1324308

Topicstarter
Ja ik snap het.
Dat is zeker, wat mij betreft topic solved.
Het probleem was niet de code, maar mijn benadering van het probleem.

Bedankt!
Pagina: 1