Behöver hjälp me en skoluppgift C#

Permalänk

Behöver hjälp me en skoluppgift C#

31 Vi antar att följande skattesystem gäller:
a) Inkomster under 10 000:- beskattas inte.
b) För inkomster på 10 000 och mer är grundskatten alltid 50%.
c) För inkomster under 50 000 ges ett skatteavdrag på 5 000:-.
d) För inkomster över 100 000 får man ett extra skattetillägg på 20% av den del som överstiger 100 000.
Skriv ett program som ber användaren mata in sin inkomst och beräknar och skriver ut den totala skatten.

//deklaration
double dInkomst, dSkatt;
string sInkomst, sSkatt;

//inmatning
Console.WriteLine ("Mata in din inkomst:" );
sInkomst = Console.ReadLine();
dInkomst=double.Parse(sInkomst);

sSkatt = Console.ReadLine();
dSkatt = double.Parse(sSkatt);
//if sats
if (dInkomst < 10.000)
{
Console.WriteLine("din inkomst är mindre än 10.000 och darfor skattefri");
}
else if (dInkomst >= 10.000)
dSkatt = (dInkomst * 0.5) - 5000;

{
Console.WriteLine("Din inkomst är :" + sInkomst + " du betalar i skatt" + sSkatt + " Din brutto inkomst är " + (dInkomst - dSkatt));

När jag matar in ett värde så kan ja inte fortsätta den låser sig

Permalänk
Medlem

Ett enkelt sätt att debugga, testa att lägga in utskrifter lite här och var (i princip efter varje rad), för att få lite vägledning om var det hänger sig.

Edit: Och slå ett öga här:
http://stackoverflow.com/questions/17762307/console-readline-...
Framförallt första svaret, och hur double.TryParse används.

Permalänk
Medlem

static void Main(string[] args)
{
double skatt = 0 , inkomst = 0;

System.Console.WriteLine("Mata in inkomst: ");
try {
Double.TryParse(System.Console.ReadLine(), out inkomst);

if (inkomst < 10000)
{
System.Console.WriteLine("Ingen skatt inkomst < 10000");
}
else
{
skatt = inkomst * 0.5;

if (inkomst < 50000)
{
skatt -= 5000;
}
else if(inkomst > 100000)
{
skatt += (inkomst - 100000) * 0.20;
}
}
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}
System.Console.WriteLine("Din totala skatt: " + skatt);
System.Console.ReadLine();
}
}

Visa signatur

CPU: Intel Core i7 2600k MB: MSI P67A-GD65 GPU: EVGA GTX 780 Classified Sli RAM: Corsair Vengance 1600MHz 16GB SSD: Samsung EVO 240GB Samsung 850 Pro 256GB PSU: Corsair HX 750W Chassi: Corsair Obsidian 750D Kylning: Custom loop OS: Windows 8.1 Pro

Permalänk
Medlem
Skrivet av BennyBulan:

31 Vi antar att följande skattesystem gäller:
a) Inkomster under 10 000:- beskattas inte.
b) För inkomster på 10 000 och mer är grundskatten alltid 50%.
c) För inkomster under 50 000 ges ett skatteavdrag på 5 000:-.
d) För inkomster över 100 000 får man ett extra skattetillägg på 20% av den del som överstiger 100 000.
Skriv ett program som ber användaren mata in sin inkomst och beräknar och skriver ut den totala skatten.

//deklaration double dInkomst, dSkatt; string sInkomst, sSkatt; //inmatning Console.WriteLine ("Mata in din inkomst:" ); sInkomst = Console.ReadLine(); dInkomst=double.Parse(sInkomst); sSkatt = Console.ReadLine(); dSkatt = double.Parse(sSkatt); //if sats if (dInkomst < 10.000) { Console.WriteLine("din inkomst är mindre än 10.000 och darfor skattefri"); } else if (dInkomst >= 10.000) dSkatt = (dInkomst * 0.5) - 5000; { Console.WriteLine("Din inkomst är :" + sInkomst + " du betalar i skatt" + sSkatt + " Din brutto inkomst är " + (dInkomst - dSkatt));

När jag matar in ett värde så kan ja inte fortsätta den låser sig

Skrivet av ghanoush:

static void Main(string[] args) { double skatt = 0 , inkomst = 0; System.Console.WriteLine("Mata in inkomst: "); try { Double.TryParse(System.Console.ReadLine(), out inkomst); if (inkomst < 10000) { System.Console.WriteLine("Ingen skatt inkomst < 10000"); } else { skatt = inkomst * 0.5; if (inkomst < 50000) { skatt -= 5000; } else if(inkomst > 100000) { skatt += (inkomst - 100000) * 0.20; } } } catch (Exception e) { System.Console.WriteLine(e.Message); } System.Console.WriteLine("Din totala skatt: " + skatt); System.Console.ReadLine(); } }

