Inlägg

Inlägg som widell_1992 har skrivit i forumet
Av widell_1992

Har nu fått fram något som skulle kunna liknas vid en funktionell kod, problemet är att jag inte lyckas få tillgång till fälten i klassen som jag ärver från. Är i lite samma sits nu att jag suttit lite för länge med det och har svårt att se problemen. Skulle uppskatta om jag fick lite vägledning igen!

Här är koden jag har för tillfället

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fordonen { class Program { static void Main(string[] args) { Console.WriteLine("Var god ange antalet hästkrafter; "); int horsepower = int.Parse(Console.ReadLine()); Console.WriteLine("Ange färgen på ditt fordon; "); string color = Console.ReadLine(); Fordon f = new Fordon(horsepower, color); //skapa nytt objekt med parametrar som konstruktorn tar emot. f.PrintData(); Console.ReadKey(); Console.WriteLine("Nu är det dags att testa en lastbil! "); Console.WriteLine("Var god ange hästkrafterna; "); int _horsepower = int.Parse(Console.ReadLine()); Console.WriteLine("Ange färgen på din lastbil;" ); string _color = Console.ReadLine(); Console.WriteLine("Och sist men tyngst, ange lastbilens vikt; "); int weight = int.Parse(Console.ReadLine()); Lastbil l = new Lastbil(horsepower, color, weight); l.printData(); Console.WriteLine("Kalkulation avklarad, tryck på valfri knapp för att avsluta programmet"); Console.ReadKey(); } } public class Fordon { public Fordon(int a, string b, int c) { horsepower = a; color = b; weight = c; } //Detta är konstruktorn, den anropas när objektet skapas public void PrintData() { int topspeed = horsepower * 2 - 200; Console.WriteLine("Maxhastigheten är; " + topspeed); } private int horsepower; private string color; private int weight; } public class Lastbil : Fordon { public void printData() { int topspeed = horsepower + weight * 2 - 200; Console.WriteLine("Maxhastigheten på lastbilen är; "); } } }

Av widell_1992

Tack för all hjälp, skrotade koden och började om från ruta ett. Blir lite tunnelseende ibland märker jag.

Av widell_1992

Hjälp med programmering!

Hej!

Sitter just nu fast med en skoluppgift.
Beskrivningen är som följer;

Uppgift
För att öva på arv i förberedelser för den större uppgiften ovan så ska du här lämna in följande uppgift.
Skapa en klass som heter fordon och som har följande fält:
hästkrafter
färg
Denna klass ska ha en lämplig konstruktor och en metod som beräknar maxhastigheten för fordonet.
Vidare kan du lägga till en valfri metod som exempelvis att fordonet "tutar".
Maxhastigheten baseras på hästkrafter med en lämplig formel.
Metoden för att beräkna tophastigheten är kursiv i UML:et vilket innebär att den är virtuell.
Skapa ytterigare en klass som heter lastbil och som ärver av fordon. I denna klass finns ytterligare ett fält som heter last.
Maxhastigheten för lastbil beräknas utifrån hästkrafter och last på ett lämpligt sätt.
Observera att formeln inte på något sätt behöver vara realistisk. Det är principen med kodningen som är det viktiga.

Finns även ett UML diagram som jag inte riktigt lyckades infoga här.

Koden på vad jag har änsålänge kommer här

namespace Fordon { public class Fordon { public int antal_fordon = 0; static void Main(string[] args) { { Console.WriteLine("Var god ange antalet hästkrafter; "); Fordon H = new Fordon(); H.horsepower(); Console.WriteLine("Ange fordonets vridmoment(Standard är mellan 1000-6000); "); Fordon T = new Fordon(); T.torque(); Console.WriteLine("Sist men inte minst, ange bilens färg(Stil är också viktigt!); "); Fordon C = new Fordon(); C.color(); Fordon Ca = new Fordon(); Ca.Calcspeed(); } } public int horsepower() { int horsepower = int.Parse(Console.ReadLine()); int[] _horsepower = new int[antal_fordon]; antal_fordon++; return horsepower; } public int torque() { int torque = int.Parse(Console.ReadLine()); int[] _torque = new int[antal_fordon]; antal_fordon++; return torque; } public string color() { string color = Console.ReadLine(); string[] _color = new string[antal_fordon]; antal_fordon++; return color; } protected virtual int Calcspeed() { int speed = 5252 * horsepower() / torque(); return speed; } } public class Truck : Fordon { int weight = int.Parse(Console.ReadLine()); protected virtual int Calctruckspeed() { int speed = 5252 * horsepower() / torque(); return speed; } } }

Det jag sitter fast på just nu är att jag inte löser hur jag skall kunna länka indatan till en specifik array eller list. Som det ser ut just nu så är det antagligen många andra fel i koden också, förväntar mig absolut inte att någon gör uppgiften åt mig. Finns ingen mening med det. Men uppskattar alla tips och trick som jag kan få. Är lite utav en flaskhals just nu med detta, då jag inte kan bygga mycket mer utan att ha någonstans att lagra datan.

Uppskattar all hjälp jag kan få!

Av widell_1992

@Jsandahl: Löste uppgiften tillslut, enormt tack för hjälpen. Det var det sista för veckan som skall in så kändes otroligt skönt att få det gjort.

En hjälte är du!

Av widell_1992

@perost: Jasså, Kan ha vart där det slog slint då Undrar bara en sak, hur kan jag göra vilkoret i slutet av loopen om jag inte har raderna som definerar inmatningen innan den börjar?

Av widell_1992

@Jsandahl: hehe, tack för hjälpen. Sitter och försöker det där med psuedokoden, skam den som ger sig. Om det finns något annat som verkar knasigt med koden så är jag väldigt tacksam för all hjälp som jag kan få!

Lägger in hur den ser ut nu en gång till. (Stod även i min uppgift att det skulle vara en do-while loop, därav gick jag tillbaka till det.

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

namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
Random rng = new Random();
int random_nr = rng.Next(1, 100); // Random number generator, rng.
int lap = 0; //Håller reda på antalet varv
Console.WriteLine("Hej! Du skall nu gissa ett tal mellan 1-100, lycka till!");
string userNrText;
userNrText = Console.ReadLine();
int UserNr = int.Parse(userNrText);
do
{
Console.ReadLine();
lap++;
if (UserNr < random_nr)
{
Console.WriteLine("För lågt tyvärr. Testa igen!" + " " + lap + " Försök gjorda");
}
else if (UserNr > random_nr)
{
Console.WriteLine("Nej det var för högt. Försök igen!" + " " + lap + " Försök gjorda");
}
else
{
Console.WriteLine("Helt rätt! Bra jobbat!" + lap + " " + " Försök gjorda");
}
} while (UserNr != random_nr);

}
}
}

Av widell_1992

Ändrade om lite och satte in det i en while loop, jag får inmatning att fungera. Men varje inmatning oavsätt hur stor triggar händelsen där nummret är för lågt. Ser ut såhär nu:

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

namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
Random rng = new Random();
int random_nr = rng.Next(1, 100); // Random number generator, rng.
int lap = 0; //Håller reda på antalet varv
Console.WriteLine("Hej! Du skall nu gissa ett tal mellan 1-100, lycka till!");
string userNrText;
userNrText = Console.ReadLine();
int UserNr = int.Parse(userNrText);
while (UserNr != random_nr)
{

lap++;
Console.ReadLine();
if (UserNr > random_nr)
{
Console.WriteLine("Nej det var för högt. Försök igen!");
}
else if (UserNr < random_nr)
{
Console.WriteLine("För lågt tyvärr. Testa igen!");
}
else
{
Console.WriteLine("Helt rätt! Bra jobbat!");
}
}
Console.ReadKey();
}
}
}

Av widell_1992

Jo försökte det nu, men då fastnade programmet efter att jag skrev in siffran.

Satt och kollade på en video där man gjorde en liknande uppgift och där användes en do while loop, har ingen riktig anledning utöver det.

Uppskattar hjälpen!

Av widell_1992

Hjälp med programmering 1, igen...

Hej! Sitter och försöker klura ut hur jag skall koda en loop som ger användaren möjlighet att gissa sig fram till en random genererat nummer. Jag har fastnat lite just nu på att få in rätt villkor i loopen, mer specifikt vet jag inte riktigt hur jag skall kunna använda Console.ReadLine inne i loopen samtidigt som den finns utanför för att då definiera vad villkoret som ligger i slutet.

Här är min kod hitils:

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

namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
Random rng = new Random();
int random_nr = rng.Next(1, 100); // Random number generator, rng.
int lap = 0; //Håller reda på antalet varv
Console.WriteLine("Hej! Du skall nu gissa ett tal mellan 1-100, lycka till!");
string userNrText;
userNrText = Console.ReadLine();
int UserNr = int.Parse(userNrText);

do
{
random_nr = rng.Next(1, 100);
lap++;
if (UserNr > random_nr)
{
Console.WriteLine("Nej det var för högt. Försök igen!");
}
else if (UserNr < random_nr)
{
Console.WriteLine("För lågt tyvärr. Testa igen!");
}
else
{
Console.WriteLine("Helt rätt! Bra jobbat!");
}
} while (UserNr != random_nr);
Console.ReadKey();
}
}
}

Av widell_1992

Stort tack, fick dett att fungera. Men mer viktigt vet nu hur jag fick det att fungera också. Sweclockers to the rescue!

Av widell_1992

Tack för hjälpen, har suttit lite för mycket idag tror jag. Fick bytt ut det till string och nu funkar första biten galant, ska bara lösa sista biten nu.

Av widell_1992

Väldigt basic programmering... hjälp!

Hej!

Jag har fått i uppgift att göra ett program som räknar ut tid kvar till pension i år, nedan är min kod. Felmedelandet som dyker upp är "System.FormatException:'input string was not in a correct format.'

Är lite förvirrad på vart formatet är fel, uppskattar all hjälp jag kan få!

namespace ConsoleApp3 { class Program { static void Main(string[] args) { Console.WriteLine("Hej! Nu är det dags att räkna ut din pension. Var god skriv in ditt förnamn"); string namn1; //Förnamn string namn2; //Efternamn string age; namn1 = Console.ReadLine(); //Inläsning i konsollen int first = int.Parse(namn1); //Konvertering från sträng till tal. Console.WriteLine("Skriv nu in ditt efternamn"); namn2 = Console.ReadLine(); int second = int.Parse(namn2); Console.WriteLine("Och sist men inte minst, skriv in din ålder."); age = Console.ReadLine(); int third = int.Parse(age); Console.WriteLine("Hej", " ", (first + " " + second), "Du har", " ", 100 - age, "år kvar till pension!"); // Uträkning av pensionsålder, 65 - ålder. Console.ReadKey(); } } }