C# Array problem, tips önskas!

Permalänk

C# Array problem, tips önskas!

Tjena allihopa! Håller på med ett konsolprogram där jag har en parkeringssimulator, finslipar det sista nu och stötte på ett problem. Jag har en array där jag vill söka efter 5 tomma platser i rad, har försökt ett tag nu men får inte till det, hoppas på guidening i rätt riktning:

int count = 0; for (int i = 0; i < parkingLot.Length; i++) { if (parkingLot[i] == null) { for (int j = i + 1; j < parkingLot.Length; j++) { if (parkingLot[i + 1] == null && parkingLot[j] == null) { count++; if (count == 5) { break; } Console.Write("Nearest {0} to {1}", j, i); } } } }

Det funkar till viss del, har 100 platser i arrayen där cirka 85 platser autofylls just för att ockupera programmet med lite data, när jag raderar exempelvis plats 1-5 så gör den vad det ska, raderar jag plats 1-2 så blir det fel, notera att platserna 1-85 redan är upptagna men vill att den ska söka igenom hela arrayen efter 5 tomma platser.

Permalänk
Medlem
Skrivet av PapaDiouf:

Tjena allihopa! Håller på med ett konsolprogram där jag har en parkeringssimulator, finslipar det sista nu och stötte på ett problem. Jag har en array där jag vill söka efter 5 tomma platser i rad, har försökt ett tag nu men får inte till det, hoppas på guidening i rätt riktning:

int count = 0; for (int i = 0; i < parkingLot.Length; i++) { if (parkingLot[i] == null) { for (int j = i + 1; j < parkingLot.Length; j++) { if (parkingLot[i + 1] == null && parkingLot[j] == null) { count++; if (count == 5) { break; } Console.Write("Nearest {0} to {1}", j, i); } } } }

Det funkar till viss del, har 100 platser i arrayen där cirka 85 platser autofylls just för att ockupera programmet med lite data, när jag raderar exempelvis plats 1-5 så gör den vad det ska, raderar jag plats 1-2 så blir det fel, notera att platserna 1-85 redan är upptagna men vill att den ska söka igenom hela arrayen efter 5 tomma platser.

Som jag ser det så har du bara två alternativ/val. Antingen så är det något parkerat på platsen eller så är den tom. Är den tom så har du 2 val. Antingen så är det mindre än 4 tomma innan och då ska du öka på något eller så har du 5 tomma i rad och då ska du göra något annat. Är den inte tom så ska du sätta något till 0 igen så du kan påbörja din jakt efter 5 tomma i rad igen. Ser inte riktigt varför du håller på med 2 olika loopar.

Permalänk
Medlem

Vad är poängen med de dubbla looparna i detta fallet? Det behövs inte om du skriver det rätt.

Sen kan jag tipsa om att försöka skriva koden så det inte blir så besvärliga nivåer på det då det blir betydligt mer överskådligt. Dvs din kod kan skrivas om och gör exakt samma sak som den gör nu såhär:

int count = 0; for (int i = 0; i < parkingLot.Length; i++) { if (parkingLot[i] != null) { continue; } for (int j = i + 1; j < parkingLot.Length; j++) { if (parkingLot[i + 1] != null || parkingLot[j] != null) { continue; } count++; if (count == 5) { break; } Console.Write("Nearest {0} to {1}", j, i); } }

Då blir det betydligt mer överskådligt och lättare att hitta sina fel.

Permalänk
Medlem

Du behöver inte två nästlade loopar. Det räcker att bara loopa igenom, räkna varje tom plats, återställa räknaren när en plats är tagen, och sluta loopa när du når 5 tomma platser i rad (i vilket fall de tomma platserna är [i-5, i], eller [i-count, i] om du vill generalisera det).

Ett av problemen du har nu är att du aldrig nollställer count, så sökningen avslutas när den hittat fem tomma platser som inte nödvändigtvis är i rad.

Permalänk

Grymma svar, anledningen till två loopar är väl egentligen att jag övertänker detta, vi har precis(nåja, cirka 2 veckor sen) gått igenom nästlade loopar så försöker väl lite för hårt kanske, ser dock att många anmärker detta så jag skall testa med en loop och återkommer strax igen!
Ska testa: Söka igenom arrayen igen, om en plats är ledig, kolla nästa för samma resultat, om inte, fortsätt leta, o endast med en for loop denna gång, brb!

Permalänk
Medlem
Skrivet av PapaDiouf:

Grymma svar, anledningen till två loopar är väl egentligen att jag övertänker detta, vi har precis(nåja, cirka 2 veckor sen) gått igenom nästlade loopar så försöker väl lite för hårt kanske, ser dock att många anmärker detta så jag skall testa med en loop och återkommer strax igen!
Ska testa: Söka igenom arrayen igen, om en plats är ledig, kolla nästa för samma resultat, om inte, fortsätt leta, o endast med en for loop denna gång, brb!

Varför ska du kolla nästa? Det enda intressanta är väl ändå om de 4 platser innan varit tomma eller inte?

Permalänk
Medlem
Skrivet av PapaDiouf:

Grymma svar, anledningen till två loopar är väl egentligen att jag övertänker detta, vi har precis(nåja, cirka 2 veckor sen) gått igenom nästlade loopar så försöker väl lite för hårt kanske, ser dock att många anmärker detta så jag skall testa med en loop och återkommer strax igen!
Ska testa: Söka igenom arrayen igen, om en plats är ledig, kolla nästa för samma resultat, om inte, fortsätt leta, o endast med en for loop denna gång, brb!

Enklast hade väl vart att spara ett index av något slag. T.ex:

skapa räknare/index för varje slot i parkingLots om slot är null, öka räknaren annars, nollställ räknare om räknaren är lika med gränsvärdet, avbryt loop

På så vis behöver du endast en loop och ser lättare vad som sker

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk

Hmm, fasiken alltså. Tar helt tvärstopp här, får fortfarande bara fram dom 5 första tomma raderna, när jag använder break så får jag ingen utskrift alls, såg att @perost nämnde något angående i-count, vill du förklara?

int count = 0; for (int i = 0; i < parkingLot.Length; i++) { if (parkingLot[i] != null) { continue; } if (parkingLot[i] == null) { count++; } if (count == 5) { Console.Write("Nearest: {0} to {1}\n", count, i); break; } }

Permalänk
Medlem

du bryter ju exekveringen med break första gången du fått 5 träffar. I stället för break, nollställ räknaren.

Permalänk
Medlem
Skrivet av PapaDiouf:

Hmm, fasiken alltså. Tar helt tvärstopp här, får fortfarande bara fram dom 5 första tomma raderna, när jag använder break så får jag ingen utskrift alls, såg att @perost nämnde något angående i-count, vill du förklara?

int count = 0; for (int i = 0; i < parkingLot.Length; i++) { if (parkingLot[i] != null) { continue; } if (parkingLot[i] == null) { count++; } if (count == 5) { Console.Write("Nearest: {0} to {1}\n", count, i); break; } }

Problemet där är att för varje tom ruta så ökar du count, men du nollställer aldrig count när du träffar på en icke-tom ruta
Efter du hittat 5 tomma rutor så kommer du inte kunna skriva ut din utskrift längre, eftersom du kollar om count är exakt 5 platser.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk
Medlem
Skrivet av PapaDiouf:

Hmm, fasiken alltså. Tar helt tvärstopp här, får fortfarande bara fram dom 5 första tomma raderna, när jag använder break så får jag ingen utskrift alls, såg att @perost nämnde något angående i-count, vill du förklara?

Din första if-sats har ingen effekt, och du nollställer fortfarande inte räknaren någonstans.

Vad jag menade med i-count var bara att när count == 5 så kommer i vara positionen för den sista av de fem tomma platserna (eftersom du fortsätter loopa tills du hittat fem tomma platser) medan i - count är den första platsen.

Permalänk

for (int i = 0; i < parkingLot.Length; i++) { if (parkingLot[i] != null) { count = 0; continue; } if (parkingLot[i] == null) { count++; continue; } if (count == 5) { Console.Write("Nearest: {0} to {1}\n", count, i); break; }

Okej, så om parking lot inte är null: nollställer count och fortsätter, är den null: ökar count med 1 och fortsätter, ligger felet i villkoret count == 5?

Permalänk
Medlem

@PapaDiouf: Kommentarer i koden:

for (int i = 0; i < parkingLot.Length; i++) { if (parkingLot[i] != null) { count = 0; continue; // Onödigt } // Bättre att använda else här, parkingLot[i] kan bara vara null eller icke-null. if (parkingLot[i] == null) { count++; continue; // Hoppar över nästa if-sats, så du får aldrig någon utskrift. } // count kan bara bli 5 när den ökas, bättre att lägga detta i ovanstående if-sats. if (count == 5) { // Intervallet med tomma platser börjar inte på count, utan i - count. Console.Write("Nearest: {0} to {1}\n", count, i); break; }

Tillägg: Äsch, jag kan inte räkna. Första tomma platsen i intervallet ska förstås vara i - count + 1. Om sista platsen i intervallet är t.ex. 10 så består ju de fem tomma platserna av 6, 7, 8, 9, 10. D.v.s. det börjar på 10 - 5 + 1.

Permalänk

@perost: Har inget hår kvar snart, fan så trög man känner sig... Okej att ta bort continue va ju succe åtminstone, nu har jag utskrift hela tiden. Hur menar du att jag ska lägga count == 5 i ovanstående if sats? Det sista jag behöver nu är att count inte ska stå som 5 utan att den faktiskt visar vilken plats det gäller, du har säkert beskrivit det redan men du får isåfall gärna ta det igen, och föreställ dig att jag är 8 år :'D

Permalänk
Medlem
Skrivet av PapaDiouf:

@perost: Har inget hår kvar snart, fan så trög man känner sig... Okej att ta bort continue va ju succe åtminstone, nu har jag utskrift hela tiden. Hur menar du att jag ska lägga count == 5 i ovanstående if sats?

Jag menar att du kan lägga if-satsen som testar om count == 5 direkt efter count++, det finns ju ingen mening med att kolla om count är 5 om du inte faktiskt ökat count.

Skrivet av PapaDiouf:

Det sista jag behöver nu är att count inte ska stå som 5 utan att den faktiskt visar vilken plats det gäller, du har säkert beskrivit det redan men du får isåfall gärna ta det igen, och föreställ dig att jag är 8 år :'D

Läs tillägget i mitt förra inlägg igen, jag vet tyvärr inte hur jag skulle kunna förklara det tydligare än så.

Permalänk

@perost: Fyfan!! Fick till det till slut, förstod hur jag skulle använda count - i + 1 nu! Tack alla för hjälpen!

Permalänk

@perost: Den berömda trillade ner alldeles nyligen och efter en paus inatt så var det inte lika svårt att förstå idag så nu sitter den och det funkar jättebra! Tack!

Permalänk

Tjoho! Sitter och håller på med en parkeringssimulator och har fastnat i en nästlad array, ena problemet är att meddelandet om att det är fullt kommer upp efter att två MC's har blivit tillagda, sedan önskas tips på hur jag kan kolla om arrayen är full eller inte, se exempel nedan på hur det ser ut:

if(typeOfVehicle == TypeOfVehicle.MC) { for(int i = 0; i < 100; i++) { for(int j = 0; j < 2; j++) { if(allVehicles[i,0] == null) { allVehicles[i, 0] = addVehicle; Console.WriteLine("An {0} with the licenseplate [{1}] has been added to parking space [{2}]\n", typeOfVehicle, licenseNumber, i + 1); Console.WriteLine("Arrived: [{0}]\n\n", parkingTime); Console.WriteLine("Press ENTER to return to the menu. . ."); Console.ReadLine(); Console.Clear(); break; } if (allVehicles[i, 0].typeOfVehicles == MC && allVehicles[i, 1] == null) { allVehicles[i, 1] = addVehicle; Console.WriteLine("An {0} with the licenseplate [{1}] has been added to parking space [{2}]\n", typeOfVehicle, licenseNumber, i + 1); Console.WriteLine("Arrived: [{0}]\n\n", parkingTime); Console.WriteLine("Press ENTER to return to the menu. . ."); Console.ReadLine(); Console.Clear(); break; } if(allVehicles[i,0] != null && allVehicles[i,1] != null) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("The parkinglot is full!\n\n"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("Press ENTER to return to the menu. . ."); break; } } } }

Bör jag använda return i dessa fallen? Tanken är att en motorcykel skall kunna parkera i "samma" ruta som en annan, därav den multidimensionella arrayen.

Permalänk
Medlem

Multidimensionella arrayer är något man ska undvika att använda så mycket som möjligt tycker jag. Det är bara i väldigt specifika fall det är användbart och detta känns definitivt inte som ett sådant.

Oavsett så får du nog ge oss mer kod än du gjort för att vi ska kunna hjälpa dig lösa det då vi just nu inte har någon aning om vad 'allVehicles' eller så är och hur det är uppsatt.

Permalänk

Ja det har jag insett också, dock går jag en utbildning nu där detta krävs just för att få en hum om vad det innebär etc. Det löste sig dock, hade lagt den lite snett bara nu svarar den som den skall.
Nästa problem jag har är att jag ska skriva ut arrayen, men den får inte skrivas ut 1-100 i en rak linje utan skall delas upp så de ser ut nånting såhär:
FÅR EJ:
1
2
3
4
5
6
7
8
9
osv..

ÖNSKAS:
1 2 3
4 5 6
7 8 9
osv..
Har sett en del avancerade exempel som jag inte riktigt kan stå för att lämna in än så länge då det är något jag inte hade kommit på själv över huvudtaget(än så länge åtminstone).
Något tips på hur jag kan kan gå till väga?
Detta är väl det jag försöker med nu utan resultat, inser också att jag är lite snett på de..

Console.WriteLine("Parking spaces: \n\n"); for (int row = 0; row < 100; row++) { if(allVehicles[row, 0] == null) { if (row <= 100) { Console.ForegroundColor = ConsoleColor.Green; Console.Write("[{0}] - \n", row + 1); Console.ForegroundColor = ConsoleColor.Gray; } } }

Permalänk
Medlem
Skrivet av PapaDiouf:

Ja det har jag insett också, dock går jag en utbildning nu där detta krävs just för att få en hum om vad det innebär etc. Det löste sig dock, hade lagt den lite snett bara nu svarar den som den skall.
Nästa problem jag har är att jag ska skriva ut arrayen, men den får inte skrivas ut 1-100 i en rak linje utan skall delas upp så de ser ut nånting såhär:
FÅR EJ:
1
2
3
4
5
6
7
8
9
osv..

ÖNSKAS:
1 2 3
4 5 6
7 8 9
osv..
Har sett en del avancerade exempel som jag inte riktigt kan stå för att lämna in än så länge då det är något jag inte hade kommit på själv över huvudtaget(än så länge åtminstone).
Något tips på hur jag kan kan gå till väga?
Detta är väl det jag försöker med nu utan resultat, inser också att jag är lite snett på de..

Console.WriteLine("Parking spaces: \n\n"); for (int row = 0; row < 100; row++) { if(allVehicles[row, 0] == null) { if (row <= 100) { Console.ForegroundColor = ConsoleColor.Green; Console.Write("[{0}] - \n", row + 1); Console.ForegroundColor = ConsoleColor.Gray; } } }

Kika på modulus operatorn (%), den tar ut resten av uträkningen.
För att t.ex. loopa ut enbart varannan rad kan man ta i loopen, i % 2 == 0, dvs talet delat med 2 ska ge 0 i rest = jämna tal i loopen. Så för att få ut ett radbryt efter 3 så bör du kunna göra en modulus på 4 och jämföra mot 2.

int[,] arr = new int[5, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 }, { 13, 14, 15} }; for (int row = 0; row < arr.GetLength(0); row++) { for (int col = 0; col < arr.GetLength(1); col++) { Console.Write(arr[row, col]); if (col % 4 == 2) { Console.WriteLine(); } else { Console.Write(" "); } } } Fiddle: https://dotnetfiddle.net/cTgXlW#

0 % 4 = 0; // Första iterationen j = 0
1 % 4 = 1; // andra iretationen j = 1
2 % 4 = 2 // tredje iterationen j = 2

Sistnämnda blir TRUE och ett radbryt läggs in.
Sedan börjar loopen om på nästa rad, då andra dimensionen i arrayen är 3, så j loopen går endast 0-2.

Permalänk
Medlem

Varför gör du inte en klass som heter parkeringsplats. Sedan gör du en lista av den klassen.
Då kan du bygga in all funktionaliteten i klassen och kan enkelt bara fråga parkeringsplatsen om den innehåller en bil, en eller två motorcyklar, hur länge den är betald för osv..

Visa signatur

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Permalänk
Medlem
Skrivet av ZecretW:

Varför gör du inte en klass som heter parkeringsplats. Sedan gör du en lista av den klassen.
Då kan du bygga in all funktionaliteten i klassen och kan enkelt bara fråga parkeringsplatsen om den innehåller en bil, en eller två motorcyklar, hur länge den är betald för osv..

I normala fall gör man så. Men jag tror att det är en skoluppgift med syftet att förstå matriser och hur man itererar i dimensioner. Då känns det ändå ganska rimligt att rita upp en parkeringsplats.

Jag har dock aldrig använt en multidimensionel array sen jag slutade skolan

Permalänk
Medlem
Skrivet av zaibuf:

Kika på modulus operatorn (%), den tar ut resten av uträkningen.
För att t.ex. loopa ut enbart varannan rad kan man ta i loopen, i % 2 == 0, dvs talet delat med 2 ska ge 0 i rest = jämna tal i loopen. Så för att få ut ett radbryt efter 3 så bör du kunna göra en modulus på 4 och jämföra mot 2.

int[,] arr = new int[5, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 }, { 13, 14, 15} }; for (int row = 0; row < arr.GetLength(0); row++) { for (int col = 0; col < arr.GetLength(1); col++) { Console.Write(arr[row, col]); if (col % 4 == 2) { Console.WriteLine(); } else { Console.Write(" "); } } } Fiddle: https://dotnetfiddle.net/cTgXlW#

0 % 4 = 0; // Första iterationen j = 0
1 % 4 = 1; // andra iretationen j = 1
2 % 4 = 2 // tredje iterationen j = 2

Sistnämnda blir TRUE och ett radbryt läggs in.
Sedan börjar loopen om på nästa rad, då andra dimensionen i arrayen är 3, så j loopen går endast 0-2.

Låter väldigt avancerat. Flytta ner WriteLine efter kolumnloopen så får du den automatiskt och även en efter sista även om den bara är 2 lång. Så slipper du göra en cpu kostsam division.

int[,] arr = new int[5, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 }, { 13, 14, 15} }; for (int row = 0; row < arr.GetLength(0); row++) { for (int col = 0; col < arr.GetLength(1); col++) { Console.Write(arr[row, col]); } Console.WriteLine(); }

