Ta bort ett värde av en vektor
Hej
Hur kan man ta bort ett värde av en vektor?
tack för hjälpen
Vad betyder "värde av en vektor"? Vad har du nu, och hur ska det se ut efteråt?
Jag har skapat ett program som be användare att skriva in sin ålder om hen åker bussen. Åldern ska läggas i en vektor.
Om användaren vill stiga av bussen. så jag behöver att ta bort ålder för passageraren från vektor, men jag vet inte hur kan man göra detta.
alex skrev:Jag har skapat ett program som be användare att skriva in sin ålder om hen åker bussen. Åldern ska läggas i en vektor.
Om användaren vill stiga av bussen. så jag behöver att ta bort ålder för passageraren från vektor, men jag vet inte hur kan man göra detta.
Hur lägger du in värdet i vektorn?
arr_age = new int[10];
for (int i = 0; i < 10; i++)
{
Console.Write("ange din ålder : ");
int x = Convert.ToInt32(Console.ReadLine());
passagerare[i]=x;
}
Hur vill du hantera att passagerare nummer 4 stiger av? Ska platsen vara tom, eller vill du numrera om dem så att 5 blir 4, ... 10 blir 9 och 10 blir tom?
Det är ju inte logisk, men jag tror det är enda lösning.
Hur kodar man då(5 blir 4)?
alex skrev:Det är ju inte logisk, men jag tror det är enda lösning.
Hur kodar man då(5 blir 4)?
Vill du att passagerare[4] ska få det värde som passagerare[5] hade?
alex skrev:Det är ju inte logisk, men jag tror det är enda lösning.
Hur kodar man då(5 blir 4)?
Nej det är inte enda lösningen.
Det går utmärkt att låta det bli luckor i vektorn (= tomma platser i bussen).
Men då gäller det att du antingen håller reda på dessa luckor eller att du varje gång du ska stoppa in ett tal letar reda på en lucka.
(= Antingen håller busschauffören reda på alla tomma platser i bussen och anvisar en plats till nypåstigna eller också får de själva leta reda på en ledig plats i bussen när de kliver på.)
Jag har börjat programmering 1 för tre veckar sedan så jag är inte så kunnig i detta fack.
Hur Yngve, kan du förklara det de menar med kodar??
Tack
Du får bestämma dig för vad du vill representera med din vektor. Är det viktigt att du vet i vilken ordning passagerarna steg på? Är det viktigt att man kan identifiera dem med nummer? Har de några andra egenskaper än sin ålder? Vad ska du göra med denna vektor när du har fyllt i den?
Jag vill den lösning där passagerare som åker bussen ska flytta sig fram en plats, vet du hur man kodar ?
alex skrev:Jag vill den lösning där passagerare som åker bussen ska flytta sig fram en plats, vet du hur man kodar ?
Jag frågade förut: Vill du att passagerare[4] ska få det värde som passagerare[5] hade?
alex skrev:Ja
Hur skriver du det som en programsats?
Jag vet inte, hur?
alex skrev:Jag vet inte, hur?
passagerare[4]=passagerare[5];
Ganska likt det du redan har i din kod.
Nu får du generalisera lite så du flyttar alla passagerare som ska flyttas.
Här får du lite tips på hur du skulle kunna lägga upp logiken.
Definiera och initiera variabler:
- Definiera en vektor seat[] som kan lagra 10 st heltal. Denna vektor innehåller passagerarnas åldrar.
- Definiera en heltalsvariabel firstFreeSeat som pekar ut den första lediga platsen. Initiera denna variabel till 0. När denna variabel har värdet 0 så är bussen tom, när variabeln har värdet 10 så är bussen full.
- Definiera en heltalsvariabel age som kommer att innehålla åldern på passageraren som kliver på.
- Definiera en heltalsvariabel pos som kommer att användas för att flytta fram passagerare i bussen när någon kliver av.
Varje gång en passagerare vill kliva på bussen:
Om firstFreeSeat > 9 så skriv ut "Tyvärr, bussen är full", annars {
- Läs in passagerarens ålder i age.
- Lägg in detta värde på position ledigPlats i vektorn, dvs seat[firstFreeSeat] = age
- Öka variabeln firstFreeSeat med 1.
}
Varje gång en passagerare vill kliva av bussen:
Om firstFreeSeat = 0 så skriv ut "Tyvärr, bussen är tom", annars {
Läs in platsen som ska lämnas i pos
Så länge som pos < firstFreeSeat {
- Sätt seat[pos] = seat[pos+1]
- Öka variablen pos med 1.
}
Minska variabeln firstFreeSeat med 1
}
Kan du koda det du skrev?
Jag försökte många gånger men det gick inte.
Visa den version av din kod som verkar bäst.
Console.writeline("skriv din ålder");
int ålder = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < 10; i++)
{ if( array[i] == ålder )
{
array[i]=array[1+i]
}
}
på så sätt får jag två gånger av samma tal
det tas bort inte