Inlägg

Inlägg som anon217901 har skrivit i forumet
Av anon217901
Skrivet av Kokefa:

Det går, du har redan sparat ner typ av flaska, gör bara en console.readline, fråga efter antal flaskor, spara ner siffran till en variabel, och loopa igenom "lägg till flaska".

if (min_Back[j] == null) { for (int i; i < console.readline; i++) min_Back[j + i] = typ; break; }

public void add_soda() { Console.Clear(); int temp = 0; do { Console.WriteLine("Vad vill du stoppa i backen!?:"); Console.WriteLine("1: Pripps"); Console.WriteLine("2: Cocacola"); Console.WriteLine("3: Fanta"); Console.WriteLine("4: Falcon"); Console.WriteLine("5: Loka"); Console.WriteLine("0: Återgår till förra menyn"); int x = 0; string val = Console.ReadLine(); Console.WriteLine("Antal du vill lägga till?"); x = int.Parse(Console.ReadLine()); string typ = ""; switch (val) { case "0": Console.WriteLine("Återgår till förra menyn!"); return; case "1": typ = "Pripps"; break; case "2": typ = "cocacola"; break; case "3": typ = "Fanta"; break; case "4": typ = "Falcon"; break; case "5": typ = "Loka"; break; default: typ = "Gör ett val mellan 1-6 är du snäll! "; break; } Console.Clear(); Console.WriteLine(typ + " lades till i backen"); antal_flaskor++; for (int j = 0; j < min_Back.Length; j++) { if (antal_flaskor == min_Back.Length) { Console.WriteLine("Backen är full!"); } else { if (min_Back[j] == null) { min_Back[j] = typ; break; } } } } while (temp == 0); }

så långt kom jag,, vet inte hur jag ska få med det i räknaren riktigt.

Av anon217901
Skrivet av Kokefa:

Det går, du har redan sparat ner typ av flaska, gör bara en console.readline, fråga efter antal flaskor, spara ner siffran till en variabel, och loopa igenom "lägg till flaska".

if (min_Back[j] == null) { for (int i; i < console.readline; i++) min_Back[j + i] = typ; break; }

misslyckades, HAHA... den klagar, försökt ordna men får ej till det.. den ska ju slumpa in i min redan befinltiga vektor... där de blri struligt om man iten använmder klasser.

lyckades fasen itne heller att få till frågan om antal flaskor, får den att fråga och lägga till variablen, men får den ej att räkna med antalet i variabeln,,,

du har pm...

mvh

Av anon217901
Skrivet av Nissan8:

@yepsson: Lättast hade varit att bryta ut den långa add_soda-metoden i två delar, en som sköter menyn och en som faktiskt lägger till flaskan i backen. I det fallet kan du helt enkelt köra Console.WriteLine med felmeddelandet, det är ju egentligen ingen läsk-typ.

Någon i den här stilen:

public void ShowSodaMenu() { Console.Clear(); do { Console.WriteLine("Vad vill du stoppa i backen!?:"); Console.WriteLine("1: Pripps"); Console.WriteLine("2: Cocacola"); Console.WriteLine("3: Fanta"); Console.WriteLine("4: Falcon"); Console.WriteLine("5: Loka"); Console.WriteLine("0: Återgår till förra menyn"); string val = Console.ReadLine(); switch (val) { case "0": Console.WriteLine("Återgår till förra menyn!"); return; case "1": AddSodaToCrate("Pripps"); break; case "2": AddSodaToCrate("cocacola"); break; case "3": AddSodaToCrate("Fanta"); break; case "4": AddSodaToCrate("Falcon"); break; case "5": AddSodaToCrate("Loka"); break; default: Console.WriteLine("Gör ett val mellan 1-6 är du snäll!"); break; } } while (true); } private void AddSodaToCrate(string type) { Console.Clear(); Console.WriteLine(type + " lades till i backen"); antal_flaskor++; for (int j = 0; j < min_Back.Length; j++) { if (antal_flaskor == min_Back.Length) { Console.WriteLine("Backen är full!"); } else { if (min_Back[j] == null) { min_Back[j] = type; break; } } } }

då lär jag ändra min första switch casse meny, anropas metoden add_soda i min andra meny där?

Av anon217901
Skrivet av Nissan8:

@yepsson: Metoden är problematisk på flera sätt eftersom exekveringen fortsätter efter du har valt att återgå till förra menyn. Du lägger dessutom till en tom flaska i backen varje gång du går tillbaka.

Du gör det lättast för dig själv om du inte försöker göra allt med samma metod utan istället bryter ut metoder till flera. En metod bör endast göra en sak, det gör det lättare att förstå koden och du slipper såna här roliga buggar.

För att avsluta exekveringen när man väljer 0 kan du här använda return istället för break. Detta kommer avsluta exekveringen av metoden och skicka dig tillbaka där du exekverade add_soda(), i huvudmenyn.

case "0": Console.WriteLine("Återgår till förra menyn!"); return;

edit: Du bör även se över vad som händer när du inte väljer vad du vill stoppa i backen. I nuläget läggs det ändå till en dryck med namnet "Gör ett val mellan 1-6 är du snäll!"

damn,,

sånna här småsaker som gör mig yr.. Och är redan stressad som det är haha. Hur undviker jag att min default lägger till en flaska?
Samt, menar du att det räcker att jag bara lägge till return i mitt case för att undvika att det lägga till en tom flaska??

Av anon217901

kan jag samtidigt när jag ska skriva in vad för dryckes typ som ska läggas in, fråga efter hur många? och smidigt lagra det som en int och lägga till så flaskor många i vektorn, typ
1, cola väljs och 3st.

antalflaskor +3; ist för ++

Av anon217901
Skrivet av Nissan8:

I metoden add_soda() initierar du variabeln temp som 0, den variabeln (som du dessutom använder i while-checken) tilldelas aldrig något annat värde än 0, därför faller du alltid ur do-whilen.

Angående ditt andra problem, vad har du försökt?

nu ser koden ut såhär.. har löst det du påpekar,, MEN, när jag väljer caset som ska avsluta loopen för att gå tillbaka till huvudmenyn, så räknar vektorn som att även det caset lägger till en plats i vektorn,, inte kommit runt detta, Dock lyckats på fulknep ta bort att den ska räkna med den "Priset".. Utöver det försöker jag även nu lyckas med valet att fylla hela backen med slumpade flaskor.. lyckas inte heller där.. tidigare bara slumpat in heltal i en vektor,, koden:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace läskback { class Sodacrate { private string[] min_Back = new string[24]; private int antal_flaskor = 0; public int sum = 0; int värde = 7; public void Run() { int temp = 0; Console.WriteLine("Välkommen till denna awzum Läskbackssimulator!!"); do { Console.WriteLine(); Console.WriteLine("Vad vill du göra?!:"); Console.WriteLine(); Console.WriteLine("1: Lägg till en flaska i backen?!"); Console.WriteLine("2: Visa innehållet i din back?!"); Console.WriteLine("3: Räkna ut det totala värdet av din back?!"); Console.WriteLine("4: Slumpa fram en fylld back!"); Console.WriteLine("5: Stänga av denna awzuuum simulator?!"); try { temp = int.Parse(Console.ReadLine()); } catch { Console.WriteLine(" gör ett val!"); continue; } switch (temp) { case 1: add_soda(); break; case 2: print_crate(); break; case 3: calc_total(); break; case 4: slumpa_back(); break; case 5: Console.Clear(); Console.WriteLine("Avslutar!!! :("); temp = 0; break; default: Console.WriteLine("Ett nummer mellan 1-4 är du snäll"); break; } } while (temp != 0); } public void add_soda() { Console.Clear(); int temp = 0; do { Console.WriteLine("Vad vill du stoppa i backen!?:"); Console.WriteLine("1: Pripps"); Console.WriteLine("2: Cocacola"); Console.WriteLine("3: Fanta"); Console.WriteLine("4: Falcon"); Console.WriteLine("5: Loka"); Console.WriteLine("0: Återgår till förra menyn"); string val = Console.ReadLine(); string typ = ""; switch (val) { case "0": Console.WriteLine("Återgår till förra menyn!"); temp = 1; antal_flaskor--; break; case "1": typ = "Pripps"; break; case "2": typ = "cocacola"; break; case "3": typ = "Fanta"; break; case "4": typ = "Falcon"; break; case "5": typ = "Loka"; break; default: typ = "Gör ett val mellan 1-6 är du snäll! "; break; } Console.Clear(); Console.WriteLine(typ + " lades till i backen"); antal_flaskor++; for (int j = 0; j < min_Back.Length; j++) { if (antal_flaskor == min_Back.Length) { Console.WriteLine("Backen är full!"); } else { if (min_Back[j] == null) { min_Back[j] = typ; break; } } } } while (temp == 0); } public void print_crate() { Console.Clear(); foreach (string dryck in min_Back) { if (dryck != null) Console.WriteLine(dryck); else Console.WriteLine("Ledig Plats!"); } } public void calc_total() { int sum = 0; for (int i = 0; i < antal_flaskor; i++) sum = antal_flaskor * värde; { Console.WriteLine(); Console.WriteLine("Din backs värde är: " + sum + " kr!"); Console.WriteLine(); } } public void slumpa_back() { string[] flaskor = min_Back; Random rnd = new Random(); string randomflaska = "Pripps, Cocacola, Fanta, Falcon, Loka"; for (int i = 0; i < min_Back.Length i++) ; { randomflaska += min_Back[r.next(0, 5)].ToString(); } } } class Program { public static void Main(string[] args) { var sodacrate = new Sodacrate(); sodacrate.Run(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

Av anon217901
Skrivet av Kokefa:

@yepsson:

Där är orsaken varför antal_flaskor blir större när du lägger till en flaska.

Den loopar igenom antalet flaskor, om antal flaskor inte är 24, så kör den antal_flaskor++ för varje flaska i backen, så kommer bli 1, 3, 6, 10 och så vidare.

Rekommendation, gör antal_flaskor++ innan for loopen. Annars såg det ut att funka tycker jag.

for (int j = 0; j < min_Back.Length; j++) { if (antal_flaskor == 24) { Console.WriteLine("Backen är full!"); } else { antal_flaskor++; if (min_Back[j] == null) { min_Back[j] = typ; break; } } }

Nu vet jag inte hur länge du hållt på med programmering, men om du inte använt breakpoints än så bör du börja och lära dig det, väldigt nyttig funktion för just sådana här simpla fel, den kommer bli din bästa vän i alla lägen när något går fel, oavsett litet eller stort.

uppgiften ska som sagt lämnas in idag haha. som du ser har jag även försökt göra den andra menyn i en loop vilket jag vill ska fortsätta loopa tills man väljer case 6 som gör att man återgår till första menyn.. alltså att man kan fortsätta lägga in flaskor allt efter varandra ist. för att behöva välja att man vill lägga till flaska i första menyn igen,, får det ej att lira snyggt... SAMT,, vill ha en case dä'r jag fyller hela backen på en gång med slumpade typer av mina förbestämda flaskor.. help pls <3

Av anon217901

tjabba, här igen, håller på med min slutuppgift. en simulerad läskback med lite olika val.. efter att ha gett upp totalt om att skapa färdiga klasser och objekt efter att ha fatalt misslyckats och slitit mitt hår i timmar så tänkte jag göra det lättaste möjligast, men även här misslyckas jag nu tydligen?! min kod funkar till en början som den ska,, men något händer när den lägger till mina "flaskor" i min "läskback" den multiplicerar på något konstigt vis, samma sak när jag ska räkna ut det totala värdet.. PLS help.. ska lämnas in idag,.. KODEN:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace läskback { class Sodacrate { private string[] min_Back = new string[24]; private int antal_flaskor = 0; public int sum = 0; int värde = 5; public void Run() { int temp = 0; Console.WriteLine("Välkommen till denna awzum Läskbackssimulator!!"); do { Console.WriteLine(); Console.WriteLine("Vad vill du göra?!:"); Console.WriteLine(); Console.WriteLine("1: Lägg till en flaska i backen?!"); Console.WriteLine("2: Visa innehållet i din back?!"); Console.WriteLine("3: Räkna ut det totala värdet av din back?!"); Console.WriteLine("4: Stänga av denna awzuuum simulator?!"); try { temp = int.Parse(Console.ReadLine()); } catch { Console.WriteLine(" gör ett val!"); continue; } switch (temp) { case 1: add_soda(); break; case 2: print_crate(); break; case 3: calc_total(); break; case 4: Console.Clear(); Console.WriteLine("Avslutar!!! :("); temp = 0; break; default: Console.WriteLine("Ett nummer mellan 1-4 är du snäll"); break; } } while (temp != 0); } public void add_soda() { Console.Clear(); int temp = 0; do { Console.WriteLine("Vad vill du stoppa i backen!?:"); Console.WriteLine("1: Pripps"); Console.WriteLine("2: Cocacola"); Console.WriteLine("3: Fanta"); Console.WriteLine("4: Falcon"); Console.WriteLine("5: Loka"); Console.WriteLine("6: Återgår till förra menyn"); string val = Console.ReadLine(); string typ = ""; switch (val) { case "1": typ = "Pripps"; break; case "2": typ = "cocacola"; break; case "3": typ = "Fanta"; break; case "4": typ = "Falcon"; break; case "5": typ = "Loka"; break; case "6": Console.WriteLine("Återgår till förra menyn!"); temp = 0; break; default: typ = "Gör ett val mellan 1-6 är du snäll! "; break; } Console.WriteLine(typ + " lades till i backen"); for (int j = 0; j < min_Back.Length; j++) { if (antal_flaskor == 24) { Console.WriteLine("Backen är full!"); } else { antal_flaskor++; if (min_Back[j] == null) { min_Back[j] = typ; break; } } } } while (temp != 0); } public void print_crate() { foreach (string dryck in min_Back) { if (dryck != null) Console.WriteLine(dryck); else Console.WriteLine("Ledig Plats!"); } } public void calc_total() { int sum = 0; for (int i = 0; i < antal_flaskor; i++) sum = antal_flaskor * värde; { Console.WriteLine(); Console.WriteLine("Din backs värde är: " + sum + " kr!"); Console.WriteLine(); } } } class Program { public static void Main(string[] args) { var sodacrate = new Sodacrate(); sodacrate.Run(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

Av anon217901

sitter på en acer predator med i7a och 970m,, funkar okej men som sagt de nya med 1070 och 1080 är nog okej men har som regel, du får lägga dubbla budgeten emot din stationära för samma prestanda säkert missvisande men funkat i regel

Av anon217901

Om du dubblar din budget så kan du få en stabil

Av anon217901
Skrivet av PeCe:

Om jag inte minns fel så är det olika "potter" för gymnasiala studier och högskolestudier, så det du pluggar på gymnasienivå påverkar inte hur länge du kan få studiemedel för högskolestudier.

Det kan mkt väl vara så

Av anon217901

Hermods är bra. Är själv 29 och började plugga förra året. Tagit tjänstledigt prata med din kommun om vuxenutbildningar så sätter du dig i ett möte med en syo. Först och främst lär du plugga in allmänbehörighet, = antal godkänga poäng + basämnena. Kör själv 3st 100poängs kurser på distans, krävs två för att få studiebidrag/lån tror jag. Men detta skulle jag spara till högskolekurser om jag var du och försöka studera på distans tills du har din behörighet. Då man bara har en viss pott bidrag och lån ifrån csn. Speciellt om du har fast jobb, försök lägga undan pengar, kan även kolla om du kan gå ned i % på din anställning för att ha tid till plugg. Men självklart ditt val, vill du vara helt tjänstledig så kan din arbetsgivare inte neka dig det för studier.. lycka till

Av anon217901

Nu har jag en till uppgift, vilket är planeringsfasen till min slutuppgift i programmering1. där jag ska planera uppgiften sodacrate/läskbacken vilket många verkar ha gjort.

haha helt lost, tycker detta är bra mkt svårare än själva programmeringen. jag förstår ju uppgiften vad dem frågar efter. Men har ärligt ingen som helst aning om hur jag ska lägga upp denna planeringsfas, fattar knappt vad dem frågar efter. aldrig gjort något liknande.
ska ju skapa en egen klass som är själva "läskbacken"
ska sedan ha en vektor med 24 platser,

6 olika alternativ i min "meny" med vad man vill göra.

ska ha ungefär lika många metoder som anropas beroende på vilket av de 6valen man gör i menyn, ex lägger till flaska, eller tar bort, sorterar eller räknar ut sammanlagda värdet eller bara räknar upp dem.

men hur f*n skriver jag detta i psuedokod och aktivitetsdiagram???

kraven:

Du har med viss säkerhet bedömt situationen och uppgiftens krav
Du har planerat för uppgiften med ett enkelt aktivitetsdiagram, pseudokod och kompletterande text. I planeringen ingår kontrollstrukturer, variabler, datastrukturer och algoritmer som är adekvata för uppgiften.

uppgiften:

Planering Ni ska skapa någon form av planering till ert projekt. Då är det lämpligt att skapa följande:
1. Beskrivande del där man redogör för hur man tänkt bygga programmet och exempelvis vilka klasser och metoder som ska finnas med. Man kan också tänka sig att man vill formulera särskilda utmaningar som man ännu inte vet fullt ut hur man ska lösa.

2. Översiktsbild (klassdiagram). Man bör också göra ett diagram som visar de klasser med variabler med tillhörande variabler och metoder som ska användas. Ungefär så som det illustreras i denna projektbeskrivning nedan. Figuren ska alltså visa vilka klasser som ska användas och hur de ska konstrueras – en modell över programmet.

3. Någon pseudo-kod. Man kan exempelvis välja ut en eller ett par metoder att beskriva med pseudokod.

4. Något aktivitetsdiagram (sekvensdiagram). Man kan exempelvis välja ut en eller ett par metoder att beskriva med aktivitetsdiagram. Denna uppgift är alltså relativt öppen i sitt upplägg men desto tydligare och bättre du kan förmedla hur programmet ska konstrueras, desto bättre betyg och desto lättare för handledaren att ge vettig feedback.

objektet sodacrate ska det finns en vektor som håller reda på 25 stycken flaskor. Varje element i vektorn är ett namn som exempelvis ”coca-cola” eller ”Ramlösa”. Observera att det ska vara just en vektor och inte en lista. I sodacrate ska det finnas en switch-case meny där alternativen kopplas till olika metoder.
Dessa metoder är:
1. Lägga till en läsk i vektorn (läskbacken)
2. Skriva ut innehållet i vektorn (läskbacken)
3. Beräkna det totala värdet av backen och skriv ut på skärmen
4. Avsluta programmet Under metoden Run() ska alltså kod skrivas som skriver ut text som välkomnar användaren och därefter får en lista över vilka saker man kan göra.
Detta val bör ju läggas i en loop så inte programmet stänger ner efter att man valt något. Man ska inte kunna stoppa in fler än 25 drycker i backen, eventuellt kan man få välja att ersätta en flaska i en full back med en annan.
Här används då med fördel variabeln amount_bottles (se figuren) som kan hålla reda på antal flaskor.
Är backen full ska man få meddelande om detta och då får man välja en position och den gamla läsken försvinner.
För uträkning av det totala värdet så utgår vi ifrån att varje flaska kostar 5 kronor.

Betyg C
För betyget C ska klassen Sodacrate byggas ut med ytterligare metoder:
1. En metod som anropas för att söka efter en flaska baserat på namn. Detta beskrivs i läroboken och kapitel 13 (kodexempel för sökning på sidan 149). I denna metod kan man också ha en inparameter som då är den sträng som du ska söka efter.
2. En metod som ska anropas för att sortera vektorn med läskflaskor utifrån namnet. Eftersom alla flaskor har samma pris (för betyget C) får vi istället sortera efter hur många tecken det finns i namnet – dvs hur långt namnet är.
Själva sorteringen beskrivs i läroboken och kapitel 13 (kodexempel för sortering på sidan 159).

Gör man uppgiften enligt A kan man sortera efter pris också vilket är roligare kanske.
Tänk följande kod (från Microsfts sida): string str = "abcdefg"; Console.WriteLine("1) The length of '{0}' is {1}", str, str.Length); Här kommer 7 (sju) att skrivas ut i konsollen då strängen ”str” har sju tecken i sig.
På detta sätt kan man sedan jämföra två strängars längd med varandra och vilken sträng som är flest tecken för bubbelsorteringen. Notera då att huvudmenyn behövs byggas ut med dessa funktioner (sortering och sökning). Struct? I hjälpkoden finns ett förslag att man kan skapa en struktur. Det är en ”klass light” där man kan ”bunta ihop” flera värden under ett namn. Då kan man sortera efter pris exempelvis och uppgiften blir roligare att jobba med. Mer information i hjälpfilen.

Av anon217901
Skrivet av AfterShock:

För det mesta ja, det borde fungera i alla fall.

En mindre kommentarsändring du skulle kunna göra är raden

numbers[r] = randmNr.Next(1, 26); // Slumpar tal mellan 1-25 och läger i vektorn

ändrade kommentaren till att peka på mellan 1-25 då talen kan vi från och med 1 till och med under 26 (alltså 25)

Annars så ser jag inget som direkt pekar på att det är felaktivt. Dock har jag inte kört koden så jag vet inte. Dessutom har jag inte programmerat i just C# på flera år så jag kan inte exakt syntax utan har utgått från att du har de delarna korrekt. Logiken borde fungera dock.

du har så rätt. tack

Av anon217901

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace bingo
{
class Program
{
static void Main(string[] args)
{

//skapar vektorn bingorad
int right = 0;
int[] bingoRad = new int[10];
string[] positions = { "första", "andra", "tredje", "fjärde", "femte", "sjätte", "sjunde", "åttonde", "nionde", "tionde" };

//välkomst text
Console.WriteLine();
Console.WriteLine("Välkommen till Console-Bingo!!");
Console.WriteLine();
Console.WriteLine("Skriv in dina 10 bingonummer mellan 1 och 25.");

//for loppen
for (int i = 0; i < bingoRad.Length; i++)
{
try
{
Console.WriteLine("Skriv in ditt {0} nummer:", positions[i]); //inmatningen utav bingonummren som hamnar i vektorn
int bingonr = int.Parse(Console.ReadLine());
bingoRad[i] = bingonr;
}

catch
{

Console.WriteLine("Använd siffror!"); //om talen skrivs in med annat än heltal så catchar vi det och backar tillbaka till samma fråga.
i--;

continue;
}
}

//vektorn med de sju slumpade bingonummren
int[] numbers = new int[7];
Random randmNr = new Random();
for (int r = 0; r < numbers.Length; r++)
{

numbers[r] = randmNr.Next(1, 26); // Slumpar tal mellan 1-26 och läger i vektorn
}

// går igenom de valda bingonummren och jämför med de slumpade

for (int i = 0; i < bingoRad.Length; i++)
{
if (numbers.Contains(bingoRad[i]))
{
right++;
}
}

{
// skriver ut resultat
Console.WriteLine();
Console.WriteLine("### Du fick: {0} of 10 ###", right);
Console.Write("Dina nummer:");

// räknar upp dina nummer ur bingo-vektorn
foreach (int number in bingoRad)

{
Console.Write(" {0}", number);
}

Console.WriteLine();

Console.Write("Vinnar nummer:");

//räknar upp de slumpade nummren ifrån slump-vektorn
foreach (int number in numbers)
{
Console.Write(" {0}", number);
}

Console.WriteLine();

Console.WriteLine("Tryck valfri tangent för att avsluta");
Console.ReadLine();
}

}
}
}

ser detta okej ut? samt kommentarerna är korrekta?

Av anon217901
Skrivet av AfterShock:

Ok
I sådana fall borde ändå det första stycket jag skrev fungera. Om du vill göra det lite snyggare skulle du kunna flytta ner det som inte 'prövas' nedanför catch delen. Om du gör detta måste du dock ha continue i catch eftersom du vill starta på nästa iteration om den går in därvid.

Vad jag menar då är något i stil med

for (int i = 0; i < bingoRad.Length; i++) { Console.WriteLine("Skriv in ditt {0} nummer:", positions[i]); try { int bingonr = int.Parse(Console.ReadLine()); } catch { Console.WriteLine("Använd siffror!"); i--; continue; } if (bingonr < 1 || bingonr > 25) { Console.WriteLine("Talet måste ligga mellan 1 och 25"); i--; } else { bingoRad[i] = bingonr; } }

Edit: Ändrade en lite sak i koden för att göra det tydligare. Du vill nämligen ha så lite som möjligt i en try del. Helst enbart det som faktiskt kan ge exceptions.

jo, men då gäller ej variablerna mer än i just den "delen" haha får ej allt att gå ihop då, fattar du hur jag menar? skippade helt undantaget med 1-25 utan drog bara i-- .

hur ser koden ut i övrigt tycker du? har lite strul med att kommentera vektorn "nertill" ja, de jag inte kommenterat, haha vet inte ritkigt hur jag ska formulera mig

Av anon217901
Skrivet av AfterShock:

for (int i = 0; i < bingoRad.Length; i++) { try { Console.WriteLine("Skriv in ditt {0} nummer:", positions[i]); int bingonr = int.Parse(Console.ReadLine()); if (bingonr <= 0 || bingonr > 25) { Console.WriteLine("Talet måste vara större än 0 och mindre eller lika med 25"); i--; continue; } bingoRad[i] = bingonr; } catch { Console.WriteLine("Använd siffror!"); i--; } }

På ett ungefär så här hade jag lagt in en koll på om talet är inom rätt område. Du kan självklart byta ut 0 och 25 mot fördefinerade variabler för att öka modulariteten. Här använder jag också i-- för att loopen ska fråga om samma tal igen och här måste vi använda continue så den inte kör raden under 'bingoRad[i] = bingonr;' utan istället hoppar till nästa iteration. Detta borde fungera (inte testat) men jag hade personligen bytt ut det mot en while loop eftersom du har som krav att gå igenom varje tal på ett korrekt sätt innan du går vidare och på så sätt skulle du kunna föra samman ett par rader. Det hade inte krävts så mycket ändringar utan borde räcka med något i stil med

int bingoRadsNr = 0; while (bingoRadsNr < bingoRad.Length) { try { Console.WriteLine("Skriv in ditt {0} nummer:", positions[i]); int bingonr = int.Parse(Console.ReadLine()); if (bingonr <= 0 || bingonr > 25) { Console.WriteLine("Talet måste vara större än 0 och mindre eller lika med 25"); continue; } bingoRad[bingoRadsNr] = bingonr; bingoRadsNr++; } catch { Console.WriteLine("Använd siffror!"); } }

Poängen här är att istället för att backa tillbaka varje gång det blir fel gör vi istället så att vi går endast framåt de gånger det blivit rätt. Variabeln bingoRadsNr ersätter alltså i och incrementas endast när vi vet att siffran har förts in i vår array som tänkt.

Edit: Återigen, se det som pseudokod då jag inte testat den. Och som sidnot: Jag hade sedan flyttat ut det mesta ur try-catch delen då det inte är bra att ha kod i den som inte behöver 'prövas' men för att visa syftet med koden behåller jag det inom try delen.

while loop ska inte användas.. bara for och foreach
vet heller inte om man ska behöver rädda upp om man skriver utanför 1-25 då man frågar efter det, kanske räcker med input fel. MEn ja saom sagt vill ställa samma fråga igen då om det sker.

Av anon217901
Skrivet av AfterShock:

@yepsson Av vad jag kan se gör inte ditt continue statement något här. Vad continue gör är nämligen att hoppa över resten av koden i en for loop för att sedan fortsätta på nästa iteration. I detta fallet är det också sista raden i for loopen vilket gör att den inte gör något speciellt. Skulle du lägga något efter catch delen inom for loopen som ska hoppas över skulle du däremot behöva använda continue.

Edit: För att svara på frågan också (som jag förstod nu tror jag) så är du ute efter att minska i innan du är klar. Om du inte ska ha något mer i for loopen skulle jag byta ut 'continue;' mot 'i--;'. På detta sätt skulle den fråga om samma tal igen på nästa iteration. Om du sedan vill ha mer kod efter catch delen som inte ska köras om det blir catchat så bör du lägga in continue igen efter i--.

ok, så bort med continue, och ja du har rätt jag vill den ska fråga om samma fråga igen inte gå vidare till nästa.. skulle även vilja ha något som catchar om man skriver in ett tal under 0 eller över 25 då det enbart är dessa som slumpas.. Förslag på hur detta kan läggas upp?

Hur tycker du koden ser ut i övrigt?

Av anon217901

jag håller också på med bingouppgiften, detta är vad jag åstdakommit.. har lite strul. ska kommentera det bättre samt min catch går direkt till nästa tal att skriva in, vet inte om continue är rätt väg att gå. kanske ska ha en length-- somtriggas då? iaf här är koden:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace bingo { class Program { static void Main(string[] args) { //skapar vektorn bingorad int right = 0; int[] bingoRad = new int[10]; string[] positions = { "första", "andra", "tredje", "fjärde", "femte", "sjätte", "sjunde", "åttonde", "nionde", "tionde" }; //välkomst text Console.WriteLine(); Console.WriteLine("Välkommen till Console-Bingo!!"); Console.WriteLine(); Console.WriteLine("Skriv in dina 10 bingonummer mellan 1 och 25."); //for loppen for (int i = 0; i < bingoRad.Length; i++) { try { Console.WriteLine("Skriv in ditt {0} nummer:", positions[i]); int bingonr = int.Parse(Console.ReadLine()); bingoRad[i] = bingonr; } catch { Console.WriteLine("Använd siffror!"); //får ej till att fråga om samma bricknummer utan går vidare i loopen. inte heller om siffrar är under 0 eller över 25 vet inte om continue är rätt väg att gå här.. continue; } } //vektorn med de sju slumpade bingonummren int[] numbers = new int[7]; Random randmNr = new Random(); for (int r = 0; r < numbers.Length; r++) { // Slumpar numbers[r] = randmNr.Next(1, 26); } // går igenom de valda bingonummren och jämför med de slumpade for (int i = 0; i < bingoRad.Length; i++) { if (numbers.Contains(bingoRad[i])) { right++; } } { Console.WriteLine(); Console.WriteLine("### Du fick: {0} of 10 ###", right); Console.Write("Dina nummer:"); foreach (int number in bingoRad) { Console.Write(" {0}", number); } Console.WriteLine(); Console.Write("Vinnar nummer:"); foreach (int number in numbers) { Console.Write(" {0}", number); } Console.WriteLine(); Console.WriteLine("Tryck valfri tangent för att avsluta"); Console.ReadLine(); } } } }

Av anon217901
Skrivet av Massy:

Alltså, miljlön. Nyårsraketer måste vara en sån extremt liten del av all miiljöpåverkan i världen att det bara blir tramsigt att ha som argument. Det lär vara värre att åka bil till nyårsfesten än att smälla av några raketer vid 12-slaget.

Läsvärt: http://www.unt.se/insandare/ett-fyrverkeri-ar-inte-sarskilt-f...

Ej jämfört med annat och det kan mkt väl vara så att annat är värre. Men, så kan man jämföra mycket.
Din länk funkar ej.
Gott nytt