Visa signatur

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Permalänk
Medlem
Skrivet av ZecretW:

Låter väldigt avancerat. Flytta ner WriteLine efter kolumnloopen så får du den automatiskt och även en efter sista även om den bara är 2 lång. Så slipper du göra en cpu kostsam division.

int[,] arr = new int[5, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 }, { 13, 14, 15} }; for (int row = 0; row < arr.GetLength(0); row++) { for (int col = 0; col < arr.GetLength(1); col++) { Console.Write(arr[row, col]); } Console.WriteLine(); }

Däremot får du då inget mellanrum mellan dina siffror, som TS önskade. Och om du lägger till det i din Write så kommer du få ett extra whitespace i slutet på varje rad, vilket kanske inte är önskvärt, går ju iofs också att lösa med en if-sats. Helt klart smidigare lösning i detta fall, snyggt!
Jag var osäker på hur många nummer som var i den inre dimensionen, vilket gör att modulus kan behövas om man vill ha 3 per rad och det är fler än så i varje inre dimension.

Permalänk
Medlem
Skrivet av zaibuf:

Däremot får du då inget mellanrum mellan dina siffror, som TS önskade. Och om du lägger till det i din Write så kommer du få ett extra whitespace i slutet på varje rad, vilket kanske inte är önskvärt, går ju iofs också att lösa med en if-sats. Helt klart smidigare lösning i detta fall, snyggt!

Sant att du inte får mellanrum, men det ska man göra i write, inte med extra if satser.

Console.Write(string.Format("{0,5}",arr[row, col].ToString());

Då får du alla kolumnerna snyggt högerjusterade med 5 tecken mellan en-talen, så även 11, 111 hamnar ordentligt.

//Fick lägga det i en code för att få mellanslagen korrekt visualiserade 1 2 3 11 12 13 111 112 113

Visa signatur

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Permalänk
Medlem
Skrivet av ZecretW:

Sant att du inte får mellanrum, men det ska man göra i write, inte med extra if satser.

Console.Write(string.Format("{0,5}",arr[row, col].ToString());

Då får du alla kolumnerna snyggt högerjusterade med 5 tecken mellan en-talen, så även 11, 111 hamnar ordentligt.

//Fick lägga det i en code för att få mellanslagen korrekt visualiserade 1 2 3 11 12 13 111 112 113

Jesus, märks att jag inte rört en console applikation på drygt 3 år, hade helt glömt bort formateringen med indentering man gjorde på sina menyer
Snyggt!

Permalänk

Jäklar, funkade hur bra som helst, tack snälla ni! Yes helt rätt, skoluppgift, går systemutvecklare .net på YH och tanken är väl att vi ska lära oss förstå hur allt rör sig, låter smart med en parkeringsclass annars! Modulus operatorn var precis de jag var ute efter, har precis läst om de så lite galet jag missa den zzZz..

Permalänk

Okej, har testat mig fram en del med modulus operatorn, jag använder den i detta fall då vi har gått igenom det innan så jag "bör" ju kunna den, har dock blivit mkt fokus på massa andra saker inom programmeringen så den har kommit lite i skymundan. Jag har en parkering och en multidimensionell array med 100 rader och 2 kolumner. Syftet med denna metod var att när jag lägger till en bil skall platsen bli röd för "upptagen", går såklart att göra det på mycket bättre sätt men av någon anledning fungerar det, förklara gärna för mig vad jag har gjort med modulus operatorn, ska även snygga till raderna osv imorgon.

Satt bara och matade in olika värden och har försökt googla men poletten trillar inte riktigt ner när det kommer till vad den gör.

Console.WriteLine("Parking lot: \n\n"); for (int row = 0; row < 100; row++) { if (allVehicles[row, 0] == null && allVehicles[row, 1] == null) { if (row % 1 == 0) { Console.ForegroundColor = ConsoleColor.Green; Console.Write("{0} ", row + 1); Console.ForegroundColor = ConsoleColor.Gray; } } else if (allVehicles[row, 0] != null || allVehicles[row, 1] != null) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("{0} ", row + 1); Console.ForegroundColor = ConsoleColor.Gray; } }

Permalänk

Precis, det är en array av objekt, bilar och MC's, tvådimensionell med 100 rader och 2 kolumner. Just nu skriver den ut 1-100 på rad, mitt mål är att få den att skriva ut 10 rader på en rad och fortsätta så 1-100, så tio rader total skall det väl bli. Resttalet utav modulus, säg att 10%9 exempelvis, då blir det väl 1 i rest om jag inte är helt ute och cyklar? I detta fallet, betyder det att den skriver ut en rad då? Ska ioförsig testa lite mer också, men passar på att fråga medans jag håller på.

Kanske ska ta ett problem i taget men skriver ut mitt andra o sista problem på denna uppgiften när jag ändå är här.
Jag kan lägga till bilar utan problem, samt två MC's, när jag försöker lägga till en tredje MC får jag upp felmeddelandet som egentligen skall komma när hela parkeringen är full.

for(int i = 0; i < 100; i++) { for(int j = 0; j < 2; j++) { if(allVehicles[i,0] == null) { allVehicles[i, 0] = addVehicle; Console.WriteLine("An {0} with the licenseplate [{1}] has been added to parking space [{2}]\n", typeOfVehicle, licenseNumber, i + 1); Console.WriteLine("Arrived: [{0}]\n\n", parkingTime); Console.WriteLine("Press ENTER to return to the menu. . ."); Console.ReadLine(); Console.Clear(); break; } if (allVehicles[i, 0].typeOfVehicles == MC && allVehicles[i, 1] == null) { allVehicles[i, 1] = addVehicle; Console.WriteLine("An {0} with the licenseplate [{1}] has been added to parking space [{2}]\n", typeOfVehicle, licenseNumber, i + 1); Console.WriteLine("Arrived: [{0}]\n\n", parkingTime); Console.WriteLine("Press ENTER to return to the menu. . ."); Console.ReadLine(); Console.Clear(); break; } if (allVehicles[i, j] != null) { Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.Write("The parkinglot is full!\n\n"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("Press ENTER to return to the menu. . ."); break; } } }

Det har väl något att göra med sista if satsen tänker jag ^^