diff --git a/MindreProjekt/README.md b/MindreProjekt/README.md index bfa9bbd..81ffe45 100644 --- a/MindreProjekt/README.md +++ b/MindreProjekt/README.md @@ -1,34 +1,98 @@ -# Övningsprojekt - -Dessa övningsprojekt är tänkta att fungera som inspiration till projekt. Vi har kommit en bit in i kursen och somliga känner möjligen att uppgifter och övningar är lite för små... Om så är fallet kan kanske dessa mindre projekt fungera som inspiration till fortsatt lärande. Om ni inte finner något här passande går det givetvis att skapa vilket projekt ni helst önskar. Det absolut bästa sättet jag vet att lära sig ett programmeringsspråk är om ni har en idé för ett program som ni vill skapa. Då kommer ni finna mer inspiration till att lära er de tekniska aspekterna som programmeringsspråket kräver för att ni ska åstadkomma önskvärt resultat. - -En sak som dessa projekt saknar är möjligheten att lagra data (information) efter det att applikationerna avslutas. Eller rättare sagt, det finns inga krav på det då vi hitills inte gått igenom hur ni kan gå tillväga för att göra det. Ni har fria händer att skapa den funktionaliteten såklart, annars räcker det med att ni hanterar data bara över tiden programmet körs. - -## Zoo - -### Premiss - -Ett zoo behöver ett system för att hålla koll på sina djur och sin personal. På zoot finns många djur av många olika arter, sju för att vara exakt. Det finns apor, giraffer, lejon, pingviner, delfiner, björnar och elefanter. Djuren bor i olika inhägnader. Inhägnaderna kan ha lite olika karaktär. De kan ha träd, grottor, vattenkällor och buskage. Delfinerna håller till i en helt egen typ av inhägnad, nämligen en jätte-bassäng. På anläggningen arbetar en grupp djurskötare. För att få jobba som djurskötare krävs vissa kompetenser. Arterna kräver i sin tur minst en kompetens, delfinerna kräver exempelvis att skötaren ska kunna dyka. - - -### Exempeluppgift - -Skriva ett program för att hantera zoot. Programmet kan vara en konsol-applikation som vi tidigare övat på; det är även helt okej att skriva den som en WPF-applikation om man önskar göra det. Man ska kunna lägga till ändra och ta bort djur, inhägnader, djurskötare samt deras kompetenser. Olika djur kräver olika attribut av sina inhägnader samt olika kompetenser hos sina skötare. Applikationen ska kunna lista alla djur och visa status för de samma. Dvs huruvida djuret bor i en tillfredsställande inhägnad samt har skötare med rätt kompetenser. - -### (Exempel) Krav på projektet: - -Kod: Använda sig av minst en abstrakt klass. Minst en kommentar med summary och parameters. Använda sig av namespace, entiteter i en (typ djur, skötare, inhägnad osv), klasser som tillhandahåller logik för att kontrollera status av zoot och dylikt i ett annat namespace. Använd ett interface någonstans i applikationen (förslagsvis till någon av logik-klasserna). - -Funktionalitet: En användare skall kunna lista alla djur och deras status (alltså om de har allt de behöver) i applikationen. En användare skall kunna lägga till och ta bort djur, inhägnader och skötare samt deras kompetenser. - -## Skolsystemet - -### Premiss - -En skola behöver ett nytt system. Skolan behöver hålla kolla på vilka "klasser" (obs inte C#-klasser) som finns på skolan, vilka program de klasserna går, vilka kurser som ingår i vilka program, vilka elever som tillhör vilken klass och säkert mer därtill! Programmet kan vara en konsol-applikation som vi tidigare övat på; det är även helt okej att skriva den som en WPF-applikation om man önskar göra det. Programmet ska kunna lista klasser(obs! inte C# class) och all information om de, dvs vilka elever och lärare samt kurser som hör till en specifik klass (obs! inte C# class). - -### (Exempel) Krav på projektet: - -Kod: Använda sig av minst en abstrakt klass. Minst en kommentar med summary och parameters. Använda sig av namespace, entiteter i en (typ klass, kurs, elev osv), klasser som tillhandahåller logik för att kontrollera status av systemet och dylikt i ett annat namespace. Använd ett interface någonstans i applikationen (förslagsvis till någon av logik-klasserna). - -Funktionalitet: En användare skall kunna lista alla djur och deras status (alltså om de har allt de behöver) i applikationen. En användare skall kunna lägga till och ta bort djur, inhägnader och skötare samt deras kompetenser. +Uppgift_4 +# Övningsprojekt + +Dessa övningsprojekt är tänkta att fungera som inspiration till projekt. +Vi har kommit en bit in i kursen och somliga känner möjligen att uppgifter och övningar är lite för små... +Om så är fallet kan kanske dessa mindre projekt fungera som inspiration till fortsatt lärande. +Om ni inte finner något här passande går det givetvis att skapa vilket projekt ni helst önskar. +Det absolut bästa sättet jag vet att lära sig ett programmeringsspråk är om ni har en idé för ett program som ni vill skapa. +Då kommer ni finna mer inspiration till att lära er de tekniska aspekterna som programmeringsspråket kräver för att ni ska åstadkomma önskvärt resultat. + +En sak som dessa projekt saknar är möjligheten att lagra data (information) efter det att applikationerna avslutas. +Eller rättare sagt, det finns inga krav på det då vi hitills inte gått igenom hur ni kan gå tillväga för att göra det. +Ni har fria händer att skapa den funktionaliteten såklart, annars räcker det med att ni hanterar data bara över tiden programmet körs. + +## Zoo + +### Premiss + +Ett zoo behöver ett system för att hålla koll på sina djur och sin personal. + +På zoot finns många djur av många olika arter, sju för att vara exakt. Det finns apor, giraffer, lejon, pingviner, delfiner, björnar och elefanter. + +Djuren bor i olika inhägnader. Inhägnaderna kan ha lite olika karaktär. De kan ha träd, grottor, vattenkällor och buskage. +Delfinerna håller till i en helt egen typ av inhägnad, nämligen en jätte-bassäng. På anläggningen arbetar en grupp djurskötare. + +För att få jobba som djurskötare krävs vissa kompetenser. Arterna kräver i sin tur minst en kompetens, delfinerna kräver exempelvis att skötaren ska kunna dyka. + + +### Exempeluppgift + +Skriva ett program för att hantera zoot. +Programmet kan vara en konsol-applikation som vi tidigare övat på; det är även helt okej att skriva den som en WPF-applikation om man önskar göra det. + +Man ska kunna lägga till, ändra och ta bort; djurinhägnader, djurskötare samt deras kompetenser. + +Olika djur kräver olika attribut av sina inhägnader samt olika kompetenser hos sina skötare. + +Applikationen ska kunna lista alla djur och visa status för de samma. +Dvs huruvida djuret bor i en tillfredsställande inhägnad samt har skötare med rätt kompetenser. + +### (Exempel) Krav på projektet: + +Kod: Använda sig av minst en abstrakt klass. Minst en kommentar med summary och parameters. +Använda sig av namespace, entiteter i en (typ djur, skötare, inhägnad osv), +klasser som tillhandahåller logik för att kontrollera status av zoot och dylikt i ett annat namespace. +Använd ett interface någonstans i applikationen (förslagsvis till någon av logik-klasserna). + +Funktionalitet: +— En användare skall kunna lista alla djur och deras status (alltså om de har allt de behöver) i applikationen. +— En användare skall kunna lägga till och ta bort djur, inhägnader och skötare samt deras kompetenser. + +## Skolsystemet + +### Premiss + +En skola behöver ett nytt system. Skolan behöver hålla kolla på vilka "klasser" (obs inte C#-klasser) som finns på skolan, vilka program de klasserna går, vilka kurser som ingår i vilka program, vilka elever som tillhör vilken klass och säkert mer därtill! Programmet kan vara en konsol-applikation som vi tidigare övat på; det är även helt okej att skriva den som en WPF-applikation om man önskar göra det. Programmet ska kunna lista klasser(obs! inte C# class) och all information om de, dvs vilka elever och lärare samt kurser som hör till en specifik klass (obs! inte C# class). + +### (Exempel) Krav på projektet: + +Kod: Använda sig av minst en abstrakt klass. Minst en kommentar med summary och parameters. Använda sig av namespace, entiteter i en (typ klass, kurs, elev osv), klasser som tillhandahåller logik för att kontrollera status av systemet och dylikt i ett annat namespace. Använd ett interface någonstans i applikationen (förslagsvis till någon av logik-klasserna). + +Funktionalitet: En användare skall kunna lista alla djur och deras status (alltså om de har allt de behöver) i applikationen. En användare skall kunna lägga till och ta bort djur, inhägnader och skötare samt deras kompetenser. +======= +# Övningsprojekt + +Dessa övningsprojekt är tänkta att fungera som inspiration till projekt. Vi har kommit en bit in i kursen och somliga känner möjligen att uppgifter och övningar är lite för små... Om så är fallet kan kanske dessa mindre projekt fungera som inspiration till fortsatt lärande. Om ni inte finner något här passande går det givetvis att skapa vilket projekt ni helst önskar. Det absolut bästa sättet jag vet att lära sig ett programmeringsspråk är om ni har en idé för ett program som ni vill skapa. Då kommer ni finna mer inspiration till att lära er de tekniska aspekterna som programmeringsspråket kräver för att ni ska åstadkomma önskvärt resultat. + +En sak som dessa projekt saknar är möjligheten att lagra data (information) efter det att applikationerna avslutas. Eller rättare sagt, det finns inga krav på det då vi hitills inte gått igenom hur ni kan gå tillväga för att göra det. Ni har fria händer att skapa den funktionaliteten såklart, annars räcker det med att ni hanterar data bara över tiden programmet körs. + +## Zoo + +### Premiss + +Ett zoo behöver ett system för att hålla koll på sina djur och sin personal. På zoot finns många djur av många olika arter, sju för att vara exakt. Det finns apor, giraffer, lejon, pingviner, delfiner, björnar och elefanter. Djuren bor i olika inhägnader. Inhägnaderna kan ha lite olika karaktär. De kan ha träd, grottor, vattenkällor och buskage. Delfinerna håller till i en helt egen typ av inhägnad, nämligen en jätte-bassäng. På anläggningen arbetar en grupp djurskötare. För att få jobba som djurskötare krävs vissa kompetenser. Arterna kräver i sin tur minst en kompetens, delfinerna kräver exempelvis att skötaren ska kunna dyka. + + +### Exempeluppgift + +Skriva ett program för att hantera zoot. Programmet kan vara en konsol-applikation som vi tidigare övat på; det är även helt okej att skriva den som en WPF-applikation om man önskar göra det. Man ska kunna lägga till ändra och ta bort djur, inhägnader, djurskötare samt deras kompetenser. Olika djur kräver olika attribut av sina inhägnader samt olika kompetenser hos sina skötare. Applikationen ska kunna lista alla djur och visa status för de samma. Dvs huruvida djuret bor i en tillfredsställande inhägnad samt har skötare med rätt kompetenser. + +### (Exempel) Krav på projektet: + +Kod: Använda sig av minst en abstrakt klass. Minst en kommentar med summary och parameters. Använda sig av namespace, entiteter i en (typ djur, skötare, inhägnad osv), klasser som tillhandahåller logik för att kontrollera status av zoot och dylikt i ett annat namespace. Använd ett interface någonstans i applikationen (förslagsvis till någon av logik-klasserna). + +Funktionalitet: En användare skall kunna lista alla djur och deras status (alltså om de har allt de behöver) i applikationen. En användare skall kunna lägga till och ta bort djur, inhägnader och skötare samt deras kompetenser. + +## Skolsystemet + +### Premiss + +En skola behöver ett nytt system. Skolan behöver hålla kolla på vilka "klasser" (obs inte C#-klasser) som finns på skolan, vilka program de klasserna går, vilka kurser som ingår i vilka program, vilka elever som tillhör vilken klass och säkert mer därtill! Programmet kan vara en konsol-applikation som vi tidigare övat på; det är även helt okej att skriva den som en WPF-applikation om man önskar göra det. Programmet ska kunna lista klasser(obs! inte C# class) och all information om de, dvs vilka elever och lärare samt kurser som hör till en specifik klass (obs! inte C# class). + +### (Exempel) Krav på projektet: + +Kod: Använda sig av minst en abstrakt klass. Minst en kommentar med summary och parameters. Använda sig av namespace, entiteter i en (typ klass, kurs, elev osv), klasser som tillhandahåller logik för att kontrollera status av systemet och dylikt i ett annat namespace. Använd ett interface någonstans i applikationen (förslagsvis till någon av logik-klasserna). + +Funktionalitet: En användare skall kunna lista alla djur och deras status (alltså om de har allt de behöver) i applikationen. En användare skall kunna lägga till och ta bort djur, inhägnader och skötare samt deras kompetenser. + diff --git a/Ovning_Klasser/README.md b/Ovning_Klasser/README.md index db7cab8..f0ea41c 100644 --- a/Ovning_Klasser/README.md +++ b/Ovning_Klasser/README.md @@ -21,7 +21,7 @@ DEL 1 DEL 2 1. Gör samtliga fält i Person-klassen private. (Kommentera ut om du störs av editorn) -2. Lägg till en metod i Person-klassen som heter GetInfo(). Metoden ska behöver inte retunera någonting men den ska skriva ut all fakta du hittills samlat om personen. +2. Lägg till en metod i Person-klassen som heter GetInfo(). Metoden behöver inte retunera någonting men den ska skriva ut all fakta du hittills samlat om personen. 3. Lägg till en metod i Person-klassen som heter som heter GetAge(). Metoden ska returnera en värdet på en persons ålder (inte skriva ut direkt i konsol-applikationen). 4. Lägg till en fråga i programmet som lyder "Vill du veta personens ålder?", om användaren skriver j, använd GetAge() metoden och skriv ut värdet i konsolen. 5. Om du inte redan gjort det. Ändra den sista delen av konsol-applikation till att använda GetInfo(). @@ -71,7 +71,7 @@ DEL 2 Namn, Land (som djuret bor i, en sträng) och ålder (heltal) 2. Skapa en struct Tiger med samma egenskaper som Lejon: Namn, Land (som djuret bor i, en sträng) och ålder (heltal) -3. Be mata en egenskaperna för de bägge djuren. +3. Be användaren mata in egenskaperna för de bägge djuren. 4. Av vardera djur, skapa upp en tvilling (en kopia) genom att deklarera en ny variabel och tilldela den värdet av det ursprungliga djuret. Dvs lejon2 = lejon1, och likdant för tigern. 5. Be användaren ange ett namn för vardera tvilling. diff --git a/Ovning_Samlingar_och_Loopar/README.md b/Ovning_Samlingar_och_Loopar/README.md index 1b97153..15176fa 100644 --- a/Ovning_Samlingar_och_Loopar/README.md +++ b/Ovning_Samlingar_och_Loopar/README.md @@ -18,23 +18,39 @@ Om klar: Testa liknande funktionalitet med en Dictionary för eleverna i varje k List och nån array -1. Skapa ett program där användaren får upp ett antal frågor där den får ange uppgifter om sitt favorithusdjur, Namn, typ (hund, katt osv) födelsedatum, smeknamn, favoritmänniska. Spara värdena i en List. Fråga sedan användaren huruvida angivna uppgifter stämmer och skriv återigen ut de på skärmen. +1. Skapa ett program där användaren får upp ett antal frågor där den får ange uppgifter om sitt favorithusdjur, Namn, typ (hund, katt osv) födelsedatum, smeknamn, favoritmänniska. +Spara värdena i en List. Fråga sedan användaren huruvida angivna uppgifter stämmer och skriv återigen ut de på skärmen. -2. Deklarera en array med plats för 7 heltal. Be användare att ange sju värde som du lagrar i arrayen. Loopa över arrayen och byt alla udda tal mot talet 0. Skriv ut innehållet i arrayen på skärmen. +2. Deklarera en array med plats för 7 heltal. Be användare att ange sju värde som du lagrar i arrayen. +Loopa över arrayen och byt alla udda tal mot talet 0. Skriv ut innehållet i arrayen på skärmen. 2.b Beräkna median och medelvärde för arrayen och skriv ut de också. -3. Skapa ett program där användaren ombeds ange 6 heltal efter varandra. Lagra talen i en List. Iterera över listan för att ta ut det högsta talet. Skriv ut det högsta talet på skärmen tillbaka till användaren. +3. Skapa ett program där användaren ombeds ange 6 heltal efter varandra. Lagra talen i en List. +Iterera över listan för att ta ut det högsta talet. Skriv ut det högsta talet på skärmen tillbaka till användaren. -5. Skapa en lista innehållandes maratontider. Användaren ska kunna ange hur många tider hen vill. Användaren ombeds skriva ‘klar’ för få sluta ange tider. Tiderna anges i decimaltal. Skriv ut alla tider och avsluta med att ange en den bästa tiden (lägst), den sämsta samt medeltiden. +5. Skapa en lista innehållandes maratontider. Användaren ska kunna ange hur många tider hen vill. +Användaren ombeds skriva ‘klar’ för få sluta ange tider. Tiderna anges i decimaltal. +Skriv ut alla tider och avsluta med att ange en den bästa tiden (lägst), den sämsta samt medeltiden. -6.a Skapa en konsol applikation där användaren får ange sina husdjur. Djuren kan vara av tre olika arter: hund, katt och kanin. Samtliga djur ska ha ett namn och en ålder. Dessutom ska alla arter kunna springa (en metod som skriver ut “Whoo jag springer”), äta (en metod som skriver ut “Nu är jag mätt!”) och svara på sin ålder (metod som retunerar ett heltal). Ålder metoden skiljer sig åt mellan arterna. För en hund gäller att svaret från metoden ska vara (den faktiska åldern) * 7, för en katt (den faktiska åldern) * 5 och för en kanin (den faktiska åldern) * 15. Lagra alla djuren som användaren anger i en lista. Använd er utav arv. +6.a Skapa en konsol applikation där användaren får ange sina husdjur. Djuren kan vara av tre olika arter: hund, katt och kanin. +Samtliga djur ska ha ett namn och en ålder. Dessutom ska alla arter kunna springa +(en metod som skriver ut “Whoo jag springer”), äta (en metod som skriver ut “Nu är jag mätt!”) och svara på sin ålder (metod som retunerar ett heltal). +Ålder metoden skiljer sig åt mellan arterna. För en hund gäller att svaret från metoden ska vara (den faktiska åldern) * 7, +för en katt (den faktiska åldern) * 5 och för en kanin (den faktiska åldern) * 15. +Lagra alla djuren som användaren anger i en lista. Använd er utav arv. -6.b Efter det att användare angett alla sina husdjur skall denne ges möjlighet att interagera med sina små älsklingar. Användaren ska kunna göra det ange följande kommandon: namn - alla djuren säger sitt namn (skriver ut i consol:n), ålder - alla djuren skriver ut sin ålder (som kalkyleras olika beroende på art), springa samt äta som skall fungerar enligt ovan. +6.b Efter det att användare angett alla sina husdjur skall denne ges möjlighet att interagera med sina små älsklingar. +Användaren ska kunna göra det ange följande kommandon: +namn - alla djuren säger sitt namn (skriver ut i consol:n), +ålder - alla djuren skriver ut sin ålder (som kalkyleras olika beroende på art), +springa samt äta som skall fungerar enligt ovan. -6.c Överkurs möjligen. Gör det möjligt att kommunicera med endast ett djur åt gången. Enligt följande exempel. Findo ålder - vilket ska resultera i att endast Fido (givet att användaren har ett djur som heter så) skriver ut sin ålder på skärmen. +6.c Överkurs möjligen. Gör det möjligt att kommunicera med endast ett djur åt gången. Enligt följande exempel. +Fido ålder - vilket ska resultera i att endast Fido (givet att användaren har ett djur som heter så) skriver ut sin ålder på skärmen. -7. Låt användaren mata in en inköpslista. Denna skall lösas med en array så börja med att fråga hur många varor användare avser inhandla. Skapa en loop och iterera så en gång per vara som användaren avser skriva in. Ställ tre frågor för samtliga varor- Vad heter varan – Vilket produktnummer har varan - Vilket pris har varan. Lagra dessa variabler i ett objekt av en egenskapad typ vid namn “Vara”. Lägg sedan in objektet i listan. Iterera över alla objekt och skriv ut relevant information om samtliga varor. +7. Låt användaren mata in en inköpslista. Denna skall lösas med en array så börja med att fråga hur många varor användare avser inhandla. +Skapa en loop och iterera så en gång per vara som användaren avser skriva in. Ställ tre frågor för samtliga varor- Vad heter varan – Vilket produktnummer har varan - Vilket pris har varan. Lagra dessa variabler i ett objekt av en egenskapad typ vid namn “Vara”. Lägg sedan in objektet i listan. Iterera över alla objekt och skriv ut relevant information om samtliga varor. 7.b Testa att “override:a” ToString() - metoden för klassen “Vara” och använd den för att skriva ut relevant information. diff --git a/Ovning_Villkor_och_Loopar_Grund/README.md b/Ovning_Villkor_och_Loopar_Grund/README.md index 50b2216..c4ec32f 100644 --- a/Ovning_Villkor_och_Loopar_Grund/README.md +++ b/Ovning_Villkor_och_Loopar_Grund/README.md @@ -37,5 +37,24 @@ Se om du kan översätta funktionaliteten från while till en for-loop ### do-while -Om klar övningar ovan, prova även med en do-while-loop - +9. Skapa ett program där användaren skall mata in kontaktuppgifter. Ta emot alla värden i +variabler +a. Be användaren mata in sitt namn, gatuadress, postnummer och postort. +b. Kontrollera att alla uppgifter är ifyllda. Är dom det skall ett meddelande visas för +användaren som säger- Alla uppgifter ifyllda. Programmet avslutas sedan. +c. Om inte alla uppgifter är ifyllda skall man börja om med steg a-d. Kontrollera för +varje värde om just det värdet är ifyllt. Programmet skall inte be användaren mata in +ett värde som redan är inmatat. + + + +10. Skapa ett program där användaren skall logga in . Ta emot inmatade värden i variabler. +a. Skapa en konstant som innehåller användarnamn. Sätt värdet på den till abc123 +b. Skapa en konstant som innehåller lösenord. Sätt värdet på den till password +c. Skriv ett meddelande till användaren och be denne att ange användarnamn +d. Skriv ett meddelande till användaren och be denne att ange lösenord +e. Om användaren anger ett riktigt användarnamn och lösenord, visa ett meddelande +som säger- Du är inloggad. Avsluta programmet. +f. Om användaren anger felaktiga uppgifter , skriv ett meddelande på skärmen och +tala om vad som var felaktigt. Fråga om användaren vill försöka igen(J/N). Om svaret +är J skall inloggningen återupprepas \ No newline at end of file diff --git a/Uppgift1/.vs/Uppgift1/v16/.suo b/Uppgift1/.vs/Uppgift1/v16/.suo index 97d87e6..08f7d39 100644 Binary files a/Uppgift1/.vs/Uppgift1/v16/.suo and b/Uppgift1/.vs/Uppgift1/v16/.suo differ diff --git a/Uppgift1/Felande/Program.cs b/Uppgift1/Felande/Program.cs index ed84a3a..9f02e2d 100644 --- a/Uppgift1/Felande/Program.cs +++ b/Uppgift1/Felande/Program.cs @@ -12,39 +12,41 @@ class Program /// /// static void Main(string[] args) + { Console.WriteLine("Hej, välkommen till uppgift 1!"); Console.WriteLine("Tryck på en knapp för att fortsätta..."); Console.ReadKey(); - namn = "Linda"; + string namn = "Peter"; - Console.WriteLine; + Console.WriteLine(); Console.WriteLine($"Här ser du en sträng representerat av variablen 'namn': {namn}"); Console.WriteLine("Tryck på en knapp för att fortsätta..."); Console.ReadKey(); + + bool sant = true; Console.WriteLine(); Console.WriteLine($"Boolean eller bool är en användbar datatyp när man vill avgör om något är sant eller falskt. Här ser vi variablen sants värde: {sant}"); Console.WriteLine("Tryck på en knapp för att fortsätta..."); Console.ReadKey(); - bool sant = false; - - DateTime datum = DateaTime.Now; + DateTime datum = DateTime.Now; Console.WriteLine(); - Console.ReadKey($"Här ser du ett datum representerat av variablen 'datum': {datum}") - ConsoleWriteLine("Tryck på en knapp för att fortsätta..."); + Console.WriteLine($"Här ser du ett datum representerat av variablen 'datum': {datum}"); + Console.WriteLine("Tryck på en knapp för att fortsätta..."); Console.ReadKey(); - decimal decimaltal = 0.5; + double decimaltal = 0.5; Console.WriteLine(); Console.WriteLine($"Här ser du ett flyttal representerat av variablen 'decimaltal': {decimaltal}); Console.WriteLine("Tryck på en knapp för att fortsätta..."); - - string helttal = 30; + Console.ReadKey(); + + int helttal = 30; Console.WriteLine(); Console.WriteLine($"Här ser du ett heltal representerat av variablen 'heltal': {helttal}"); @@ -53,4 +55,5 @@ static void Main(string[] args) Console.ReadKey(); } + } } diff --git a/Uppgift1/Felande/obj/Debug/netcoreapp3.1/Felande.assets.cache b/Uppgift1/Felande/obj/Debug/netcoreapp3.1/Felande.assets.cache index 04b2e54..f30338f 100644 Binary files a/Uppgift1/Felande/obj/Debug/netcoreapp3.1/Felande.assets.cache and b/Uppgift1/Felande/obj/Debug/netcoreapp3.1/Felande.assets.cache differ diff --git a/Uppgift1/Felande/obj/Felande.csproj.nuget.dgspec.json b/Uppgift1/Felande/obj/Felande.csproj.nuget.dgspec.json index a45831c..ab1943a 100644 --- a/Uppgift1/Felande/obj/Felande.csproj.nuget.dgspec.json +++ b/Uppgift1/Felande/obj/Felande.csproj.nuget.dgspec.json @@ -1,20 +1,20 @@ { "format": 1, "restore": { - "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj": {} + "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj": {} }, "projects": { - "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj": { + "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", + "projectUniqueName": "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", "projectName": "Felande", - "projectPath": "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", - "packagesPath": "C:\\Users\\enikl\\.nuget\\packages\\", - "outputPath": "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\obj\\", + "projectPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", + "packagesPath": "C:\\Users\\peter\\.nuget\\packages\\", + "outputPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\enikl\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\peter\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -52,7 +52,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.302\\RuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.402\\RuntimeIdentifierGraph.json" } } } diff --git a/Uppgift1/Felande/obj/Felande.csproj.nuget.g.props b/Uppgift1/Felande/obj/Felande.csproj.nuget.g.props index 622d18d..e81967d 100644 --- a/Uppgift1/Felande/obj/Felande.csproj.nuget.g.props +++ b/Uppgift1/Felande/obj/Felande.csproj.nuget.g.props @@ -5,10 +5,13 @@ NuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\enikl\.nuget\packages\ + C:\Users\peter\.nuget\packages\ PackageReference - 5.6.0 + 5.7.0 + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) diff --git a/Uppgift1/Felande/obj/project.assets.json b/Uppgift1/Felande/obj/project.assets.json index af644da..ce60875 100644 --- a/Uppgift1/Felande/obj/project.assets.json +++ b/Uppgift1/Felande/obj/project.assets.json @@ -8,19 +8,19 @@ ".NETCoreApp,Version=v3.1": [] }, "packageFolders": { - "C:\\Users\\enikl\\.nuget\\packages\\": {} + "C:\\Users\\peter\\.nuget\\packages\\": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", + "projectUniqueName": "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", "projectName": "Felande", - "projectPath": "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", - "packagesPath": "C:\\Users\\enikl\\.nuget\\packages\\", - "outputPath": "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\obj\\", + "projectPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", + "packagesPath": "C:\\Users\\peter\\.nuget\\packages\\", + "outputPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\enikl\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\peter\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -58,7 +58,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.302\\RuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.402\\RuntimeIdentifierGraph.json" } } } diff --git a/Uppgift1/Felande/obj/project.nuget.cache b/Uppgift1/Felande/obj/project.nuget.cache index 6496ec0..d18e452 100644 --- a/Uppgift1/Felande/obj/project.nuget.cache +++ b/Uppgift1/Felande/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "Td53tEUm321uEUylOF45iYi0rKVgBwvVZz42EnGreoQPbUDGl90gb4Lomt0tHKRkMM5epQaXnicswo0tJbR7og==", + "dgSpecHash": "z3ECYonJOKJi2Po/qG7FrjoiwgtxjUt1uhwlHa+MDdKJYWkLmEVxfp074DLEviRpz7zIsJkepwWW5tTngYuHzw==", "success": true, - "projectFilePath": "C:\\repos\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", + "projectFilePath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Felande\\Felande.csproj", "expectedPackageFiles": [], "logs": [] } \ No newline at end of file diff --git a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.dll b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.dll index b2dd537..7e669d3 100644 Binary files a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.dll and b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.dll differ diff --git a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.exe b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.exe index a00a025..e3ca0c9 100644 Binary files a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.exe and b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.exe differ diff --git a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.pdb b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.pdb index 0769f2c..632cd3d 100644 Binary files a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.pdb and b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.pdb differ diff --git a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.runtimeconfig.dev.json b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.runtimeconfig.dev.json index 1a761bd..82dc547 100644 --- a/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.runtimeconfig.dev.json +++ b/Uppgift1/Korrekt/bin/Debug/netcoreapp3.1/Korrekt.runtimeconfig.dev.json @@ -1,8 +1,8 @@ { "runtimeOptions": { "additionalProbingPaths": [ - "C:\\Users\\enikl\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\enikl\\.nuget\\packages" + "C:\\Users\\peter\\.dotnet\\store\\|arch|\\|tfm|", + "C:\\Users\\peter\\.nuget\\packages" ] } } \ No newline at end of file diff --git a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.assets.cache b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.assets.cache index 705a705..4b8e75d 100644 Binary files a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.assets.cache and b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.assets.cache differ diff --git a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csproj.FileListAbsolute.txt b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csproj.FileListAbsolute.txt index 84bc9ed..3c181ce 100644 --- a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csproj.FileListAbsolute.txt +++ b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csproj.FileListAbsolute.txt @@ -11,3 +11,16 @@ C:\repos\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.csproj.CoreCom C:\repos\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.dll C:\repos\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.pdb C:\repos\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.genruntimeconfig.cache +C:\GitHub\C-Sharp\Uppgift1\Korrekt\bin\Debug\netcoreapp3.1\Korrekt.exe +C:\GitHub\C-Sharp\Uppgift1\Korrekt\bin\Debug\netcoreapp3.1\Korrekt.deps.json +C:\GitHub\C-Sharp\Uppgift1\Korrekt\bin\Debug\netcoreapp3.1\Korrekt.runtimeconfig.json +C:\GitHub\C-Sharp\Uppgift1\Korrekt\bin\Debug\netcoreapp3.1\Korrekt.runtimeconfig.dev.json +C:\GitHub\C-Sharp\Uppgift1\Korrekt\bin\Debug\netcoreapp3.1\Korrekt.dll +C:\GitHub\C-Sharp\Uppgift1\Korrekt\bin\Debug\netcoreapp3.1\Korrekt.pdb +C:\GitHub\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.csprojAssemblyReference.cache +C:\GitHub\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.AssemblyInfoInputs.cache +C:\GitHub\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.AssemblyInfo.cs +C:\GitHub\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.csproj.CoreCompileInputs.cache +C:\GitHub\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.dll +C:\GitHub\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.pdb +C:\GitHub\C-Sharp\Uppgift1\Korrekt\obj\Debug\netcoreapp3.1\Korrekt.genruntimeconfig.cache diff --git a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csprojAssemblyReference.cache b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csprojAssemblyReference.cache index 74fe67b..e232452 100644 Binary files a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csprojAssemblyReference.cache and b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.csprojAssemblyReference.cache differ diff --git a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.dll b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.dll index b2dd537..7e669d3 100644 Binary files a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.dll and b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.dll differ diff --git a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.exe b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.exe index a00a025..e3ca0c9 100644 Binary files a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.exe and b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.exe differ diff --git a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.pdb b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.pdb index 0769f2c..632cd3d 100644 Binary files a/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.pdb and b/Uppgift1/Korrekt/obj/Debug/netcoreapp3.1/Korrekt.pdb differ diff --git a/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.dgspec.json b/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.dgspec.json index 40f1483..58413fb 100644 --- a/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.dgspec.json +++ b/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.dgspec.json @@ -1,20 +1,20 @@ { "format": 1, "restore": { - "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj": {} + "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj": {} }, "projects": { - "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj": { + "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", + "projectUniqueName": "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", "projectName": "Korrekt", - "projectPath": "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", - "packagesPath": "C:\\Users\\enikl\\.nuget\\packages\\", - "outputPath": "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\obj\\", + "projectPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", + "packagesPath": "C:\\Users\\peter\\.nuget\\packages\\", + "outputPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\enikl\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\peter\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -52,7 +52,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.302\\RuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.402\\RuntimeIdentifierGraph.json" } } } diff --git a/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.g.props b/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.g.props index 622d18d..e81967d 100644 --- a/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.g.props +++ b/Uppgift1/Korrekt/obj/Korrekt.csproj.nuget.g.props @@ -5,10 +5,13 @@ NuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\enikl\.nuget\packages\ + C:\Users\peter\.nuget\packages\ PackageReference - 5.6.0 + 5.7.0 + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) diff --git a/Uppgift1/Korrekt/obj/project.assets.json b/Uppgift1/Korrekt/obj/project.assets.json index 5e0c0be..4ecd044 100644 --- a/Uppgift1/Korrekt/obj/project.assets.json +++ b/Uppgift1/Korrekt/obj/project.assets.json @@ -8,19 +8,19 @@ ".NETCoreApp,Version=v3.1": [] }, "packageFolders": { - "C:\\Users\\enikl\\.nuget\\packages\\": {} + "C:\\Users\\peter\\.nuget\\packages\\": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", + "projectUniqueName": "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", "projectName": "Korrekt", - "projectPath": "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", - "packagesPath": "C:\\Users\\enikl\\.nuget\\packages\\", - "outputPath": "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\obj\\", + "projectPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", + "packagesPath": "C:\\Users\\peter\\.nuget\\packages\\", + "outputPath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\enikl\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\peter\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -58,7 +58,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.302\\RuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.402\\RuntimeIdentifierGraph.json" } } } diff --git a/Uppgift1/Korrekt/obj/project.nuget.cache b/Uppgift1/Korrekt/obj/project.nuget.cache index ca21b2f..1d2f014 100644 --- a/Uppgift1/Korrekt/obj/project.nuget.cache +++ b/Uppgift1/Korrekt/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "MAGwz3c8Q8acu+EJsY8jxfJ0E7mYMSOhKy0K3/5Kb9xyleHV0TasNBJgkgogmIvqdl07j0WLK1KkWHlxAYKr7A==", + "dgSpecHash": "dnrPUF1C8lYAMdz4/9aKgHxKc4PWPSR616jjZcsTZFW+418IUNVnaSQekxRZyNleG/B+0drhBXVWUc8Ij8rhTw==", "success": true, - "projectFilePath": "C:\\repos\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", + "projectFilePath": "C:\\GitHub\\C-Sharp\\Uppgift1\\Korrekt\\Korrekt.csproj", "expectedPackageFiles": [], "logs": [] } \ No newline at end of file diff --git a/Uppgift1b/Uppgift1b/Uppgift1b/Program.cs b/Uppgift1b/Uppgift1b/Uppgift1b/Program.cs index 649ea3e..350e4f6 100644 --- a/Uppgift1b/Uppgift1b/Uppgift1b/Program.cs +++ b/Uppgift1b/Uppgift1b/Uppgift1b/Program.cs @@ -23,108 +23,86 @@ static void Main(string[] args) //1. tilldela variabel i värdet 10 - //Kod här - + i = 10; + //2. Använd implicit konvertering för att tilldela variabel "l" värdet av "i" - //Kod här - + l = i; + //3. Addera 1 till variabeln "l" mha inkrement operatorn. - //Kod här - + l++; + //4. Använd compound assignment för att multiplicera värdet av variabel "l" med 2 - //Kod här - + l *= 2; + //5. Avänd explicit konvertering för att tilldela variabel "i" värdet av "l" - //Kod här - + i = (int)l; //6. Skriv ut värdet av variabeln i konsolen. Talet 22 bör skrivas ut - //Kod här - + Console.WriteLine(i); //7. Tilldela variabeln "f" värdet 3.14 - //Kod här - + f = 3.14f; //8. Använd explicit konvertering för att tilldela variabeln "d" värdet av variabeln "f" - //Kod här - + d = (decimal)f; //9. Använd dekrement operatorn för att subtrahera värdet av "d" med 1 - //Kod här - + d--; //10. Använd compound assignment för att multiplicera värdet av variabel "d" med 3 - //Kod här - + d *= 3; //11. Använd explicit konvertering för att tilldela "i" värdet av "d" modulo 5 (restvärdet) - //Kod här - - + i = (int)d % 5; //12. Skriv ut värdet av "i" i konsolen. Bör vara 1. - //Kod här - - + Console.WriteLine(i); //13. Tilldela variabeln "sant" värdet true som en sträng - //Kod här - + sant = "true"; //14. Använd en hjälp klass för att konvertera //och tilldela variabeln "b" värdet av variabeln "sant" //Kod här - + b = Convert.ToBoolean(sant); //15. Sätt variabel "b":s värde till falskt - //Kod här - + b = false; //16. Använd en hjälp klass för att konvertera //och tilldela variabeln "sant" värdet av variabeln "b" - //Kod här - + sant = Convert.ToString(b); //17. Skriv ut värdet av variabeln "sant" i konsolen. Bör vara False. - //Kod här - + Console.WriteLine(sant); //18. Skriv ut till konsolen texten: Ange ett heltal: - //Kod här - + Console.WriteLine("Ange ett heltal:"); //19. Läs in ett heltal från konsolen tilldela värdet till variabel "input1" - //Kod här - + input1 = Console.ReadLine(); //20. Skriv ut till konsolen texten: Ange ett annat heltal: - //Kod här - + Console.WriteLine("Ange ett annat heltal:"); //21. Läs in ett annat heltal från konsolen tilldela värdet till variabel "input2" - //Kod här - + input2 = Console.ReadLine(); //22. Använd datatypen ints Parse funktion för att konvertera och tilldela //värdet av "input1" till variabeln "tal1" - //Kod här - - + tal1 = int.Parse(input1); //23. Använd datatypen ints Parse funktion för att konvertera och tilldela //värdet av "input2" till variabeln "tal2" - //Kod här - - + tal2 = int.Parse(input2); //24. På en kod-rad skriv ut i konsolen mha string interpolation resultatet man //får av att multiplicera "tal1" och "tal2" med varandra. //Exempel: Givet att "tal1" = 2 och "tal2" = 10 ska det skrivas ut i konsolen: //Produkten av talen 2 och 10 är: 20 - //Kod här - + Console.WriteLine($"Produkten av talen {tal1} och {tal2} är: {tal1 * tal2}"); + Console.ReadLine(); } } diff --git a/Uppgift2/Villkor_och_loopar/Program.cs b/Uppgift2/Villkor_och_loopar/Program.cs index 8c696c2..8e6bd35 100644 --- a/Uppgift2/Villkor_och_loopar/Program.cs +++ b/Uppgift2/Villkor_och_loopar/Program.cs @@ -1,20 +1,73 @@ using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading; + namespace Villkor_och_loopar { - - /// - - - /// - /// class Program { static void Main(string[] args) { - var x = Console.ReadLine(); + bool isRacing = true; + List listOfRunners = new List(); + + while (isRacing) + { + Console.Clear(); + + var runner = new Runner(); + + runner.StartNumber = runner.SetStartNumber(); + + if (runner.StartNumber < 1) + { + isRacing = false; + break; + } + + runner.SetAllTimes(); + listOfRunners.Add(runner); + listOfRunners.Sort((x, y) => x.TotalTimeInSeconds.CompareTo(y.TotalTimeInSeconds)); + + runner.PrintInfo(); + + Console.WriteLine("Tryck på en knapp för att fortsätta..."); + Console.ReadKey(); + } + + Console.Clear(); + + if (listOfRunners.Count == 0) + { + Console.WriteLine("Det fanns inga tävlande i detta lopp."); + } + + else + { + Console.WriteLine($"\n\t----VINNARE----"); + listOfRunners.First().PrintInfo(); + + if (listOfRunners.Count > 1) + { + Console.WriteLine("\n\t----ANDRA OCH TREDJE PLATS----"); + int position = 1; + foreach (var contestant in listOfRunners) + { + if (position != 1 && position <= 3) + { + contestant.PrintInfo(); + } + position++; + } + } + } + Console.ReadLine(); - } } } diff --git a/Uppgift2/Villkor_och_loopar/Runner.cs b/Uppgift2/Villkor_och_loopar/Runner.cs new file mode 100644 index 0000000..fe92986 --- /dev/null +++ b/Uppgift2/Villkor_och_loopar/Runner.cs @@ -0,0 +1,188 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Villkor_och_loopar +{ + public class Runner + { + + private int _goalHour; + private int _goalMinute; + private int _goalSecond; + + public int TotalTimeInSeconds { get; set; } + public int StartNumber { get; set; } + public int StartHour { get; set; } + public int StartMinute { get; set; } + public int StartSecond { get; set; } + public int FinishHour { get; set; } + public int FinishMinute { get; set; } + public int FinishSecond { get; set; } + + + + + public void SetAllTimes() + { + + StartHour = SetRunnerTime("startHour"); + StartMinute = SetRunnerTime("startMinute"); + StartSecond = SetRunnerTime("startSecond"); + + FinishHour = SetRunnerTime("finishHour"); + FinishMinute = SetRunnerTime("finishMinute"); + FinishSecond = SetRunnerTime("finishSecond"); + + SetTotalTimeInSeconds(); + } + public void SetTotalTimeInSeconds() + { + _goalHour = FinishHour - StartHour; + _goalMinute = FinishMinute - StartMinute; + _goalSecond = FinishSecond - StartSecond; + + // Uträkningar för att fånga upp lopp som passerar midnatt + if (_goalSecond < 0) + { + _goalSecond += 60; + _goalMinute--; + } + + if (_goalMinute < 0) + { + _goalMinute += 60; + _goalHour--; + } + + if (_goalHour < 0) + { + _goalHour += 24; + } + + TotalTimeInSeconds = _goalSecond + (_goalHour * 3600) + (_goalMinute * 60); + } + + public int SetRunnerTime(string whatToSet) + { + int timeToSet = 0; + + if (whatToSet == "startHour") + { + timeToSet = SetStartOrFinishHour("start"); + } + + else if (whatToSet == "finishHour") + { + timeToSet = SetStartOrFinishHour("mål"); + + } + + else if (whatToSet == "startMinute") + { + timeToSet = SetStartOrFinishMinute("start"); + } + + else if (whatToSet == "finishMinute") + { + timeToSet = SetStartOrFinishMinute("mål"); + } + + else if (whatToSet == "startSecond") + { + timeToSet = SetStartOrFinishSecond("start"); + } + + else if (whatToSet == "finishSecond") + { + timeToSet = SetStartOrFinishSecond("mål"); + } + + return timeToSet; + } + + public int SetStartOrFinishHour(string startOrFinish) + { + int startOrFinishHour = 0; + var isInputting = true; + do + { + Console.Write($"Ange timme för {startOrFinish}: "); + if (!int.TryParse(Console.ReadLine(), out startOrFinishHour) || (startOrFinishHour < 0 || startOrFinishHour > 23)) + Console.WriteLine("Inkorrekt inmatning. Ange en timme mellan 00-23"); + + else + { + isInputting = false; + } + } + while (isInputting); + + return startOrFinishHour; + } + + public int SetStartOrFinishMinute(string startOrFinish) + { + var startOrFinishMinute = 0; + var isInputting = true; + do + { + Console.Write($"Ange minut för {startOrFinish}: "); + if (!int.TryParse(Console.ReadLine(), out startOrFinishMinute) || (startOrFinishMinute < 0 || startOrFinishMinute > 59)) + Console.WriteLine("Inkorrekt inmatning. Ange en minut mellan 0-59"); + + else + isInputting = false; + } + while (isInputting); + + return startOrFinishMinute; + } + + public int SetStartOrFinishSecond(string startOrFinish) + { + var startOrFinishSecond = 0; + var isInputting = true; + do + { + Console.Write($"Ange sekund för {startOrFinish}: "); + if (!int.TryParse(Console.ReadLine(), out startOrFinishSecond) || (startOrFinishSecond < 0 || startOrFinishSecond > 59)) + Console.WriteLine("Inkorrekt inmatning. Ange en sekund mellan 0-59"); + + else + isInputting = false; + } + while (isInputting); + + return startOrFinishSecond; + } + + public int SetStartNumber() + { + var startNumber = 0; + var isInputting = true; + do + { + Console.Clear(); + Console.WriteLine("\t---------------"); + Console.Write("Ange startnummer: "); + if (!int.TryParse(Console.ReadLine(), out startNumber)) + Console.WriteLine("Felaktig inmatning!"); + + else + { + isInputting = false; + } + } while (isInputting); + + return startNumber; + } + + public void PrintInfo() + { + Console.WriteLine($"\nStartnummer: {StartNumber}" + + $"\nSluttid: {_goalHour} timmar {_goalMinute} minuter och {_goalSecond} sekunder"); + } + + } +} diff --git a/Uppgift2/testdata.txt b/Uppgift2/testdata.txt index 423754c..f207297 100644 --- a/Uppgift2/testdata.txt +++ b/Uppgift2/testdata.txt @@ -21,23 +21,37 @@ Testdata 2: Starttid? 00 30 15 Måltid? 19 22 35 Startnummer? -1 - Vinnare är startnr: 33 + Vinnare är startnr: 33 Tim: 18 Min: 52 Sek: 20 Antal tävlande: 1 Programmet avslutas Testdata 3: + ANDRA PLATS Startnummer? 33 Starttid? 17 30 15 Måltid? 18 22 35 + + + Sluttid: 0 timmar 52 minuter 20 sekunder + + VINNER Startnummer? 14 Starttid? 23 35 00 Måltid? 0 12 24 + + + Sluttid: 0 timmar 37 minuter 24 sekunder + + SIST Startnummer? 26 Starttid? 10 11 12 Måltid? 20 21 22 - Startnummer? -1 + + Sluttid: 10 timmar 10 minuter 10 sekunder + + Vinnare är startnr: 14 Tim: 0 Min: 37 Sek: 24 Antal tävlande: 3 diff --git a/Uppgift3/Klasser/Car.cs b/Uppgift3/Klasser/Car.cs new file mode 100644 index 0000000..4c28355 --- /dev/null +++ b/Uppgift3/Klasser/Car.cs @@ -0,0 +1,85 @@ +using System; + +namespace Klasser +{ + public class Car + { + // Fields + public string _model; + private decimal _odometer; + + // Properties + public int WeightInKG { get; set; } + public string Registered { get; set; } + public bool IsElectric { get; set; } + public string LicensePlate { get; set; } + + /// + /// Sätter modellen på bilen. + /// + /// Modellnamn. + public Car(string modelname) + { + _model = modelname; + } + + /// + /// Sätter alla uppgifter om en bil. + /// + /// + /// + /// + /// + /// + public Car(string model, int weight, + string registered, + string licenseplate, + bool electric) + { + this._model = model; + this.WeightInKG = weight; + this.Registered = registered; + this.LicensePlate = licenseplate; + this.IsElectric = electric; + } + + /// + /// Adderar hur långt ett fordon har kört till milmätaren. + /// + /// Hur långt fordonet har kört + public void SetOdometer(decimal lengthDriven) + { + if (lengthDriven > 0) + { + _odometer += lengthDriven; + } + + } + + /// + /// Hämtar milmätaren och omvandlar till string. + /// + /// String + public string GetOdometer() + { + return _odometer.ToString(); + } + + /// + /// Skriver ut all information om en bil. + /// + public void GetInfo() + { + Console.WriteLine(); + Console.WriteLine($"Modell: {_model}"); + Console.WriteLine($"Vikt: {WeightInKG}kg"); + Console.WriteLine($"Registrerades: {Registered}"); + Console.WriteLine($"Registreringsnummer: {LicensePlate}"); + if (IsElectric) + Console.WriteLine("\"Detta är en elbil!\""); + } + + + } + +} \ No newline at end of file diff --git a/Uppgift3/Klasser/Person.cs b/Uppgift3/Klasser/Person.cs new file mode 100644 index 0000000..e029700 --- /dev/null +++ b/Uppgift3/Klasser/Person.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; + +namespace Klasser +{ + public class Person + { + private string _name; + private int _age; + public List Cars { get; set; } + + /// + /// Hämtar en persons namn + /// + /// String + public string GetName() + { + return _name; + } + /// + /// Hämtar en persons ålder + /// + /// Integer + public int GetAge() + { + return _age; + } + + + public Person(string name, int age) + { + this._name = name; + this._age = age; + Cars = new List(); + } + + } + +} \ No newline at end of file diff --git a/Uppgift3/Klasser/Program.cs b/Uppgift3/Klasser/Program.cs index df3b6de..7581454 100644 --- a/Uppgift3/Klasser/Program.cs +++ b/Uppgift3/Klasser/Program.cs @@ -1,23 +1,232 @@ using System; +using System.Collections.Generic; +using System.Xml.Schema; namespace Klasser { class Program { + + static void Main(string[] args) + { + + #region Skapar fyra objekt av klassen Bil + Car BMW = new Car("BMW Z3", + 1000, + DateTime.Now.ToString("yyyy/MM/dd"), + "ABC123", + false); + Car Tesla = new Car("Tesla s-series", + 920, + DateTime.Now.ToString("yyyy/MM/dd"), + "DEF456", + true); + Car Volkswagen = new Car("Volskwagen Passat", + 1100, + DateTime.Now.ToString("yyyy/MM/dd"), + "GHI789", + false); + Car Chevrolet = new Car("Chevrolet Volt", + 1150, + DateTime.Now.ToString("yyyy/MM/dd"), + "JKL101", + true); + #endregion + + // Skapar lista för de skapade bil-objekten + List listOfCars = new List(); + #region Lägger till de skapade objekten i listan + listOfCars.Add(BMW); + listOfCars.Add(Tesla); + listOfCars.Add(Volkswagen); + listOfCars.Add(Chevrolet); + #endregion + + + #region Skriver ut de skapade objekten + Console.WriteLine("Skapade objekt innan programmet körs: "); + PrintCars(listOfCars); + + Console.WriteLine("\n\tTryck på en knapp för att fortsätta..."); + Console.ReadKey(); + Console.Clear(); + + // Tar bort alla element i listan + listOfCars.Clear(); + #endregion + + // Lista som tar emot objekt av klassen Person + List listOfUsers = new List(); + + // Start av huvudprogram (skapa obegränsat antal personer och tilldela bilar till dem) + var isAddingPersons = true; + do + { + #region Samlar in data om användaren + Console.WriteLine("\n\t----- LÄGG TILL PERSON -----"); + var userName = SetName("Mata in namn: "); + var userAge = SetAgeOrWeight("Mata in ålder: "); + + Person user = new Person(userName, userAge); // Skapar objekt av klassen Person + listOfUsers.Add(user); // Lägger till user i lista med användare. + #endregion + + var isAddingCars = true; + do + { + #region Samlar in data om bilen + Console.WriteLine($"\n\t----- REGISTRERA BIL TILL ANVÄNDARE \"{user.GetName().ToUpper()}\" -----"); + var modelName = SetName("Mata in modell: "); + var weight = SetAgeOrWeight("Mata in vikt: "); + var licensePlate = SetLicensePlate("Mata in registreringsnummer: "); + var isElectric = SetBool("Är det en elbil? j/n: "); + var registered = DateTime.Now.ToString("yyyy/MM/dd"); // Registrering av fordon sker när applikationen körs + #endregion + + // Skapar nytt objekt av klassen car. + Car car = new Car(modelName, weight, registered, licensePlate, isElectric); + user.Cars.Add(car); // Lägger in car i användarlistan Cars + + // Om användaren inte vill registrera fler bilar så frågar vi om den vill lägga till fler personer + // Om inte, skriv ut all data vi har och avsluta. + Console.Write($"Vill du registrera fler bilar till {user.GetName()}? j/n: "); + var answer = Console.ReadLine().ToLower(); + if (answer != "j") + { + isAddingCars = false; + + Console.Write("Vill du lägga till fler personer? j/n: "); + answer = Console.ReadLine().ToLower(); + if (answer != "j") + isAddingPersons = false; + + else + break; + } + + } while (isAddingCars); + + } while (isAddingPersons); + + PrintUsersAndCars(listOfUsers); + Console.ReadKey(); // Avslutar program + } + + #region Metoder + /// - /// Se instruktionenr i Uppgift.txt + /// Skriver ut alla bilar som finns i en lista. /// - /// - static void Main(string[] args) + /// Lista med bilar som ska skrivas ut. + public static void PrintCars(List listOfCars) { + foreach (var car in listOfCars) + car.GetInfo(); + } - Console.WriteLine("Hello World!"); + /// + /// Skriver ut alla personer och bilarna de äger. + /// + /// Lista med användare. + public static void PrintUsersAndCars(List listOfUsers) + { + foreach (var user in listOfUsers) + { + Console.WriteLine($"\n\t{user.GetName()} är {user.GetAge()} år gammal och äger dessa bilar:"); + + foreach (var car in user.Cars) + { + car.GetInfo(); + } + } } - } + /// + /// Frågar användaren om vad som ska matas in och sätter ett strängvärde, och tvingar bokstäverna till upper-case. + /// + /// Frågan som ska ställas till användaren. + /// String + public static string SetLicensePlate(string question) + { + var isInputting = true; + string licensePlate; + do + { + Console.Write(question); + licensePlate = Console.ReadLine().ToUpper(); + if (String.IsNullOrEmpty(licensePlate)) + Console.WriteLine("Du måste mata in något!"); - public class Bil - { - public string Registreringsnummer { get; set; } + else + isInputting = false; + + } while (isInputting); + + return licensePlate; + } + + /// + /// Frågar användaren om vad som ska matas in och sätter ett heltal. + /// + /// Frågan som ska ställas till användaren + /// Integer + public static int SetAgeOrWeight(string question) + { + var isInputting = true; + int ageOrWeight; + do + { + Console.Write(question); + if (!int.TryParse(Console.ReadLine(), out ageOrWeight)) + Console.WriteLine("Du måste mata in ett heltal!"); + + else + isInputting = false; + + + } while (isInputting); + + return ageOrWeight; + } + + /// + /// Frågar användaren om vad som ska matas in och sätter ett strängvärde + /// + /// Frågan som ska ställas till användaren + /// String + public static string SetName(string question) + { + var isInputting = true; + string name; + do + { + Console.Write(question); + name = Console.ReadLine(); + if (String.IsNullOrEmpty(name)) + Console.WriteLine("Du matade inte in något!"); + + else + isInputting = false; + } while (isInputting); + + return name; + } + /// + /// Frågar användaren och returnerar ett bool-värde. + /// + /// Frågan som ska ställas. Frågan måste innehålla j/n + /// Boolean + public static bool SetBool(string questionJorN) + { + + Console.Write(questionJorN); + var answer = Console.ReadLine().ToLower(); + + // Om svar är j/J så sätts electric till true. + var electric = (answer == "j"); + return electric; + } + #endregion } + } \ No newline at end of file diff --git a/Uppgift3/Uppgift.txt b/Uppgift3/Uppgift.txt index b02a301..330599d 100644 --- a/Uppgift3/Uppgift.txt +++ b/Uppgift3/Uppgift.txt @@ -21,6 +21,7 @@ Sedan itererar (loopar) du igenom listan av bilar och skriver ut informationen o Om en bil är miljövänlig (dvs är en elbil) skriver du ut ett extra meddelande på skärmen (i stil med "Detta är en elbil!") Om klar se extra uppfigter nedan! + Nedan ser du klassen Bil. Det är en bra start, men den är inte komplett! Bilar klassen saknar följande uppgifter: Properties: diff --git a/Uppgift4/ArvOchAbstraktion/ArvOchAbstraktion.csproj b/Uppgift4/ArvOchAbstraktion/ArvOchAbstraktion.csproj index c73e0d1..d16ab6b 100644 --- a/Uppgift4/ArvOchAbstraktion/ArvOchAbstraktion.csproj +++ b/Uppgift4/ArvOchAbstraktion/ArvOchAbstraktion.csproj @@ -5,4 +5,8 @@ netcoreapp3.1 + + + + diff --git a/Uppgift4/ArvOchAbstraktion/IVerkstad.cs b/Uppgift4/ArvOchAbstraktion/IVerkstad.cs new file mode 100644 index 0000000..578225d --- /dev/null +++ b/Uppgift4/ArvOchAbstraktion/IVerkstad.cs @@ -0,0 +1,17 @@ +using Klasser; +using System; +using System.Collections.Generic; +using System.Text; + +namespace ArvOchAbstraktion +{ + public interface IVerkstad + { + bool AddVehicle(Vehicle vehicle); + void RemoveVehicle(Vehicle vehicle); + //void SetVehicleType(string typeOfVehicle); + + List GetListOfVehicles(); + + } +} diff --git a/Uppgift4/ArvOchAbstraktion/InputHelper.cs b/Uppgift4/ArvOchAbstraktion/InputHelper.cs new file mode 100644 index 0000000..7a76873 --- /dev/null +++ b/Uppgift4/ArvOchAbstraktion/InputHelper.cs @@ -0,0 +1,411 @@ +using Klasser; +using System; +using System.Collections.Generic; +using System.Text; + + +namespace ArvOchAbstraktion +{ + public static class InputHelper + { + + #region Metoder för inmatning + /// + /// Skriver ut en fråga i konsolen, användaren matar in svaret som returneras i string. + /// + /// Vad konsolen ska skriva ut för fråga + /// String + private static string ReadName(string whatToWrite) + { + string name; + var isSettingName = true; + do + { + Console.Write(whatToWrite); + name = Console.ReadLine(); + if (string.IsNullOrEmpty(name)) + Console.WriteLine("Du måste mata in något."); + + else + isSettingName = false; + + } while (isSettingName); + + return name; + } + + /// + /// Skriver ut en fråga i konsolen, användaren matar in svaret som returneras i string i versaler + /// + /// + /// + private static string ReadLicensePlate(string whatToWrite) + { + string licensePlate; + var isSettingLicensePlate = true; + do + { + Console.Write(whatToWrite); + licensePlate = Console.ReadLine().ToUpper(); + licensePlate = licensePlate.Replace(" ", ""); + if (string.IsNullOrEmpty(licensePlate)) + Console.WriteLine("Du måste mata in något."); + + else + isSettingLicensePlate = false; + + } while (isSettingLicensePlate); + + return licensePlate; + } + + /// + /// Skriver ut en fråga i konsolen, användaren matar in svaret som returneras i bool. + /// + /// Vad konsolen ska skriva ut för fråga + /// True/false + private static bool ReadBool(string whatToWriteWithJorNquestion) + { + + bool hasSomething = false; + var isSettingBool = true; + do + { + Console.Write(whatToWriteWithJorNquestion); + var answer = Console.ReadLine().ToLower(); + if (string.IsNullOrEmpty(answer)) + Console.WriteLine("Du måste svara på frågan."); + + else + { + hasSomething = (answer == "j"); + isSettingBool = false; + } + + } while (isSettingBool); + + return hasSomething; + } + + /// + /// Skriver ut en fråga i konsolen, användaren matar in svaret som returneras i integer. + /// + /// Vad konsolen ska skriva ut för fråga + /// Integer + private static int ReadInteger(string whatToWrite) + { + int valueToSet = 0; + var isSettingInt = true; + do + { + Console.Write(whatToWrite); + if (!int.TryParse(Console.ReadLine(), out valueToSet)) + Console.WriteLine("Du måste mata in ett heltal."); + + else if (valueToSet < 0) + Console.WriteLine("Värdet kan inte vara minus."); + + else + isSettingInt = false; + + } while (isSettingInt); + + return valueToSet; + } + + /// + /// Skriver ut en fråga i konsolen, användaren matar in svaret som returneras i decimal. + /// + /// Vad konsolen ska skriva ut för fråga + /// Decimaltal + private static decimal ReadDecimal(string whatToWrite) + { + decimal valueToSet = 0; + var IsSettingDecimal = true; + do + { + Console.Write(whatToWrite); + if (!Decimal.TryParse(Console.ReadLine(), out valueToSet)) + Console.WriteLine("Du måste mata in ett tal."); + + else if (valueToSet < 0) + Console.WriteLine("Värdet kan inte vara minus."); + + else + IsSettingDecimal = false; + + } while (IsSettingDecimal); + + return valueToSet; + } + #endregion + + + #region Metoder för att skapa fordon + + public static Vehicle CreateCar() + { + var car = new Car(); + var isAdding = true; + while (isAdding) + { + Console.Clear(); + + car.ModelName = ReadName("Mata in modellnamn: "); + car.LicensePlate = ReadLicensePlate("Mata in registreringsnummer: "); + car.RegistrationDate = DateTime.Now.ToString("yyyy/MM/dd"); + car.HasTowbar = ReadBool("Har bilen en dragkrok? j/n: "); + + var lengthDriven = ReadDecimal("Mata in hur många mil fordonet har gått: "); + car.SetOdometer(lengthDriven); + + PrintInfo(car); + var isAnswering = true; + do + { + Console.Write("\nStämmer dessa uppgifter? j/n: "); + var answer = Console.ReadLine().ToLower(); + if (answer == "j") + { + isAdding = false; + isAnswering = false; + break; + } + + else if (string.IsNullOrEmpty(answer)) + Console.WriteLine("Du måste svara."); + + else + isAnswering = false; + + } while (isAnswering); + + } + return car; + + + } + + public static Vehicle CreateMotorcycle() + { + var motorcycle = new Motorcycle(); + var isAdding = true; + while (isAdding) + { + Console.Clear(); + + motorcycle.ModelName = ReadName("Mata in modellnamn: "); + motorcycle.LicensePlate = ReadLicensePlate("Mata in registreringsnummer: "); + motorcycle.RegistrationDate = DateTime.Now.ToString("yyyy/MM/dd"); + motorcycle.MaxSpeed = ReadInteger("Mata in maxhastighet i km/h: "); + if (motorcycle.MaxSpeed > 50) + motorcycle.TypeOfVehicle = "Motorcykel"; + + else + motorcycle.TypeOfVehicle = "Moped"; + + var lengthDriven = ReadDecimal("Mata in hur många mil fordonet har gått: "); + motorcycle.SetOdometer(lengthDriven); + + PrintInfo(motorcycle); + var isAnswering = true; + do + { + Console.Write("\nStämmer dessa uppgifter? j/n: "); + var answer = Console.ReadLine().ToLower(); + if (answer == "j") + { + isAdding = false; + isAnswering = false; + break; + } + + else if (string.IsNullOrEmpty(answer)) + Console.WriteLine("Du måste svara."); + + else + isAnswering = false; + + } while (isAnswering); + } + + return motorcycle; + } + + public static Vehicle CreateTruck() + { + var truck = new Truck(); + + var isAdding = true; + while (isAdding) + { + Console.Clear(); + + truck.ModelName = ReadName("Mata in modellnamn: "); + truck.LicensePlate = ReadLicensePlate("Mata in registreringsnummer: "); + truck.RegistrationDate = DateTime.Now.ToString("yyyy/MM/dd"); + truck.MaxLoadInKG = ReadInteger("Mata in maxlast i kg: "); + + var lengthDriven = ReadDecimal("Mata in hur många mil fordonet har gått: "); + truck.SetOdometer(lengthDriven); + + PrintInfo(truck); + var isAnswering = true; + do + { + Console.Write("\nStämmer dessa uppgifter? j/n: "); + var answer = Console.ReadLine().ToLower(); + if (answer == "j") + { + isAdding = false; + isAnswering = false; + break; + } + + else if (string.IsNullOrEmpty(answer)) + Console.WriteLine("Du måste svara."); + + else + isAnswering = false; + + } while (isAnswering); + } + + return truck; + } + + public static Vehicle CreateBus() + { + var bus = new Bus(); + + var isAdding = true; + while (isAdding) + { + Console.Clear(); + + bus.ModelName = ReadName("Mata in modellnamn: "); + bus.LicensePlate = ReadLicensePlate("Mata in registreringsnummer: "); + bus.RegistrationDate = DateTime.Now.ToString("yyyy/MM/dd"); + bus.MaxAmountOfPassengers = ReadInteger("Mata in max antal passagerare: "); + if (bus.MaxAmountOfPassengers > 8) + bus.TypeOfVehicle = "Buss"; + + else + bus.TypeOfVehicle = "Minibuss"; + + var lengthDriven = ReadDecimal("Mata in hur många mil fordonet har gått: "); + bus.SetOdometer(lengthDriven); + + PrintInfo(bus); + var isAnswering = true; + do + { + Console.Write("\nStämmer dessa uppgifter? j/n: "); + var answer = Console.ReadLine().ToLower(); + if (answer == "j") + { + isAdding = false; + isAnswering = false; + break; + } + + else if (string.IsNullOrEmpty(answer)) + Console.WriteLine("Du måste svara."); + + else + isAnswering = false; + + } while (isAnswering); + } + + return bus; + + } + #endregion + + + /// + /// Söker efter ett fordon med hjälp av registreringsnummer. + /// + /// Listan som sökningen sker i. + /// Om matching lyckas: kopia av fordon som ska tas bort. + ///
Om matching misslyckas: null
+ ///
+ public static Vehicle FindVehicleToRemove(IVerkstad verkstad) + { + Console.WriteLine("Är du säker på att du vill ta bort ett fordon? j/n: "); + var answer = Console.ReadLine().ToLower(); + + Vehicle vehicleToRemove = null; + + if (answer == "j") + { + foreach (var vehicle in verkstad.GetListOfVehicles()) + PrintInfo(vehicle); + + Console.WriteLine("\nSkriv in registreringsnummer på det fordon du vill ta bort: "); + string licensePlateToMatch = Console.ReadLine().ToUpper(); + licensePlateToMatch = licensePlateToMatch.Replace(" ", ""); // Tar bort whitespace i inmatningen. + + var hasFoundVehicle = false; + + foreach (var vehicle in verkstad.GetListOfVehicles()) + { + if (licensePlateToMatch == vehicle.LicensePlate) + { + hasFoundVehicle = true; + vehicleToRemove = vehicle; + return vehicleToRemove; + } + } + + if (!hasFoundVehicle) + { + Console.WriteLine("Hittade inte ett fordon som matchade registreringsnumret."); + } + } + + return vehicleToRemove; + } + + public static void PrintInfo(Vehicle vehicle) + { + Console.WriteLine("\t----------"); + Console.WriteLine($"Fordonstyp: {vehicle.TypeOfVehicle}" + + $"\nNamn: {vehicle.ModelName}" + + $"\nRegistreringsnummer: {vehicle.LicensePlate}" + + $"\nRegisterades: {vehicle.RegistrationDate}" + + $"\nMilmätare: {vehicle.GetOdometer()} mil"); + + if (vehicle is Car) + { + var car = vehicle as Car; + if (car.HasTowbar) + Console.WriteLine("Dragkrok: Ja"); + + else + Console.WriteLine("Dragkrok: Nej"); + } + + else if (vehicle is Motorcycle) + { + var motorcycle = vehicle as Motorcycle; + Console.WriteLine($"Maxhastighet: {motorcycle.MaxSpeed}"); + } + + else if (vehicle is Truck) + { + var truck = vehicle as Truck; + Console.WriteLine($"Maxlast i kg: {truck.MaxLoadInKG}"); + } + + else + { + var bus = vehicle as Bus; + Console.WriteLine($"Max antal passagerare: {bus.MaxAmountOfPassengers}"); + } + + } + + } +} diff --git a/Uppgift4/ArvOchAbstraktion/Program.cs b/Uppgift4/ArvOchAbstraktion/Program.cs index ddeace9..0fe643d 100644 --- a/Uppgift4/ArvOchAbstraktion/Program.cs +++ b/Uppgift4/ArvOchAbstraktion/Program.cs @@ -1,4 +1,9 @@ -using System; +using Klasser; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; namespace ArvOchAbstraktion { @@ -6,7 +11,223 @@ class Program { static void Main(string[] args) { - Console.WriteLine("Hello World!"); + IVerkstad verkstad = new Verkstad(); + + + var isRunning = true; + while (isRunning) + { + PrintMainMenu(); + int.TryParse(Console.ReadLine(), out int menuInput); + + switch (menuInput) + { + + case 1: + #region Lägg till fordon + + var isAddingVehicle = true; + while (isAddingVehicle) + { + PrintAddVehicleMenu(); + int.TryParse(Console.ReadLine(), out menuInput); + + switch (menuInput) + { + case 1: + #region Lägg till bil + + Console.WriteLine("----LÄGG TILL BIL"); + Car car = new Car(); + InputHelper.CreateVehicle(car); + verkstad.AddVehicle(car); + + Console.WriteLine("\nBil tillagd i verkstaden!"); + + BackToMenu(); + break; + #endregion + + case 2: + #region Lägg till motorcykel + + Console.WriteLine("----LÄGG TILL MOTORCYKEL----"); + + var motorcycle = InputHelper.CreateMotorcycle(); + var tryToAddVehicle = verkstad.AddVehicle(motorcycle); + if (tryToAddVehicle) + Console.WriteLine("\nMotorcykel tillagd i verkstaden!"); + + // Den här koden körs endast i VerkstadV2 klassen + else + Console.WriteLine("\nDen här verkstaden kan bara ta emot mopeder. De får ha en maxhastighet på 50km/h."); + + BackToMenu(); + break; + #endregion + + case 3: + #region Lägg till lastbil + + Console.WriteLine("----LÄGG TILL LASTBIL----"); + + var truck = InputHelper.CreateTruck(); + tryToAddVehicle = verkstad.AddVehicle(truck); + + if (tryToAddVehicle) + Console.WriteLine("\nLastbil tillagd i verkstaden!"); + + // Den här koden körs endast i VerkstadV2 klassen + else + Console.WriteLine("\nDen här verkstaden tar bara emot lätta lastbilar vars maxlast är 2 ton."); + + BackToMenu(); + break; + #endregion + + case 4: + #region Lägg till buss + + Console.WriteLine("----LÄGG TILL BUSS----"); + + var bus = InputHelper.CreateBus(); + tryToAddVehicle = verkstad.AddVehicle(bus); + + if (tryToAddVehicle) + Console.WriteLine("\nBuss tillagd i verkstaden!"); + + // Den här koden körs endast i VerkstadV2 klassen + else + Console.WriteLine("\nDen här verkstaden tar bara emot minibussar. Max antal passagerare får vara 8 st."); + + BackToMenu(); + break; + #endregion + + case 5: + // Tillbaka till huvudmenyn + isAddingVehicle = false; + break; + + default: + Console.WriteLine("Du måste välja ur något av alternativen."); + BackToMenu(); + break; + + } + } + break; + #endregion + + case 2: + #region Ta bort fordon + + Console.Clear(); + Console.WriteLine("---- TA BORT FORDON ----"); + + if (verkstad.GetListOfVehicles().Count == 0) + Console.WriteLine("Det finns inga fordon i verkstaden."); + + else + { + var vehicleToRemove = InputHelper.FindVehicleToRemove(verkstad); + + if (vehicleToRemove != null) + verkstad.RemoveVehicle(vehicleToRemove); + + } + + BackToMenu(); + #endregion + break; + + case 3: + //Skriv ut alla fordon i verkstaden + Console.Clear(); + + if (verkstad.GetListOfVehicles().Count == 0) + Console.WriteLine("Det finns inga fordon i verkstaden."); + + else + foreach (var vehicle in verkstad.GetListOfVehicles()) + InputHelper.PrintInfo(vehicle); + + BackToMenu(); + break; + + case 4: + #region Avsluta program + + Console.WriteLine("Avslutar program..."); + Thread.Sleep(1000); + isRunning = false; + break; + + #endregion + + default: + Console.WriteLine("Du måste välja ur alternativen."); + BackToMenu(); + break; + } + } + + } + + + + + #region Metoder för utskrift + /// + /// Skriver ut text och tar emot en inmatning för att "pausa" programmet. + /// + static void BackToMenu() + { + Console.WriteLine("\nTryck på enter för att fortsätta..."); + Console.ReadKey(); + } + + /// + /// Skriver ut huvudmeny + /// + static void PrintMainMenu() + { + Console.Clear(); + Console.WriteLine("----VÄLKOMMEN TILL VERKSTADEN----"); + Console.WriteLine("[1] Lägg till fordon" + + "\n[2] Ta bort fordon" + + "\n[3] Skriv ut alla fordon i verkstaden" + + "\n[4] Avsluta program"); + } + + /// + /// Skriver ut menyn där användaren lägger till fordon i verkstaden. + /// + static void PrintAddVehicleMenu() + { + Console.Clear(); + Console.WriteLine("Vad för typ av fordon vill du lägga till?" + + "\n[1] Bil" + + "\n[2] Motorcykel" + + "\n[3] Lastbil" + + "\n[4] Buss" + + "\n[5] Tillbaka till huvudmenyn"); + } + + //public static string PropertyList(this object obj) + //{ + // var properties = obj.GetType().GetProperties(); + + // var stringBuilder = new StringBuilder(); + // foreach (var prop in properties) + // { + // stringBuilder.AppendLine($"{prop.Name}: {prop.GetValue(obj, null)}"); + // } + + // return stringBuilder.ToString(); + //} + + #endregion } } diff --git a/Uppgift4/ArvOchAbstraktion/Verkstad.cs b/Uppgift4/ArvOchAbstraktion/Verkstad.cs new file mode 100644 index 0000000..c325576 --- /dev/null +++ b/Uppgift4/ArvOchAbstraktion/Verkstad.cs @@ -0,0 +1,66 @@ +using Klasser; +using System; +using System.Collections.Generic; +using System.Reflection.Metadata.Ecma335; +using System.Text; + +namespace ArvOchAbstraktion +{ + public class Verkstad : IVerkstad + { + + + private List _listOfVehicles; + public List ListOfVehicles + { + get + { + if (_listOfVehicles == null) + { + _listOfVehicles = new List(); + } + return _listOfVehicles; + } + + set + { + _listOfVehicles = value; + } + } + + + + /// + /// Lägger till ett fordon till verkstaden. + /// + /// Typ av fordon + public bool AddVehicle(Vehicle vehicle) + { + ListOfVehicles.Add(vehicle); + + return true; + } + + /// + /// Skriver ut alla fordon i verkstaden och tar bort ett fordon ur verkstaden med hjälp av registreringsnummer. + /// + public void RemoveVehicle(Vehicle vehicle) + { + ListOfVehicles.Remove(vehicle); + + Console.WriteLine($"Fordon: {vehicle.TypeOfVehicle} " + + $"med registreringsnummer: {vehicle.LicensePlate}" + + $"\nTogs bort från verkstaden."); + } + + + + public List GetListOfVehicles() + { + return ListOfVehicles; + } + + + + } +} diff --git a/Uppgift4/ArvOchAbstraktion/VerkstadV2.cs b/Uppgift4/ArvOchAbstraktion/VerkstadV2.cs new file mode 100644 index 0000000..0d12765 --- /dev/null +++ b/Uppgift4/ArvOchAbstraktion/VerkstadV2.cs @@ -0,0 +1,108 @@ +using ArvOchAbstraktion; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Klasser +{ + /// + /// Den här verkstade kan: + ///
-Ta emot lättare lastbilar (maxlast <= 2000)
+ ///
-Ta emot mopeder (motorcykelns maxhastighet är max 50km/h)
+ ///
-Ta emot minibussar (maxantal passagerare < 8)
+ ///
+ class VerkstadV2 : IVerkstad + { + private bool _isOkayToAdd; + + private List _listOfVehicles; + public List ListOfVehicles + { + get + { + if (_listOfVehicles == null) + { + _listOfVehicles = new List(); + } + return _listOfVehicles; + } + + set + { + _listOfVehicles = value; + } + } + + /// + /// Lägger till ett fordon till verkstaden. + /// + /// Typ av fordon + public bool AddVehicle(Vehicle vehicle) + { + var addedVehicle = false; + + IsOkayToAdd(vehicle); + if (_isOkayToAdd) + { + ListOfVehicles.Add(vehicle); + addedVehicle = true; + } + + return addedVehicle; + } + + /// + /// Tar bort ett fordon från verkstaden och skriver ut vad för fordons-typ det var, och vad reg-numret var. + /// + public void RemoveVehicle(Vehicle vehicle) + { + ListOfVehicles.Remove(vehicle); + + Console.WriteLine($"Fordon: {vehicle.TypeOfVehicle} " + + $"med registreringsnummer: {vehicle.LicensePlate}" + + $"\nTogs bort från verkstaden."); + } + + public List GetListOfVehicles() + { + return ListOfVehicles; + } + + private bool IsOkayToAdd(Vehicle vehicle) + { + if (vehicle is Truck) + { + var truck = vehicle as Truck; + + if (truck.MaxLoadInKG <= 2000) + _isOkayToAdd = true; + + else + _isOkayToAdd = false; + } + + else if (vehicle is Motorcycle) + { + var motorcycle = vehicle as Motorcycle; + + if (motorcycle.MaxSpeed <= 50) + _isOkayToAdd = true; + + else + _isOkayToAdd = false; + } + + else if (vehicle is Bus) + { + var bus = vehicle as Bus; + + if (bus.MaxAmountOfPassengers <= 8) + _isOkayToAdd = true; + else + _isOkayToAdd = false; + } + + return _isOkayToAdd; + } + } +} diff --git a/Uppgift4/Klasser/Bus.cs b/Uppgift4/Klasser/Bus.cs new file mode 100644 index 0000000..6f417a2 --- /dev/null +++ b/Uppgift4/Klasser/Bus.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Klasser +{ + public class Bus : Vehicle + { + public int MaxAmountOfPassengers { get; set; } + + /// + /// Skriver ut all information om en buss. + /// Skriver ut max antal passagerare. + /// + + + //public override void PrintInfo() + //{ + // base.PrintInfo(); + // Console.WriteLine($"Max antal passangerare: {MaxAmountOfPassengers}"); + //} + + + } +} diff --git a/Uppgift4/Klasser/Car.cs b/Uppgift4/Klasser/Car.cs new file mode 100644 index 0000000..7f180c2 --- /dev/null +++ b/Uppgift4/Klasser/Car.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Klasser +{ + public class Car : Vehicle + { + public bool HasTowbar { get; set; } + + public Car() + { + TypeOfVehicle = "Bil"; + } + + /// + /// Skriver ut all information om bilen. + /// Skriver ut om bilen har dragkrok + /// + + //public override void PrintInfo() + //{ + // base.PrintInfo(); + // if (HasTowbar) + // Console.WriteLine("Dragkrok: Ja"); + // else + // Console.WriteLine("Dragkrok: Nej"); + //} + + } +} diff --git a/Uppgift4/Klasser/Class1.cs b/Uppgift4/Klasser/Class1.cs deleted file mode 100644 index dbc44ef..0000000 --- a/Uppgift4/Klasser/Class1.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -namespace Klasser -{ - public class Class1 - { - } -} diff --git a/Uppgift4/Klasser/Motorcycle.cs b/Uppgift4/Klasser/Motorcycle.cs new file mode 100644 index 0000000..88b2a00 --- /dev/null +++ b/Uppgift4/Klasser/Motorcycle.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Klasser +{ + public class Motorcycle : Vehicle + { + public int MaxSpeed { get; set; } + + //public Motorcycle() + //{ + // if (MaxSpeed <= 50) + // TypeOfVehicle = "Moped"; + // else + // TypeOfVehicle = "Motorcykel"; + //} + + /// + /// Skriver ut all information om en motorcykel. + /// Skriver ut motorcykelns maxhastighet + /// + + //public override void PrintInfo() + //{ + // base.PrintInfo(); + // Console.WriteLine($"Maxhastighet: {MaxSpeed}km/h"); + //} + + } +} diff --git a/Uppgift4/Klasser/Truck.cs b/Uppgift4/Klasser/Truck.cs new file mode 100644 index 0000000..7aefd24 --- /dev/null +++ b/Uppgift4/Klasser/Truck.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Klasser +{ + public class Truck : Vehicle + { + public int MaxLoadInKG { get; set; } + + //public Truck() + //{ + // if (MaxLoadInKG <= 2000) + // TypeOfVehicle = "Lätt lastbil"; + + // else + // TypeOfVehicle = "Lastbil"; + + //} + + /// + /// Skriver ut all information om en lastbil. + /// Lägger till maxvikt i KG. + /// + //public override void PrintInfo() + //{ + // base.PrintInfo(); + // Console.WriteLine($"Maxlast: {MaxLoadInKG}KG"); + //} + } +} diff --git a/Uppgift4/Klasser/Vehicle.cs b/Uppgift4/Klasser/Vehicle.cs new file mode 100644 index 0000000..19b332d --- /dev/null +++ b/Uppgift4/Klasser/Vehicle.cs @@ -0,0 +1,72 @@ +using System; + +namespace Klasser +{ + public abstract class Vehicle + { + protected decimal _odometer; + + public string TypeOfVehicle { get; set; } + public string ModelName { get; set; } + public string LicensePlate { get; set; } + public string RegistrationDate { get; set; } + + //public Vehicle(string modelName, string licensePlate, string registrationDate) + //{ + // ModelName = modelName; + // LicensePlate = licensePlate; + // RegistrationDate = registrationDate; + //} + + //public Vehicle() + //{ + //} + + #region Metoder + + /// + /// Sätter värdet på milmätaren. + /// + /// Antal mil i decimaler. + public void SetOdometer(decimal lengthDriven) + { + if (lengthDriven > 0) + { + _odometer += lengthDriven; + } + } + + /// + /// Hämtar milmätare. + /// + /// Decimal + public decimal GetOdometer() + { + return _odometer; + } + + /// + /// Skriver ut all information om ett fordon. + /// + //public virtual void PrintInfo() + //{ + // Console.WriteLine("\t----------"); + // Console.WriteLine($"Fordonstyp: {TypeOfVehicle}" + + // $"\nNamn: {ModelName}" + + // $"\nRegistreringsnummer: {LicensePlate}" + + // $"\nRegisterades: {RegistrationDate}" + + // $"\nMilmätare: {_odometer} mil"); + //} + + /// + /// Hämtar vad för typ fordonet är. + /// + /// Sträng + //public string GetVehicleType() + //{ + // return TypeOfVehicle; + //} + + #endregion + } +}