Tips: Sätt [code][/code] runt er kod så blir det lättare att läsa den

Visa signatur

| EVGA Z170 FTW | i7 6700k | ASUS RTX 3070 | 16GB DDR4 3200MHz | Cooler Master V850 | Samsung 840 Evo 250GB + 2x WD Black 500GB + Seagate 2TB SSHD + Samsung 970 Evo M.2 1TB|

Permalänk
Medlem
Skrivet av ghanoush:

Säkert en alldeles utmärkt lösning, men tycker nog vi ska ge honom chansen att lösa sin skoluppgift själv, med lite pekpinnar i rätt riktning

Permalänk
Medlem
Skrivet av jaqob:

Säkert en alldeles utmärkt lösning, men tycker nog vi ska ge honom chansen att lösa sin skoluppgift själv, med lite pekpinnar i rätt riktning

Sant. Ska endast komma med tips i fortsättningen =D

Visa signatur

CPU: Intel Core i7 2600k MB: MSI P67A-GD65 GPU: EVGA GTX 780 Classified Sli RAM: Corsair Vengance 1600MHz 16GB SSD: Samsung EVO 240GB Samsung 850 Pro 256GB PSU: Corsair HX 750W Chassi: Corsair Obsidian 750D Kylning: Custom loop OS: Windows 8.1 Pro

Permalänk

Tack så hemskt mycke. Ganush o jaqob ja ska kolla stackflow.com me ja måste ändå förstå vad jag gör, kommer ju ha tenta så jag måste fatta vad jag gör. men om ja förstod rätt så måste man parsa double på ett spec sätt och det är Double.TryParse(System.Console.ReadLine(), out inkomst);
eller ?

Permalänk
Skrivet av BennyBulan:

Tack så hemskt mycke. Ganush o jaqob ja ska kolla stackflow.com me ja måste ändå förstå vad jag gör, kommer ju ha tenta så jag måste fatta vad jag gör. men om ja förstod rätt så måste man parsa double på ett spec sätt och det är Double.TryParse(System.Console.ReadLine(), out inkomst);
eller ?

try{
//Om något går fel inne här hoppar programmet till catch (Exception e)

Double.TryParse(System.Console.ReadLine(), out inkomst); // alltså om de inte går att få in inmatningen i inkomst, skrivs felmed. ut

}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}

Permalänk
Medlem
Skrivet av BennyBulan:

Tack så hemskt mycke. Ganush o jaqob ja ska kolla stackflow.com me ja måste ändå förstå vad jag gör, kommer ju ha tenta så jag måste fatta vad jag gör. men om ja förstod rätt så måste man parsa double på ett spec sätt och det är Double.TryParse(System.Console.ReadLine(), out inkomst);
eller ?

Du använder Double.TryParse för att ta reda på om det som skrevs in är en giltig double eller inte.
Är det giltigt så använd värdet, är det ogiltigt får du fråga användaren igen, eller avbryta körningen.

Här ser du definitionen (den retunerar en bool).
http://msdn.microsoft.com/en-us/library/994c0zb1(v=vs.110).as...

Permalänk

Tack så hemskt mycke alla nu har ja lärt mig överkurs. me try o tryparse o catch läraren godkände det inte även om ja kunde förklara *Grymt forum!!! men jag löste det på ett annat sätt till slut för vi har inte komit så långt i skolan om ni är nyfikna så ser de ja skrev ut så här :
string sInkomst;
double dInkomst;
const double dHogInkomst = 0.2;

Console.WriteLine("Mata in inkomst: ");
sInkomst = Console.ReadLine();
dInkomst = double.Parse(sInkomst);

if (dInkomst < 10000)
{
Console.WriteLine("Beskattas ej");
}
else if ((dInkomst >= 10000) && (dInkomst < 50000))
{
Console.WriteLine("Den totala skatten är: " + (dInkomst / 2 - 5000));
}
else if ((dInkomst >= 50000) && (dInkomst <= 100000) || (dInkomst == 100000))
{
Console.WriteLine("Den totala skatten är: " + (dInkomst / 2));
}
else if (dInkomst > 100000)
{
Console.WriteLine("Den totala skatten är: " + ((dInkomst - 100000) * dHogInkomst + 50000));

Permalänk

Tack än en ggn alla

Permalänk
Medlem

Är det någon som använder "[CODE]" taggar i det här forumet?