Inlägg

Inlägg som Astroastro har skrivit i forumet
Av Astroastro

Har lyckats med koden nu och med endast for loopar,
Tack för hjälpen!

Skickades från m.sweclockers.com

Av Astroastro

Bra information för vidare studier. Stämmer att vi måste jobba med arrayer endast

Skickades från m.sweclockers.com

Av Astroastro
Skrivet av perost:

Du kommer nästan garanterat inte få godkänt för en sån här lösning, helt enkelt eftersom den använder mer avancerade konstruktioner än ni lär ha lärt er än. Poängen med såna här uppgifter är att visa att du förstår grunderna, med din nuvarande lösning ser mer ut som att du bara kopierat någon (väldigt oeffektiv¹) lösning från nätet.

Det finns i stort sett två olika sätt att lösa problemet på. Det mest effektiva sättet att lösa det på är att helt enkelt bara kopiera den sista passageraren till platsen för passageraren som du vill ta bort. Den sista passageraren blir då duplicerad, men det löser sig när du sen minskar antal_passagerare med ett eftersom den sista platsen i bussen då "glöms bort". Nackdelen med denna lösning är att ordningen på passagerarna kastas om när du bort passagerare.

Om ordningen på passagerarna måste bibehållas så är den andra lösningen att göra vad din nuvarande kod gör, d.v.s. ta reda på vilket index passageraren som ska tas bort ligger på och flytta upp alla element efter det indexet ett steg. Men använd for-loopar för att loopa igenom och flytta elementen "manuellt" istället. Om du vill kunna tala om för användaren att det inte fanns någon passagerare som matchade så är det troligtvis enklast att använda två separata for-loopar, en som letar efter passageraren och en som flyttar passagerarna, istället för att nästla for-loopar.

Du behöver för övrigt inte gå igenom hela arrayen, utan bara så många element som det finns passagerare. D.v.s. använd inte passengers.Length när du loopar igenom arrayen, utan antal_passagerare.

¹ Koden är oeffektiv eftersom den först går igenom hela arrayen för att leta efter rätt passagerare, struntar sen i indexet som hittats och går igenom hela arrayen igen för att skapa en lista som sen direkt konverteras till en array, och till sist skapar en ny array med 25 element och kopierar alla element från den gamla arrayen till den nya.

Tack så mycket för informationen!

Skickades från m.sweclockers.com

Av Astroastro
Skrivet av zaibuf:

Break ska skrivas med små bokstäver, break;

Det där kommer att avbryta loopen, jag ser inte i koden vart du tar bort något.
Just nu gör du detta,

FÖR VARJE TAL I array
OM DETTA VÄRDE I array ÄR LIKA MED usersNumber
AVBRYT LOOPEN.

Det är här du vill ta bort värdet på det indexet (i) innan ditt break; statement.

Du kan också använda IndexOf(object). Detta kommer att returera det första index som matchar det du söker.
Får du ingen träff så retureras -1 (out of bounds, alltså indexet finns inte i din array).

var indexToDelete = array.IndexOf(usersNumber); if(indexToDelete != -1) { array[indexToDelete] = 0; // 0 Är default för int, använder du nullable types (int?) kan du använda null. } // ...Annars gör det du vill göra om numret inte finns.

Kod upplagd

Skickades från m.sweclockers.com

Av Astroastro

Tack för alla svar

string str; int getOff; while (true) { try // Ålder skrivs in på den avgående passageraren. { Console.WriteLine("Avgående passagerare"); Console.WriteLine("------------------------"); Console.Write("Vänligen skriv in ålder: "); str = Console.ReadLine(); getOff = Convert.ToInt32(str); break; } catch { Console.WriteLine(".............."); Console.WriteLine("OGILTIGT VAL ."); Console.WriteLine("Försök igen ."); Console.WriteLine("--------------"); } } for (int i = 0; i < passengers.Length; i++) { if (getOff == passengers[i]) // Tar bort passagerare sedan flyttar upp resten av värdena i arrayen. { passengers = passengers.Where(f => f != getOff).ToArray(); Array.Resize(ref passengers, 25); // Lägger till ett nytt element i arrayen. break; } } antal_passagerare--; Console.WriteLine("Passagerare med ålder: " + getOff + " har lämnat bussen."); Console.WriteLine("Återgå till meny: Tryck valfri tangent"); Console.ReadKey();

Av Astroastro

Tycker det känns rätt oxå men resultat blir fel, alla av samma värden försvinner 🤔

Skickades från m.sweclockers.com

Av Astroastro

Aa, dock måste de va array enligt uppgiften

Skickades från m.sweclockers.com

Av Astroastro

Använder en for loop nu
T.ex
For (int i = 0; i < array.length; i++)
If ( array[i] == usersNumber)
Break;

Kan skicka koden senare för mer exakt

Skickades från m.sweclockers.com

Av Astroastro

Programmering c# Array-problem

hellooo

Håller på med en uppgift i skolan, det jag försöker ta reda på är följande:

jag har skapat en int array (vektor som det kallas i boken), där ska användaren fylla in vektor med tal.
Jag ska kunna sedan välja en metod som jag kan ta bort ett värde/element där användaren har fyllt i.
Jag har fixat allt det så det fungerar MEN mitt problem är: om användaren fyller i ex. "tal: 3" fyra ggr, och jag sedan väljer att ta bort talet 3, så vill jag att endast att en av dom 3:orna försvinner så jag har tre 3:or kvar i arrayen.
Har försökt trixat med detta ett tag nu men inte kommit på nån lösning ännu.
någon som kan hjälpa mig?
tack på förhand!

Av Astroastro

@Zippeer:

Jajjemän!

Av Astroastro

@Guardrail:

hittade lösningen, STÄNG AV 4G samtal och allt fungerar som det skall

Av Astroastro

Samtal bryts exakt 2min och 8sek - Varför?

Har ett väldigt konstigt problem, som rubriken lyder så bryts många av mina samtal (ingående och utgående) på exakt 2min och 8sek. Även så hörs inga uppringningstoner.

Har formaterat om telefonen 2ggr men båda problemen kvarstår

någon som vet av vad det kan vara?

Samsung note8

Tack på förhand.