Inlägg

Inlägg som Field_trip har skrivit i forumet
Av Field_trip
Skrivet av Simon^L:

den loopar oändligt eftersom conditionen för loopen aldrig bryts. minBool måste bli false när du uppnått ditt mål och vill gå ur loopen.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace Bokhyllan { class Bok { public string Titel; //Sparar bokens titel public string Skribent; //sparar bokens författare public string Typ; //sparar bokentypen public int Utgivningsår; //sparar utgivningsåret public Bok(string Titel, string Skribent, string Typ, int Utgivningsår) { this.Titel = Titel; //mottagen titel tilldelas objektet Titel this.Skribent = Skribent; //mottagen skribent tilldelas objektet Skribent this.Typ = Typ; //mottagen typ tilldelas objektet typ this.Utgivningsår = Utgivningsår; //mottaget utgivningsår tilldelas objektet utgivningsår } // Bokens underklasser, roman, tidskrit och novellsamling public class Roman : Bok { public Roman(string Titel, string Skribent, string Typ, int Utgivningsår) : base(Titel, Skribent, Typ, Utgivningsår) { Typ = "Roman"; } public override string ToString() { return base.ToString(); // returnerar override metoden och namnen på alla dess värden } } public class Tidskrift : Bok { public Tidskrift(string Titel, string Skribent, string Typ, int Utgivningsår) : base(Titel, Skribent, Typ, Utgivningsår) { Typ = "Tidskrift"; } public override string ToString() { return base.ToString(); // returnerar override metoden och namnen på alla dess värden } } public class Novellsamling : Bok { public Novellsamling(string Titel, string Skribent, string Typ, int Utgivningsår) : base(Titel, Skribent, Typ, Utgivningsår) { Typ = "Novellsamling"; } public override string ToString() { return base.ToString(); // returnerar override metoden och namnen på alla dess värden } } static void Main(string[] args) { bool isRunning = true; // boolen isRunning är sann tills användaren avslutar programmet List<Bok> bokLista = new List<Bok>(); // skapar listan med alla böcker string[] namn = new string[2]; Console.Write("\n\tVar god skriv in ditt förnamn: "); namn[0] = Console.ReadLine(); Console.Write("\tVar god skriv in ditt efternamn: "); namn[1] = Console.ReadLine(); // ReadLine väntar på användarens inmatning och används - // för att programmet ska stanna upp. Console.Clear(); // Rensar konsolfönstret Console.WriteLine("\n\t---------------------------"); Console.WriteLine("\tVälkommen till biblioteket!"); Console.WriteLine("\t---------------------------"); DateTime time = DateTime.Now; // metod för dagens datum och tid. Console.WriteLine("\tDatum: " + time.ToShortDateString()); // skriver ut endast dagens datum. Console.WriteLine("\tTid: " + time.ToShortTimeString()); // skriver ut endast dagens tid. DateTime currentDatetime = DateTime.Now; // Hämtar dagens tid och datum int currentHour = currentDatetime.Hour; // initierar timmar int startMorningHour = 6; // initierar morgon int startAfternoonHour = 12; // initierar eftermiddag int startEveningHour = 17; // initierar kväll int startNightHour = 22; // initierar natt // om morgontimmen är mindre eller lika med timman i stunden och timman är mindre än eftermiddagstimman // så skrivs det ut God morgon [användarens namn] och så vidare. if (startMorningHour <= currentHour && currentHour < startAfternoonHour) { Console.WriteLine("\n\tGod morgon," + " " + namn[0] + " " + namn[1] + "!"); } if (startAfternoonHour <= currentHour && currentHour < startEveningHour) { Console.WriteLine("\n\tGod eftermiddag," + " " + namn[0] + " " + namn[1] + "!"); } if (startEveningHour <= currentHour && currentHour < startNightHour) { Console.WriteLine("\n\tGod kväll," + " " + namn[0] + " " + namn[1] + "!"); } if (startNightHour <= currentHour && currentHour < startMorningHour) { Console.WriteLine("\n\tGod natt," + " " + namn[0] + " " + namn[1] + "!"); } Console.Write("\tVar vänlig ange en siffra mellan 1-4\n\t"); //informerar användaren om menyval while (isRunning) { // Skriver ut menyn Console.WriteLine("\n\t[1] Registrera en ny bok"); Console.WriteLine("\t[2] Visa böcker"); Console.WriteLine("\t[3] Rensa sparade böcker"); Console.Write("\t[4] Avsluta\n\t"); if (int.TryParse(Console.ReadLine(), out int menyVal)) // Hindrar att programmet kraschar vid felaktig inmatning { switch (menyVal) { case 1: // skapa en ny bok { SkapaNyBok(); break; } case 2: Console.WriteLine("\n\tDina sparade böcker visas nedan"); foreach (Bok item in bokLista) { Console.Clear(); Console.WriteLine("\n\tTitel: " + item.Titel + "\n\tFörfattare: " + item.Skribent + "\n\tUtgivningsår: " + item.Utgivningsår); } if (bokLista.Count == 0) { Console.Clear(); Console.WriteLine("\n\tDet finns inga sparade böcker."); } break; case 3: if (bokLista.Count == 0) { Console.Clear(); Console.WriteLine("\n\tDet finns inga sparade böcker."); } else { bokLista.Clear(); Console.WriteLine("\n\tDin boklista är nu rensad!"); break; } break; case 4: isRunning = false; break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\n\tOgiltigt menyval, välj mellan 1-4!"); Console.ResetColor(); break; } } } } public static void SkapaNyBok() { Console.Clear(); //Rensar konsolfönstret. Console.Write("\n\tTitel: "); string Titel = Console.ReadLine(); Console.Write("\tFörfattare: "); string Skribent = Console.ReadLine(); Console.Write("\tUtgivningsår: "); int Utgivningsår = 0; bool lyckad = int.TryParse(Console.ReadLine(), out Utgivningsår); if (!lyckad) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\n\tFel inmatning, testa igen."); Console.ResetColor(); Console.Clear(); Console.Write("\t"); } else { } bool minBool = true; while (minBool) { // skriver ut menyn för typ av bok Console.WriteLine("\n\tÄr boken en [1] Roman, [2] Tidskrift eller [3] Novellsamling?"); if (int.TryParse(Console.ReadLine(), out int Bokval)) { switch (Bokval) { case 1: { Bok a = new Roman(Titel, Skribent, " ", Utgivningsår)); Console.Write("\t"); break; } case 2: { Bok a = new Roman(Titel, Skribent, " ", Utgivningsår)); Console.Write("\t"); break; } case 3: { Bok a = new Roman(Titel, Skribent, " ", Utgivningsår)); Console.Write("\t"); break; } default: { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\n\tOgiltigt val!"); Console.ResetColor(); break; } minBool = false; } } else { Console.WriteLine("\n\tVälj mellan 1-3"); } } } } }

Tack
Men nu sparas inga böcker och SkapaNyBok() metoden hittar inte min lista. Hur ska jag göra?

Av Field_trip

Programmering 2

Min mentor skrev att koden "liknar" andras, så jag försökte lägga till min twist på koden och göra en switch sats inuti en switch. Men jag vet inte hur jag ska göra längre.

Kan någon vara vänlig och knuffa mig i rätt riktning? Jag blir galen, jag vill skapa en ny bok varrje gång jag trycker [1] sen går allt fint tills jag kommer till "Är boken en roman tidskrift eller novvelllsamling. Den upprepas hela tiden, och det fixas om jag sätter minbool till falskt (eller behövs den ens?), men jag vet inte var jag ska skriva in den? Sedan läggs mina böcker inte till i listan, de bara skrivs över när jag skapar en ny bok.

while (isRunning) { // Skriver ut menyn Console.WriteLine("\n\t[1] Registrera en ny bok"); Console.WriteLine("\t[2] Visa böcker"); Console.WriteLine("\t[3] Rensa sparade böcker"); Console.Write("\t[4] Avsluta\n\t"); if (int.TryParse(Console.ReadLine(), out int menyVal)) // Hindrar att programmet kraschar vid felaktig inmatning { switch (menyVal) { case 1: // skapa en ny bok { Console.Clear(); //Rensar konsolfönstret. Console.Write("\n\tTitel: "); string Titel = Console.ReadLine(); Console.Write("\tFörfattare: "); string Skribent = Console.ReadLine(); Console.Write("\tUtgivningsår: "); int.TryParse(Console.ReadLine(), out int nr); bool minBool = true; while (minBool) { // skriver ut menyn för typ av bok Console.WriteLine("\n\tÄr boken en [1] Roman, [2] Tidskrift eller [3] Novellsamling?"); if (int.TryParse(Console.ReadLine(), out int Bokval)) { switch (Bokval) { case 1: { bokLista.Add(new Roman(Titel, Skribent, " ", nr)); Console.Write("\t"); break; } case 2: { bokLista.Add(new Roman(Titel, Skribent, " ", nr)); Console.Write("\t"); break; } case 3: { bokLista.Add(new Roman(Titel, Skribent, " ", nr)); Console.Write("\t"); break; } default: { Console.WriteLine("\n\tOgiltigt val!"); break; } } } else { Console.WriteLine("\n\tVälj mellan 1-3"); } } } break;

Använder VS i windows. Uppskattar hjälpen.

Av Field_trip

Sen tror jag du bör fundera på var du skall anropa denna funktionen. Skall den ändra titeln på den nya boken som precis skapats? I så fall bör du nog anropa denna funktionen på den sträng som användaren matat in innuti "NyBok()" funktionen.
[/quote]

Exakt.

Av Field_trip

Det funkar inte. Antog att man skulle skriva in null i case 1: firstlettertoupper(null); men bokstäverna var fortfarande gemener.

Av Field_trip

Programmering 2 c#

Tja

Om jag vill använda en metod som gör att första bokstaven blir en versal fortsatt av gemener, te.x, Hej istället för hej

Hur gör jag då? Jag vill lägga in en char metod

Jag vill göra en liknande kod public string FirstLetterToUpper(string str) { if (str == null) return null; if (str.Length > 1) return char.ToUpper(str[0]) + str.Substring(1); return str.ToUpper(); }

Var tror ni är den bästa och enklaste metoden?

Min fungerar inte. Jag vill alltså att allt man skriver in ska börja på stor bokstav trots att användaren inte trycker ner shift

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace Bokhyllan { public class Bibliotek { static void Main() { Bokhylla bibbla = new Bokhylla(); bibbla.meny(); } } public class Bok { public static int BokNr; public string Titel; //Sparar bokens titel public string Skribent; //sparar bokens författare public string Typ; //sparar bokentypen public int Utgivningsår; //sparar utgivningsåret public Bok(string indataTitel, string indataSkribent, string indataTyp, int indataUtgivningsår) { this.Titel = indataTitel; //mottagen titel tilldelas objektet indatatitel this.Skribent = indataSkribent; //mottagen skribent tilldelas objektet indataskribent this.Typ = indataTyp; //mottagen typ tilldelas objektet indatatyp this.Utgivningsår = indataUtgivningsår; //mottaget utgivningsår tilldelas objektet indatautgivningsår BokNr = BokNr + 1; // Lägger till en ny bok } public string GetTitel() { return Titel; } public string GetSkribent() { return Skribent; } public string GetTyp() { return Typ; } public int GetUtgivningsår() { return Utgivningsår; } public override string ToString() { return Titel + Skribent + Typ + Utgivningsår; } } // Bokens underklasser, roman, tidskrit och novellsamling public class Roman : Bok { public Roman(string indataTitel, string indataSkribent, string indataTyp, int indataUtgivningsår) : base(indataTitel, indataSkribent, indataTyp, indataUtgivningsår) { indataTyp = ""; //initierar en tom variabel } public override string ToString() { return base.ToString(); // returnerar override metoden och namnen på alla dess värden } } public class Tidskrift : Bok { public Tidskrift(string indataTitel, string indataSkribent, string indataTyp, int indataUtgivningsår) : base(indataTitel, indataSkribent, indataTyp, indataUtgivningsår) { indataTyp = ""; // intierar en tom variabel } public override string ToString() { return base.ToString(); // returnerar override metoden och namnen på alla dess värden } } public class Novellsamling : Bok { public Novellsamling(string indataTitel, string indataSkribent, string indataTyp, int indataUtgivningår) : base(indataTitel, indataSkribent, indataTyp, indataUtgivningår) { indataTyp = ""; // intitierar en tom variabel. } public override string ToString() { return base.ToString(); // returnerar override metoden och namnen på alla dess värden } } public class Bokhylla { private List<Bok> BokLista; // En lista som innehåller alla våra böcker. public Bokhylla() { BokLista = new List<Bok>(); } public void meny() { string[] namn = new string[2]; Console.Write("\n\tVar god skriv in ditt förnamn: "); namn[0] = Console.ReadLine(); Console.Write("\tVar god skriv in ditt efternamn: "); namn[1] = Console.ReadLine(); // ReadLine väntar på användarens inmatning och används - // för att programmet ska stanna upp. Console.Clear(); // Rensar konsolfönstret Console.WriteLine("\n\t---------------------------"); Console.WriteLine("\tVälkommen till biblioteket!"); Console.WriteLine("\t---------------------------"); DateTime time = DateTime.Now; // metod för dagens datum och tid. Console.WriteLine("\tDatum: " + time.ToShortDateString()); // skriver ut endast dagens datum. Console.WriteLine("\tTid: " + time.ToShortTimeString()); // skriver ut endast dagens tid. DateTime currentDatetime = DateTime.Now; // Hämtar dagens tid och datum int currentHour = currentDatetime.Hour; // initierar timmar int startMorningHour = 6; // initierar morgon int startAfternoonHour = 12; // initierar eftermiddag int startEveningHour = 17; // initierar kväll int startNightHour = 22; // initierar natt // om morgontimmen är mindre eller lika med timman i stunden och timman är mindre än eftermiddagstimman // så skrivs det ut God morgon [användarens namn] och så vidare. if (startMorningHour <= currentHour && currentHour < startAfternoonHour) { Console.WriteLine("\n\tGod morgon" + " " + namn[0] + " " + namn[1] + "!"); } if (startAfternoonHour <= currentHour && currentHour < startEveningHour) { Console.WriteLine("\n\tGod eftermiddag" + " " + namn[0] + " " + namn[1] + "!"); } if (startEveningHour <= currentHour && currentHour < startNightHour) { Console.WriteLine("\n\tGod kväll" + " " + namn[0] + " " + namn[1] + "!"); } if (startNightHour <= currentHour && currentHour < startMorningHour) { Console.WriteLine("\n\tGod natt" + " " + namn[0] + " " + namn[1] + "!"); } Console.Write("\n\tVar vänlig ange en siffra mellan 1-3\n\t"); //informerar användaren om menyval bool bokHylla = true; // Variabeln bokHylla styr vår huvudloop. while (bokHylla) { // Skriver ut menyn Console.WriteLine("\n\t[1] Registrera en ny bok"); Console.WriteLine("\t[2] Visa böcker"); Console.WriteLine("\t[3] Rensa sparade böcker"); Console.Write("\t[4] Avsluta\n\t"); int menyVal; // Deklarerar variabeln för vår switch sats. Int32.TryParse(Console.ReadLine(), out menyVal); // Hindrar att programmet kraschar vid felaktig inmatning { switch (menyVal) { case 1: NyBok(); FirstLetterToUpper(); <--- röd linje, CS7036 break; case 2: VisaBöcker(); // anropar metoden visa böcker if (BokLista.Count == 0) // om boklistan är lika med 0 { Console.WriteLine("\n\tDet finns inga böcker sparade, lägg in några böcker!"); } break; case 3: RaderaBöcker(); if (BokLista.Count == 0) // om boklistan är lika med 0 { Console.WriteLine("\n\tFinns inga böcker att radera!"); } break; case 4: // ingen nollställning av färg behövs eftersom programmet avslutas bokHylla = false; // Variabeln är falsk och programmet avslutas. Console.ForegroundColor = ConsoleColor.Yellow; // sätter textfärgen till gul Console.Write("\n\tHa en strålande dag, vi ses snart igen!\n\t"); Console.ReadKey(); // väntar på att användaren ska trycka ner en tangent på taangentbordet break; default: //om inmatning av menyval är felaktig så informeras användaren. Console.ForegroundColor = ConsoleColor.Red; // Ändrar textfärg till röd. Console.WriteLine("\n\tOgiltigt val, välj mellan 1-4!"); Console.ResetColor(); // nollställer textfärg. break; // Stänger av programmet. } } } } private void NyBok() { Console.Clear(); //Rensar konsolfönstret. Console.Write("\n\tSkriv in titel: "); string Titel = Console.ReadLine(); Console.Write("\tSkriv in författare: "); string Skribent = Console.ReadLine(); Console.Write("\tSkriv in Utgivningsår: "); string UtgivÅr = Console.ReadLine(); int Utgivningsår; do { bool TestUtgiv = int.TryParse(UtgivÅr, out Utgivningsår); // Kontrollerar om TestUtgiv är sann. if (!TestUtgiv) { Console.ForegroundColor = ConsoleColor.Red; // Ändrar textfärg till röd. Console.Write("\n\tFel inmatning, endast siffror!\n\t"); Console.ResetColor(); // Nollställer färgen. UtgivÅr = Console.ReadLine(); } else { Utgivningsår = int.Parse(UtgivÅr); Console.Clear(); //Rensar konsolfönstret. break; } } while (true); { Console.Write("\n\tÄr boken en [1] Roman, [2] Tidskrift eller [3] Novellsamling?\t"); string Typ = Console.ReadLine(); int Val; if (int.TryParse(Typ, out Val)) { switch (Val) { case 1: { Bok a = new Roman(Titel, Skribent, "Roman", Utgivningsår); BokLista.Add(a); break; } case 2: { Bok a = new Tidskrift(Titel, Skribent, "Tidskrift", Utgivningsår); BokLista.Add(a); break; } case 3: { Bok a = new Novellsamling(Titel, Skribent, "Novellsamling", Utgivningsår); BokLista.Add(a); break; } default: { Console.ForegroundColor = ConsoleColor.Red; // Ändrar textfärg till röd. Console.WriteLine("\tFelaktig inmatning!"); Console.ResetColor(); // Nollställer textfärg. Thread.Sleep(1000); // återvänder till menyn efter 1 sekund break; } } } } } private void VisaBöcker() { Console.Clear(); foreach (var boken in BokLista) { Console.WriteLine("\n\tTitel: {0} \n\tFörfattare: {1} \n\tTyp av bok: {2} \n\tUtgivningsår: {3}\n\t", boken.Titel, boken.Skribent, boken.Typ, boken.Utgivningsår); } } private void RaderaBöcker() { BokLista.Clear(); } public string FirstLetterToUpper(string str) <- här testar jag implementera den to.upper metoden { if (str == null) return null; if (str.Length > 1) return char.ToUpper(str[0]) + str.Substring(1); return str.ToUpper(); } } }

Av Field_trip
Skrivet av Kommenterande 2:

Om strängen text skulle innehålla flera kommatecken hoppas jag att du tänker på att du får sista kommatecknets position om du använder den ursprungliga koden. Använder du istället IndexOf får du istället första kommatecknets position.

tack. Det är jag medveten om men om jag har fler kommatecken så vill jag att konsolfönstret visar "Found "," in [text] at position [x] and [y] hur kan jag göra här?

Jag tänkte IndexOfAny men nej det blir visst fel. Den kanske funkar men kanske så används den inte korrekt.

Av Field_trip

Mycket snyggare indeed, uppskattar det,

https://imgur.com/ekBnVAS

Av Field_trip

Tack Forsgren

Av Field_trip

Hur får jag det första 'e' att visas, försökte skriva in charAt men nope, hur gör jag?

Länk:
https://imgur.com/qQDNKhd

Av Field_trip

Glömde att index alltid börjar på 0 -.-

tack haha

Av Field_trip

Programmering c#

Hur gör den här koden egentligen? Varför skriver den ut 32?

Skärmbild:
https://imgur.com/6EsUEVs

Om jag skriver -2 på index istället för -1 så blir värdet återigen 32, why?

Kör VS i windows.

Av Field_trip

Jag fann problemet uppskattar alla svar.

Glömde inkludera bilden i mitt projekt.

Av Field_trip

Finns inget som heter "paus" när du försöker bli antagen till högskola. Men tack för omtanken.

Jag högerklickar på blomma.png men får inget properties alternativ.

Av Field_trip
Skrivet av Tea42BBS:

nä, stryk min förra kommentar...du skapar ju kontrollerna i koden... var är det som inte funkar?

Kör du på windows i visual studio?

// LZ

Ja, jag kör på windows i VS.

Se imgur länken som jag laddade upp, jag har bilden men det kraschar där trots det.

Av Field_trip
Skrivet av kwame:

Om du visar en bild på hur det ska se ut kan du väl åtminstone ge oss en bild på hur det ser ut när du kör programmet? Vad innebär att "ingenting" fungerar?

Ursäkta.

Här är koden:
https://imgur.com/6xdQOIs

Av Field_trip

Programmering 2

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace Programmering_2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // Skapar ett fält med PictureBox-kontroller PictureBox[] bilder = new PictureBox[5]; // Position och dimension för första bildrutan int x = 0, y = 0, bredd = 50, höjd = 50; // Ställ in kontrollerna och lägg till i fönstret for (int i = 0; i < bilder.Length; i++) { bilder[i] = new PictureBox(); bilder[i].Left = x; bilder[i].Top = y; bilder[i].Width = bredd; bilder[i].Height = höjd; bilder[i].BackgroundImage = Image.FromFile("Bloomma.png"); bilder[i].Click += pbxBlomma_Click; this.Controls.Add(bilder[i]); x += bredd; } } private void pbxBlomma_Click(object sender, EventArgs e) { PictureBox klickadblomma = (PictureBox)sender; klickadblomma.BorderStyle = BorderStyle.FixedSingle; } } }

Asså blir jävligt frustrerad, ingenting funkar. Jag följde exemplet i boken exakt. Har ni någon aning?

Så här ska det se ut:
https://imgur.com/HBPyyVT

Av Field_trip

Den skriver ut False nu, vilket är det jag sökte. Tack för svaren.

Jag startade om VS bara.

Av Field_trip
Skrivet av sworst:

Jag menar hela koden där du har Console.ReadLine() med. Det borde inte kunna hända att fönstret med programmkörningen stängs om du har detta med.
Visa gärna hur hela Program.cs ser ut när du har detta med.

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using System.Data; using System.Text; namespace Programmering_2 { class Program { static void Main(string[] args) { int vänster = 10, topp = 10, bredd = 10, höjd = 5; int x = 20, y = 20; bool träff = (vänster <= x && x <= vänster + bredd) && (topp <= y && y <= topp + höjd); Console.WriteLine(träff); Console.Read(); } } }

Antingen så gör jag något fel eller så har inte författaren tagit med allt i exemplet. Det fungerar inte med readline(); fönstret öppnas inte ens.

Av Field_trip
Skrivet av Cazioz:

Kommer ge dig det absolut viktigaste rådet du någonsin kommer få när det kommer till programmering: använd google så mycket det bara går, 99.999999999999999% av alla frågor du har om programmering kan du få fram med max nån minuts googlande. Din frågeställning är lite vag, men jag tolkar det som att du vill skriva ut huruvida "träff" är true/false. Googlar man t.ex "Print boolean c#" så får man fram direkt att man kan använda Boolean.ToString().

Exempel på hur Boolean.ToString() används:
string strTräff = träff.ToString();
Console.WriteLine("Träff är = " + strTräff);
Console.ReadLine();

Jag tycker att en bok med värdet 700kr bör ha med mycket viktig information än att låta studenter framstå som frågetecken.

Men ja, google är till stor hjälp, speciellt stackoverflow. Men tack, ska kolla in det du skrev.

Av Field_trip
Skrivet av sworst:

Det låter väldigt konstigt.
Du får nog visa hela koden som beter sig så.

Det är hela koden, den är från boken programmering 2, skriven av magnus lilja.