[C#] Arrays in for lus zetten.

Status
Niet open voor verdere reacties.

jimowns

Gebruiker
Lid geworden
2 sep 2006
Berichten
341
Ik heb een kleine oefening gemaakt voor mij zowat te testen en bij te leren in de taal van C#.

De oefening die ik gemaakt heb:
1) Maak een array en en zet in de for lus dat je van 0 tot 6 de waarde 0 blijft hebben, als je in de declaratie van array, 2 intypt geeft het 0 weer in de output, zo is dat hetzelfde bij de rest.

De array heb ik al gemaakt en de for lus ook, maar ik weet nietgoed hoe ik dat aan elkaar moet koppelen.
mijn code is dit:
Maar dit telt gewoon af als ik in de array declaratie 2 intyp telt het gewoon af.

Code:
            int[] Array = new int[2];  // Declaratie van array 2
            for (int i = 0; i < 6; i++)  //  For lus van 0 tot 6 
            {  
                Array[i] = (int)i;       
                Console.WriteLine(Array[i]);   // output
            }
De taal van C# krijg ik moeilijk onder de knie precies met het boek van Visual C# 2008 - de basis.


Mvg, Jim
 
Laatst bewerkt:
Maak een array en en zet in de for lus dat je van 0 tot 6 de waarde 0 blijft hebben, als je in de declaratie van array, 2 intypt geeft het 0 weer in de output, zo is dat hetzelfde bij de rest.
Je bedoelt dus, maak een array van 6 integers en initialiseer die allemaal met de waarde 0 met behulp van een for-lus?

int[] Array = new int[2];
Dit reserveert geheugen voor een array van 2 integers. Niet van 6 dus.

Array = (int)i;

'i' is al van het type int, waarom typecast je hem dan nog?
Verder geeft dit de elementen van Array de waarden 0 t/m 5. Dus niet de waarde 0.

Code:
const int ArraySize = 6;
int[] Array = new int[ArraySize];
for (int i = 0; i < ArraySize; ++i) {
    Array[i] = 0;
}

De taal van C# krijg ik moeilijk onder de knie precies met het boek van Visual C# 2008 - de basis.
De problemen waar je hier tegenaan liep hebben weinig met de taal te maken :). Als je ieder element van een array/lijst de waarde 0 wilt geven, dan itereer je over ieder element van die lijst en ken je ze de waarde 0 toe. Dit zal zo gaan in iedere taal. Ik denk dat je moeite hebt met oplossingen omzetten in kleine logische stapjes die een computer kent.
 
Ja, ik heb wel veel moeite om de kleine oefeningen op te lossen, maar dat zal ook zo zijn met grotere oefeningen vrees ik, ik probeer zoveel mogenlijk bij te leren en de taal onder de knie te krijgen.
Ik probeer wat ik kan en ik doe er alles aan om het onder de knie te krijgen.
Maar toch vrees ik dat ik een nieuw boek moet kopen, want deze die ik nu heb versta ik maar voor 60% a 70%.

Het logisch nadenken over een oefening lukt mij niet zo goed.
Het begin lukt mij wel maar hoe het verder moet, gaat het totaal niet.:confused:
Als ik bijvoorbeeld een arraylijst wil vergroten dan weet ik dat ik CopyTo moet toepassen, maar ik moet het allemaal heel goed instuderen welk klein code wat voor wat dient en waar je die moet/kan toepassen.


Mvg, Jim
 
Niet volgens de specificaties van jouw opdracht, maar het levert wel hetzelfde resultaat op:

[cpp]int[] intArray = Enumerable.Repeat((int)0, 6).ToArray();[/cpp]
 
Eventjes (Offtopic).

Ik kan nietgoed programmeren in C# als ik fouten heb, maar mijn engels is ook niet zo goed.
Het was even voor te vragen hoe ik mijn visual C# 2008 op nederlands kan zetten ?

Mvg, Jim
 
Dankuwel CoD_NL :D
dan versta ik het beter en kan ik meer leren ;) want mijn engels is niet echt goed. Maar ik ben eraan aan het werken ;)
 
Dankuwel CoD_NL :D
dan versta ik het beter en kan ik meer leren ;) want mijn engels is niet echt goed. Maar ik ben eraan aan het werken ;)

Moet je Engels kunnen om C# te programmeren dan? De user interface gaat in het nederlands gezet worden, de programmeertaal zelf blijft wel in het Engels hé :p

Oplossing van wat je wil berijken:
Code:
int[] getallenArray = new int[10];
int teller;

for(teller=1; teller< getallenArray.Length; teller++)
{
Console.WriteLine(getallenArray[teller]);
}

Een tip die ik je meegeef, gebruik LOGISCHE namen! In andere threads heb ik ook al gezien dat je met 'bb' en 'aa' werkt. Dit is niet slim als je nog een beginner bent! Ook als andere je code lezen zal het veel makkelijker zijn om 'teller' te lezen dan 'a' of weet ik veel wat ;-).
 
Laatst bewerkt:
Oplossing van wat je wil bereiken:
Code:
int[] getallenArray = new int[10];
int teller;

for(teller=1; teller< getallenArray.Length; teller++)
{
Console.WriteLine(getallenArray[teller]);
}

Wat denk jij dat dit doet dan?
De waarden in getallenArray zijn nog niet geïnitialiseerd wanneer jij ze opvraagt en naar de Console wil schrijven. Dit lijkt me ongedefinieerd gedrag.
 
Wat denk jij dat dit doet dan?
De waarden in getallenArray zijn nog niet geïnitialiseerd wanneer jij ze opvraagt en naar de Console wil schrijven. Dit lijkt me ongedefinieerd gedrag.

Oh lol! Had ik visual studio maar opgestart ;-). Natuurlijk moet je eerst de Array inlezen. Sorry voor mijn domme post..

Code:
            int[] getallenArray = new int[10];
            int teller;

            for (teller = 0; teller <= getallenArray.GetUpperBound(0); teller++)
            {
                getallenArray[teller] = teller +1;
            }

            for (teller = 0; teller < getallenArray.Length; teller++)
            {
                Console.WriteLine(getallenArray[teller]);
            }
            //getallen van 1 tem 10...
            Console.ReadLine();
 
Oh lol! Had ik visual studio maar opgestart ;-). Natuurlijk moet je eerst de Array inlezen. Sorry voor mijn domme post..

Code:
            int[] getallenArray = new int[10];
            int teller;

            for (teller = 0; teller <= getallenArray.GetUpperBound(0); teller++)
            {
                getallenArray[teller] = teller +1;
            }

            for (teller = 0; teller < getallenArray.Length; teller++)
            {
                Console.WriteLine(getallenArray[teller]);
            }
            //getallen van 1 tem 10...
            Console.ReadLine();

Dit doet nog steeds niet wat hij wil :). Hij wil alle getallen in de array initialiseren met de waarde 0.
 
Ik heb maar even het projectje gemaakt, zie deze code:


Maak een array aan waar 7 getallen in kunnen
Code:
int[] ar = new int[7];
Tel van 0 tot de lengte van de array - 1 (omdat er < staat) en vul elke plaats in de array met 0
Code:
for (int i = 0; i < ar.Length; i++)
            {
                ar[i] = 0;
            }
Maak een integer aan die het getal bijhoudt. (invoer gebruiker)
Code:
            Console.WriteLine("Voer het getal in:");
            int gebruikerinvoer = Convert.ToInt32(Console.ReadLine());
Laat het getal zien dat op de positie in de array staat die gebruiker heeft ingevoerd
Code:
            Console.WriteLine("Het getal dat op de positie zit die u heeft ingevoerd is: " + ar[gebruikerinvoer]);
            Console.ReadLine();


Volledige code:

Code:
            int[] ar = new int[7];

            for (int i = 0; i < ar.Length; i++)
            {
                ar[i] = 0;
            }

            Console.WriteLine("Voer het getal in:");
            int gebruikerinvoer = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Het getal dat op de positie zit die u heeft ingevoerd is: " + ar[gebruikerinvoer]);
            Console.ReadLine();

Have fun! :thumb:
 
Laatst bewerkt:
Ik heb maar even het projectje gemaakt, zie deze code:
Maak een array aan waar 6 getallen in kunnen (= grootte van 7!)
Code:
int[] ar = new int[7];

Kan je mij uitleggen waarom je als je voor 7 integers ruimte reserveert, je er maar 6 zou kunnen gebruiken?

Bij een C-string moet je voor een woord van 6 letters ruimte voor 7 karakters reserveren omdat je de string moet afsluiten met een '\0' karakter, maar dit heeft niks met een array van integers te maken.
 
Kan je mij uitleggen waarom je als je voor 7 integers ruimte reserveert, je er maar 6 zou kunnen gebruiken?

Als ik het debug dan zie ik duidelijk:

537p8h.png


De OP zei duidelijk van 0 tot 6 tellen, en dat doet deze door 7 plekken te reserveren. (1-6 = 6 plekken, plus de 0 = 7 plekken)
Bericht even aangepast!
 
Laatst bewerkt:
Nadat je je bericht hebt aangepast klopt het nu wel ja :).
Eerst zei je dat je voor 6 getallen 7 plekken moest reserveren.
 
Laatst bewerkt:
Als ik het debug dan zie ik duidelijk:

537p8h.png


De OP zei duidelijk van 0 tot 6 tellen, en dat doet deze door 7 plekken te reserveren. (1-6 = 6 plekken, plus de 0 = 7 plekken)
Bericht even aangepast!

:D

Ja, dat zei de TS inderdaad zeer duidelijk. Maar toch ga jij daar de mist in: er staat van 0 tot (= exclusief) 6 en niet van 0 tot en met (= inclusief) 6

Dat is ook duidelijk te zien aan de code die de TS daaronder heeft gepost:

[cpp]for (int i = 0; i < 6; i++) // For lus van 0 tot 6 -> er staat dus geen i <= 6 ;)[/cpp]
 
Ja, dat zei de TS inderdaad zeer duidelijk. Maar toch ga jij daar de mist in: er staat van 0 tot (= exclusief) 6 en niet van 0 tot en met (= inclusief) 6

Laten we niet te ver afdwalen hoe en wat over de hoeveelheid, 0 tot en met 5 is (dus) goed. TS is het gelukt?
 
Laten we niet te ver afdwalen hoe en wat over de hoeveelheid, 0 tot en met 5 is (dus) goed. TS is het gelukt?

We dwalen niet af, we zetten fouten recht die in deze thread staan :).
En het was na de allereerste reactie al opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan