Permalänk
Medlem

frågor i C#

Hej Jag har så många frågor och vet inte vart jag kan fråga dom så nu testar jag här.
Jag har aldrig suttit vid dator i mitt liv men nu går jag 3;dje veckan i programmering 1 som jag måste ha för att komma till nästa utbildning. Jag kraschade i söndags pga sen inlämning för jag tycker det är så svårt. Fick ok på den och nu till nästa. Ni har säkert hört om den men jag kan inte söka helt här har sökt på flera saker både måndag och tisdag och nu är dagen slut. "Långt inlägg"
Fråga 1: Jag ska be användaren skiva in 10 siffror i en vektor och det kan jag, men hur får jag ut dom? 1:sta = 6, enter 2:dra =9, enter. (jag vet att ni inte gör "mina uppgifter" och det vill jag inte utan jag vill lära mig så att jag klara examinationen om 2 veckor:/ Jag tycker detta är så roligt så jag sitter gärna länge med det dock har jag suttit ca80h/veckan pga jag är trögfattad.

Permalänk
Medlem

Denna går igenom exakt vad du vill.
Du lagrar inmatningen från användaren i en array och sedan skriver du ut den med en for each-loop och System.Console.Write

https://docs.microsoft.com/en-us/dotnet/csharp/programming-gu...

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk

Det som @Kwame länkade ska räcka för att du ska komma vidare.

Visa signatur

Motherboard: ASUS ROG Crosshair VIII Hero X570 | Processor: AMD Ryzen 5900X | Graphic: MSI GeForce RTX 4090 24GB GAMING TRIO | Memory: G.Skill 64GB DDR4 3600MHz CL16 Trident Z Neo | PSU: ASUS ROG Thor 1200W

Permalänk
Medlem

Vill inte förvirra dig men menar du inte en array istället för en vector? Eller sparar du vektorer i en array?

Iaf har du redan löst hur du sparar det du frågar användaren om i någon form av data struktur så är detta enkelt att lösa.

Det du vill göra är att ditt program skall loopa igenom din data struktur som det kallas.
Enklast är som kwame skrev en for each-loop.

För att göra det enklare så gör den exakt det som det översätts till. för varje objekt i datan utför det vi skriver i måsvingarna.

Man specificerar vad för typ av värde som man har i sin data struktur så har vi en array med integerers så specificerar vi det.
foreach(int x in minData){ //skriv ut x;}
int = typ på data
x = vad vi kallar värdet så vi kan referera till det i måsvingarna
minData = här skriver du namnet på din array/lista/datastruktur.

Det andra du kan göra är att använda en vanlig for loop.
for(int i = 0; i < arr.Length; i++){//kod som utförs per varv i loopen}
Lite mer att skriva men ibland behöver man kunna vara mer specifik.

Denna loop består av tre delar. Först definierar vi en variabel, i detta fall ett heltal vi kalla för i och som vi satt till 0. Sedan definierar vi hur länge vi skall loopa. I detta fall så förutsatte jag att vi hade en array kallad arr och arrays i C# har en parameter inbygd som heter Length. Eftersom i en array så räknar vi från 0 och inte 1 så sätter vi att sålänge i är mindre än Length skall denna loop köras. Den tredje delen i++ säger att efter varje loop ökar vi värdet på i. Det betyder att om vi har en array som innehåller 10 värden kommer Length vara 10.

Varje varv i loopen ökar i med 1. Så i kommer var 0,1,2,3,4,5,6,7,8,9.
Om vi vill göra något med våran array, exempelvis läsa värdena så kan vi använda oss av "i"
for(int i = 0; i < arr.Length; i++){
System.Console.WriteLine(arr[i]);
}
Eftersom i är först 0 sedan 1, 2, 3 osv... så kommer vi på detta vis åt alla värden i följd. En anledning att använda en for loop istället för foreach är att vi kan styra hur vi loopar eller om vi behöver veta vart i loopen vi är. Ex skulle vi enbart vilja skriva ut vart annat nummer skulle vi kunna lägga en if sats inne i loopen eller så skulle vi kunna skriva i += 2 istället för i++.

Permalänk
Medlem

frågor i c#

jag har skrivit i det jag fattat som en vektor.
int[] nummer = new int [10];
och sedan lagt in det i en string
string[] rad = {1:a, osv};
Det står system.string[] {0} och sedan kommer
skriv ditt 1:

Permalänk
Medlem

@p_l_u_20
Du får skapa en tom int array med 10 positioner, vilket du har gjort.

Därefter får du göra en loop över längden på arrayen, där användaren i varje iteration matar in ett nummer (tänk på att detta måste parsas som en int, då ReadLine ger dig en sträng), detta lagrar du i samma position i arrayen.

Nu har du en int array med 10 tal.

Nu loopar du samma array igen för att skriva ut talen.

@psilobe
Gymnasieklasser använder ordet vektor för arrayer, fråga mig inte varför. Tror bara att det förvirrar.
Det är bättre att ha kursmaterialet på engelska, då allt man googlar är på engelska.

Permalänk
Medlem

klarade det

Hej ville bara säga att det fungera nu utan foreach loop och fått fram tio slumptal. Nu ska jag bara få så att användaren använder heltal upp till 25 och sedan ska jag jämföra användarens tal mot mina slumptal.
Tack för hjälpen så här långt

Permalänk
Medlem

Hej igen jag får ut både användarens tio tal och mitt slumptal. Nu är frågan hur ska jag jämföra slumpen mot användarens tal? jag förstår inte, bara att man gör det i loppen. Är det med if och if else?

Permalänk
Medlem

Varför ska du jämföra de mot slumptal? Är det en del av uppgiften?
Vad skall hända isåfall om det matchar ett av slumptalen?

Jag fattade det som att användaren skall mata in 10 heltal, och sedan skall dessa skrivas ut.

for(int i=0; i<array.Length; i++) { if(slumptal == array[i]) gör någonting else gör något annat }

Denna går igenom alla tal, kollar ifall något av talen matchar slumptalet (om det nu bara finns ett dvs, men det framkommer ju ej)

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem

svar

@kwame: Ja det är en del i uppgiften att man ska i koden ska nu läsa alla tal som användaren skrivit in (i vektorn) och testa tal för ett slump tal mot eventuella matchningar. Får man en matchning har man vunnit, och då skrivs det ut och det har jag redan gjort men hur vet jag om slumptalet har jämförts eller inte med användarens tal. jag får alltid fram att slumptalet inte matcha men användarens nummer trots att den ibland gör det. (hoppas du förstår vad jag menar).

Permalänk
Medlem
Skrivet av p_l_u_20:

@kwame: Ja det är en del i uppgiften att man ska i koden ska nu läsa alla tal som användaren skrivit in (i vektorn) och testa tal för ett slump tal mot eventuella matchningar. Får man en matchning har man vunnit, och då skrivs det ut och det har jag redan gjort men hur vet jag om slumptalet har jämförts eller inte med användarens tal. jag får alltid fram att slumptalet inte matcha men användarens nummer trots att den ibland gör det. (hoppas du förstår vad jag menar).

Helt omöjligt att säga utan att du visar koden.

if(slumptal == array[i]) { Console.WriteLine("Grattis, du har vunnit! Du hade nummer " + array[i] + " som matchade slumtapet"); }

fungerar iaf för att jämföra.

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem

när jag får ett slumptal skrivs det ut men jag får oxå ut du förlorade samtidigt trots att talet finns i dom inmatade talen dvs det skulle stå bingo men jag får inte det att fungera. och användaren kan skriva alla tal och jag vill ju bara att den ska kunna skriva tal upp till 25 ska det vara en kod i try catch blocken? Jag försöker ha så lite kod som möjligt men jag kanske måste ha 2 for loppar mm?

int[] nummer = new int[10];
string[] rad = { " 1:a", "2:dra", "3:dje", "4:de", "5:te", "6:te", "7:de", "8:onde", "9:onde", "10:onde" };
Console.WriteLine(" Välkommen! Du har kommit till mitt bingo spel. ");
Console.WriteLine(" Skriv in tio heltal mellan 1-25 tryck enter efter varje tal. ");
int[] slump = new int[1];
Random Ra = new Random();

for (int i = 0; i < nummer.Length; i++)
{
nummer[i] = int.Parse(Console.ReadLine());
Console.WriteLine(" Ditt tal är " + nummer[i] + " på " + rad[i] + " plats .");
}
Console.WriteLine(" Detta är mitt slumptal " + slumpen);
if (slump == nummer)
{
Console.WriteLine(" Bingo du hade rätt nummer" + nummer +"i din rad! ");
}
else if (slump != nummer)
{
Console.WriteLine(" Surt sa räven du förlorade men försök gärna igen! ");
}
try
{
Convert.ToInt32(Console.ReadLine());
}
catch (Exception )
{
Console.WriteLine(" skriv bara heltal mellan 1-25 och inga bokstäver");

Permalänk
Medlem
Skrivet av p_l_u_20:

när jag får ett slumptal skrivs det ut men jag får oxå ut du förlorade samtidigt trots att talet finns i dom inmatade talen dvs det skulle stå bingo men jag får inte det att fungera. och användaren kan skriva alla tal och jag vill ju bara att den ska kunna skriva tal upp till 25 ska det vara en kod i try catch blocken? Jag försöker ha så lite kod som möjligt men jag kanske måste ha 2 for loppar mm?

int[] nummer = new int[10];
string[] rad = { " 1:a", "2:dra", "3:dje", "4:de", "5:te", "6:te", "7:de", "8:onde", "9:onde", "10:onde" };
Console.WriteLine(" Välkommen! Du har kommit till mitt bingo spel. ");
Console.WriteLine(" Skriv in tio heltal mellan 1-25 tryck enter efter varje tal. ");
int[] slump = new int[1];
Random Ra = new Random();

for (int i = 0; i < nummer.Length; i++)
{
nummer[i] = int.Parse(Console.ReadLine());
Console.WriteLine(" Ditt tal är " + nummer[i] + " på " + rad[i] + " plats .");
}
Console.WriteLine(" Detta är mitt slumptal " + slumpen);
if (slump == nummer)
{
Console.WriteLine(" Bingo du hade rätt nummer" + nummer +"i din rad! ");
}
else if (slump != nummer)
{
Console.WriteLine(" Surt sa räven du förlorade men försök gärna igen! ");
}
try
{
Convert.ToInt32(Console.ReadLine());
}
catch (Exception )
{
Console.WriteLine(" skriv bara heltal mellan 1-25 och inga bokstäver");

Du gör aldrig något med slump? Varför är det en array?
Du kollar om en array är lika med en annan array. Detta kommer då att jämföra referenser och då de refererar olika arrayer kommer det alltid vara false.

För att se om talet är inom spannet måste du kontrollera det angivna värdet från användaren (större än 0, mindre än 26). Just nu sätter du värdet direkt i början av loopen till nummer[i] utan någon kontroll.

Din try catch har ingen funktion i detta fall, koden du kör i try blocket gör du aldrig något med. Detta bör ligga i din loop, fast istället för try-carch ska du använda int.TryParse().

Jag förstår heller inte vad din rad array har för funktion? Du har tillgång till loop-variabeln (i) som du kan använda för att skriva platsen i din WriteLine.

Permalänk
Medlem
Skrivet av p_l_u_20:

Jag har aldrig suttit vid dator i mitt liv men nu går jag 3;dje veckan i programmering 1 som jag måste ha för att komma till nästa utbildning.

[...]

Jag tycker detta är så roligt så jag sitter gärna länge med det dock har jag suttit ca80h/veckan pga jag är trögfattad.

Du är för hård mot dig själv. Från att aldrig ha suttit vid en dator till att kunna programmera den att göra saker, om än små saker, på ynka tre veckor är ju otroligt stora framsteg.

Tycker du det är roligt är halva striden redan vunnen. Det är okej att känna sig lite trög ibland, det gör alla programmerare, men det är också viktigt att förstå att det tar tid att lära sig. Särskilt då du inte är datorvan.

Håll modet uppe, och försök att inte bränna ut dig

Permalänk
Medlem

ny uppgift

Hej nu har jag en ny uppgift Jag ska försöka få ut läsken med hjälp av namnen och ska få ut priset och jag ska få ut slumpflaskor. Hur ska jag tänka? är helt låst. Namnen blir röda

public void add_soda()
{
List<soda> mylist = new List<soda>();
mylist.Add(new soda() { 1. "coca cola", 13 });
mylist.Add(new soda() { 2. "coca cola light", 13 });
mylist.Add(new soda() { 3. "fanta", 13 });
mylist.Add(new soda() { 4. "fanta light", 13 });
mylist.Add(new soda() { 5. "fanta exotic", 13 });
mylist.Add(new soda() { 6. "sprite", 13 });
mylist.Add(new soda() { 7. "sprite light", 13 });
mylist.Add(new soda() { 8. "ramlösa", 13 });
mylist.Add(new soda() { 9. "ramlösa citus", 13 });
mylist.Add(new soda() { 10. "loka", 13 });
mylist.Add(new soda() { 11. "loka citrus", 13 });
mylist.Add(new soda() { 12. "pepsi", 13 });
mylist.Add(new soda() { 13. "pepsi max", 13 });

Random Ra = new Random();
string str = Console.ReadLine();
int price = Convert.ToInt32(str);
Console.WriteLine("\n This i a simulator game ");
Console.WriteLine(" add soda" + "{0}");
for (int i = 0; i < mylist.Count; i++)
{
int rand = Ra.Next(1, 13);
mylist[i] = rand;
}

Console.WriteLine(" The crate is full!");

Permalänk
Medlem
Skrivet av p_l_u_20:

Hej nu har jag en ny uppgift Jag ska försöka få ut läsken med hjälp av namnen och ska få ut priset och jag ska få ut slumpflaskor. Hur ska jag tänka? är helt låst. Namnen blir röda

public void add_soda()
{
List<soda> mylist = new List<soda>();
mylist.Add(new soda() { 1. "coca cola", 13 });
mylist.Add(new soda() { 2. "coca cola light", 13 });
mylist.Add(new soda() { 3. "fanta", 13 });
mylist.Add(new soda() { 4. "fanta light", 13 });
mylist.Add(new soda() { 5. "fanta exotic", 13 });
mylist.Add(new soda() { 6. "sprite", 13 });
mylist.Add(new soda() { 7. "sprite light", 13 });
mylist.Add(new soda() { 8. "ramlösa", 13 });
mylist.Add(new soda() { 9. "ramlösa citus", 13 });
mylist.Add(new soda() { 10. "loka", 13 });
mylist.Add(new soda() { 11. "loka citrus", 13 });
mylist.Add(new soda() { 12. "pepsi", 13 });
mylist.Add(new soda() { 13. "pepsi max", 13 });

Random Ra = new Random();
string str = Console.ReadLine();
int price = Convert.ToInt32(str);
Console.WriteLine("\n This i a simulator game ");
Console.WriteLine(" add soda" + "{0}");
for (int i = 0; i < mylist.Count; i++)
{
int rand = Ra.Next(1, 13);
mylist[i] = rand;
}

Console.WriteLine(" The crate is full!");

Är det där något du har skrivit själv? Är det där all kod du har? https://www.sweclockers.com/forum/trad/1539788-faq-sweclocker... tittar där under avsnittet kod och kod hur du ska använda dig av [code] bland annat.

Permalänk
Medlem

@ToddTheOdd: Jag har mer koder övrigt men inte i add_soda. ska kolla in den länken. och ja jag har skrivit det själv. Jag är långt ifrån klar ännu med själva uppgiften. Mer att jag fastat i den här.

Permalänk
Medlem
Skrivet av p_l_u_20:

@ToddTheOdd: Jag har mer koder övrigt men inte i add_soda. ska kolla in den länken. och ja jag har skrivit det själv. Jag är långt ifrån klar ännu med själva uppgiften. Mer att jag fastat i den här.

Utan att ha din definition på Soda så är det svårt att säga vad som kan vara fel. För det är den som styr hur ditt anrop till den ska se ut.
{ 1. "coca cola", 13 } ser t.ex lite konstigt ut. Ska det verkligen vara en punkt efter första 1:an där? Jag gissar hej vilt på att det borde vara ett komma. Min gissning är då att 1:an är ett ID, "coca cola" är ett namn och vad 13 i slutet är vet jag inte riktigt. Så hur ser din class Soda ut egentligen? Vad använder du dig av för utvecklingsmiljö? Visual studio? Den borde tala om för dig vad det är som är fel om du håller muspekaren över det som är rödmarkerat.

Permalänk
Medlem
Skrivet av p_l_u_20:

Hej nu har jag en ny uppgift Jag ska försöka få ut läsken med hjälp av namnen och ska få ut priset och jag ska få ut slumpflaskor. Hur ska jag tänka? är helt låst. Namnen blir röda

public void add_soda() { List<soda> mylist = new List<soda>(); mylist.Add(new soda() { 1. "coca cola", 13 }); mylist.Add(new soda() { 2. "coca cola light", 13 }); mylist.Add(new soda() { 3. "fanta", 13 }); mylist.Add(new soda() { 4. "fanta light", 13 }); mylist.Add(new soda() { 5. "fanta exotic", 13 }); mylist.Add(new soda() { 6. "sprite", 13 }); mylist.Add(new soda() { 7. "sprite light", 13 }); mylist.Add(new soda() { 8. "ramlösa", 13 }); mylist.Add(new soda() { 9. "ramlösa citus", 13 }); mylist.Add(new soda() { 10. "loka", 13 }); mylist.Add(new soda() { 11. "loka citrus", 13 }); mylist.Add(new soda() { 12. "pepsi", 13 }); mylist.Add(new soda() { 13. "pepsi max", 13 }); Random Ra = new Random(); string str = Console.ReadLine(); int price = Convert.ToInt32(str); Console.WriteLine("\n This i a simulator game "); Console.WriteLine(" add soda" + "{0}"); for (int i = 0; i < mylist.Count; i++) { int rand = Ra.Next(1, 13); mylist[i] = rand; } Console.WriteLine(" The crate is full!"); }

För det första, hur ser din klass ut för soda?

Se följande:
mylist.Add(new soda() { 1. "coca cola", 13 });
Du använder en punkt mellan 1 och "coca cola", jag antar att du vill ha ett komma där istället

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem

@p_l_u_20
Rekommenderar att du tittar igenom en tutorial på hur man arbetar med collections och klasser. Om detta är ett ämne du vill fortsätta med och senare arbeta med så är det viktigt att du arbetar i ett tempo så att du förstår det du gör. Inte ber andra göra uppgifter åt dig för att sedan hoppa vidare till nästa, där du då fastnar igen.

Ta det lugnt och är du det minsta osäker på något så backa och läs på igen, jämför även olika dokumentationer och tutorials. Ibland kan vissa förklaringar klicka bättre än andra.

Just nu är det lite otydligt vad det är du behöver hjälp med då det saknas mycket kod och du bara säger att namnet är rött. Din loop med random känns lite märkligt, där du byter ut index i din lista. Random returerar en int mellan 1 och 12 som du försöker lägga i din List<Soda>, detta kommer inte att kompilera. Ett nummer är inte en soda.

Försöker du bygga kommer du få flera fel som säger vad som är fel, vilken rad som är fel och ofta tips på åtgärder. Gå igenom dessa fel ett åt gången och åtgärda så att programmet kompilerar.
Rekommenderar också att börja skriva minimalt med kod och få programmet att fungera, för att sedan bygga vidare. Börja t.ex. med en eller två soda istället för 13.

Tänk även på att referensen till listan kommer att försvinna där metoden slutar.

Tutorial angående klasser
https://youtu.be/s2hHjpZaSyI

Tutorial angående List<T> och objekt
https://youtu.be/_R7qR-avADU

Permalänk
Medlem

@zaibuf: Jag började om. Tack alla. Känns som min framtid hänger på detta. Börjar om med en sak i taget då allt var rörigt.

Permalänk
Medlem

@p_l_u_20 Ge inte upp och ta ett steg i taget. Genvägar gör bara att du kommer tillbaka till samma problem senare utan att ha lärt dig något Att förstå varför det ska vara på ett visst sätt kommer underlätta mycket i framtiden då du ställs inför samma problem.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem

@zaibuf: det var bra förklaringar i dom youtube klippen. så nu är jag på g igen. Tack. som sagt jag vill bara ha råd inte färdig uppgift.

Permalänk
Moderator
Forumledare

*tråd rensad*

Posta helst inte fullständiga lösningar utan hjälp istället att personer att lära sig

Visa signatur

Forumets regler | Har du synpunkter på hur vi modererar? Kontakta SweClockers/moderatorerna

Jag stavar som en kratta

Gillar lök på discord

Permalänk
Medlem
Skrivet av p_l_u_20:

@zaibuf: det var bra förklaringar i dom youtube klippen. så nu är jag på g igen. Tack. som sagt jag vill bara ha råd inte färdig uppgift.

Kul! Kan verkligen rekommendera hela Brackeys C# tutorial för nybörjare, han förklarar med bra exempel och inte massa lull omkring.

Permalänk
Medlem

hjälp

hur gör jag för att kunna avsluta programmet ni vet när man skriver "Exit the game." vill ju skicka in detta idag efter tusen misslyckande.

Permalänk
Medlem
Skrivet av p_l_u_20:

hur gör jag för att kunna avsluta programmet ni vet när man skriver "Exit the game." vill ju skicka in detta idag efter tusen misslyckande.

Se följande: https://stackoverflow.com/questions/10286056/what-is-the-comm...

Prova om du kan använda Environment.Exit(0)

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem
Skrivet av p_l_u_20:

hur gör jag för att kunna avsluta programmet ni vet när man skriver "Exit the game." vill ju skicka in detta idag efter tusen misslyckande.

Jag antar att du kör programlogiken i en loop i Main, d.v.s.:

static public void Main(String[] args) { while (något villkor) { // Visa meny, hantera inmatning från användaren, o.s.v. } }

Du får i så fall se till att villkoret för while-loopen är något som du kan ändra på, t.ex. en bool-variabel, och när du vill avsluta programmet ändrar du helt enkelt på variabeln så att loopen avslutas när den når slutet. Du kan som nämnts även använda t.ex. Environment.Exit(0), men det är inget man brukar använda för den här typen av nybörjaruppgifter och kommer troligtvis göra din lärare misstänksam.

Permalänk
Medlem
Skrivet av perost:

Jag antar att du kör programlogiken i en loop i Main, d.v.s.:

static public void Main(String[] args) { while (något villkor) { // Visa meny, hantera inmatning från användaren, o.s.v. } }

Du får i så fall se till att villkoret för while-loopen är något som du kan ändra på, t.ex. en bool-variabel, och när du vill avsluta programmet ändrar du helt enkelt på variabeln så att loopen avslutas när den når slutet. Du kan som nämnts även använda t.ex. Environment.Exit(0), men det är inget man brukar använda för den här typen av nybörjaruppgifter och kommer troligtvis göra din lärare misstänksam.

Vi får väl hoppas att läraren förstår att programmering till 90% handlar om att söka efter information på nätet Det är ju liksom inget prov det handlar om vad jag förstår. Men du har helt rätt i det du säger, detta är väl inget som direkt ingår i kurserna men utan att veta hur TS byggt sin kod så var det ganska svårt att föreslå något annat

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB