Vinnaren i pepparkakshustävlingen!
2022-10-25, 08:59
  #1
Medlem
Har problem med skol uppgift. I C# inom (Console Application)
Uppgiften r att man ska skriva in pris och och kostand sedan ska det komma upp vilken vxel man fr tillbaka tillbaka i 20, 50, eller 100 sedlar.
.
Exempelvis
Man skriver in Pris 240;
Och Betala 95:

Din Vxel tillbaka 140kr
Vill du ha det i
1 100lap
2 tjugo lapp
Tnker om man ska gra en if stas samt ngon for loop.
Typ s hr
Ngon som vet??-.


int pris;
int betala;
int hundra = 100;
int femtio = 50;
int tvhundra = 200;
int tjugo = 20;
Console.WriteLine("Ange pris");
pris = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" betalt?");
betala = Convert.ToInt32(Console.ReadLine());
int summa = pris - betala;
Console.WriteLine(" din vxle tillbaka r " + summa);
Citera
2022-10-25, 10:01
  #2
Medlem
Anvnd dig av modulooperatorn och division.
Ex, antag att beloppet som ska terbetalas r 362. Brja med hga belopp och arbeta dig nedt.
362/100=3.62, avrunda nedt till 3. Nu mste du veta hur mycket som finns kvar efter att du lmnat tillbaka 300 kr. D anvnder du dig av modulo.
362%100=62, det nya beloppet du arbetar med r allts 62 kr.
Upprepa fr resterande sedlar och mynt.
62/50=1.24, dvs 1st 50-lapp
62%50=12

12/20=0
12%20=12

12/10=1.2
12%10=2

2/2=1
2%2=0

Resultatet blir d 3 hundralappar, 1 femtiolapp, 1 tiokrona och 1 tvkrona
Citera
2022-10-25, 18:24
  #3
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Crazy Man Krill
Anvnd dig av modulooperatorn och division.
Ex, antag att beloppet som ska terbetalas r 362. Brja med hga belopp och arbeta dig nedt.
362/100=3.62, avrunda nedt till 3. Nu mste du veta hur mycket som finns kvar efter att du lmnat tillbaka 300 kr. D anvnder du dig av modulo.
362%100=62, det nya beloppet du arbetar med r allts 62 kr.
Upprepa fr resterande sedlar och mynt.
62/50=1.24, dvs 1st 50-lapp
62%50=12

12/20=0
12%20=12

12/10=1.2
12%10=2

2/2=1
2%2=0

Resultatet blir d 3 hundralappar, 1 femtiolapp, 1 tiokrona och 1 tvkrona

Om man delar tv heltal med varandra s blir det vl i C# automatiskt en heltalsdivison varfr avrundning nedt inte behvs?
Citera
2022-10-26, 08:22
  #4
Medlem
Citat:
Ursprungligen postat av Crazy Man Krill
Anvnd dig av modulooperatorn och division.
Ex, antag att beloppet som ska terbetalas r 362. Brja med hga belopp och arbeta dig nedt.
362/100=3.62, avrunda nedt till 3. Nu mste du veta hur mycket som finns kvar efter att du lmnat tillbaka 300 kr. D anvnder du dig av modulo.
362%100=62, det nya beloppet du arbetar med r allts 62 kr.
Upprepa fr resterande sedlar och mynt.
62/50=1.24, dvs 1st 50-lapp
62%50=12

12/20=0
12%20=12

12/10=1.2
12%10=2

2/2=1
2%2=0

Resultatet blir d 3 hundralappar, 1 femtiolapp, 1 tiokrona och 1 tvkrona

menar du typ shr?, fr det funkar inte om gr detta

Console.WriteLine("vad vill du betala");
int betala = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" ange ditt pris");
int pris = Convert.ToInt32(Console.ReadLine());

int suma = betala - pris; // resten av summa


int tvhundra = suma / 200;
int next = suma % 200;


int hundra1 = next / 100;
int hundra2 = next % 100;



int femtio = hundra2 / 50;
int femtio2 = hundra2 % 50;

int tjugo = femtio2 / 20;
int tju2 = femtio2 % 20;



Console.WriteLine("Din vxel tillbaka i tvhundra" + next + "\n " + "och i hundra " + hundra2 + "\n " + " i femtio " + femtio2 + "\n");
Citera
2022-10-26, 12:42
  #5
Medlem
Grundidn r korrekt. Jag tror att du antingen snubblar p att dina variabelnamn r otydliga eller p att du inte r helt med rent matematiskt varfr du gr som du gr.
Du initierar variablerna korrekt men nr du senare printar ut dem, har du blandat ihop det.

Kod:
int tvhundra = suma / 200;  //Du anvnder variabeln tvhundra fr att berkna antal tvhundralappar
int next = suma % 200;   // Du anvnder next som resterande belopp efter att du dragit av tvhundralapparna
.
.
// Men nr du printar antal tvhundralappar, s skriver du ut restdelen
Console.WriteLine("Din vxel tillbaka i tvhundra" + next + "\n " + "och i hundra " + hundra2 + "\n " + " i femtio " + femtio2 + "\n"); 

Om du hade debuggat din kod och kollat vrdet p alla dina variabler, s borde du upptckt var problemet uppsttt. Jag vet inte om ni brjat titta p debuggern i er kurs. Om inte s kan jag rekommendera att du testar att anvnda dig av den. Jag har aldrig kodat C# s jag har dlig koll p vilka sidor som gller, men det finns garanterat en hel del bra hemsidor p ntet som frklarar hur den fungerar.
Om du inte har den matematiska grunden att st p s kan sdana hr problem vara knepiga att lsa.

Nedan fljer en korrigering av din kod (med lite svngigare formattering i terminalen)
Kod:
Console.WriteLine("Varornas kostnad: ");
		int price = Convert.ToInt32(Console.ReadLine());
		Console.WriteLine("Belopp verlmnat: ");
		int paid = Convert.ToInt32(Console.ReadLine());
		
		int rest = paid - price; 
		
		//	Antal tvhundralappar
		int twohundreds = rest / 200;
		//	Rest, efter att beloppet fr tvhundralapparna r avdraget
		rest = rest%200;
		
		//	Antal hundralappar att ge tillbaka
		int hundreds = rest / 100;
		rest = rest % 100;
		
		int fifty = rest / 50;
		rest = rest % 50;

		int twenty = rest / 20;
		rest = rest % 20;

		int tens = rest / 10;
		rest = rest % 10;
		
		int fives = rest / 5;
		rest = rest % 5;

		int twos = rest / 2;
		rest = rest % 2;
		
		//	Enkronorna kommer endast vara resten
		int ones = rest;
		
		if(twohundreds+hundreds+fifty+twenty+tens+fives+twos+ones==0){Console.WriteLine("Jmt skgg, ingen vxel!");}
		else{
			Console.WriteLine("Din vxel:");
			if(twohundreds!=0){Console.WriteLine(twohundreds + "st tvhundralappar");}
			if(hundreds!=0){Console.WriteLine(hundreds + "st hundralappar");}
			if(fifty!=0){Console.WriteLine(fifty + "st femtiolappar");}
			if(twenty!=0){Console.WriteLine(twenty + "st tjugolappar");}
			if(tens!=0){Console.WriteLine(tens + "st tiokronor");}
			if(fives!=0){Console.WriteLine(fives + "st femkronor");}
			if(twos!=0){Console.WriteLine(twos + "st tvkronor");}
			if(ones!=0){Console.WriteLine(ones + "st enkronor");}
		}
Citera
2022-10-26, 12:51
  #6
Medlem
Citat:
Ursprungligen postat av Crazy Man Krill
Grundidn r korrekt. Jag tror att du antingen snubblar p att dina variabelnamn r otydliga eller p att du inte r helt med rent matematiskt varfr du gr som du gr.
Du initierar variablerna korrekt men nr du senare printar ut dem, har du blandat ihop det.

Kod:
int tvhundra = suma / 200;  //Du anvnder variabeln tvhundra fr att berkna antal tvhundralappar
int next = suma % 200;   // Du anvnder next som resterande belopp efter att du dragit av tvhundralapparna
.
.
// Men nr du printar antal tvhundralappar, s skriver du ut restdelen
Console.WriteLine("Din vxel tillbaka i tvhundra" + next + "\n " + "och i hundra " + hundra2 + "\n " + " i femtio " + femtio2 + "\n"); 

Om du hade debuggat din kod och kollat vrdet p alla dina variabler, s borde du upptckt var problemet uppsttt. Jag vet inte om ni brjat titta p debuggern i er kurs. Om inte s kan jag rekommendera att du testar att anvnda dig av den. Jag har aldrig kodat C# s jag har dlig koll p vilka sidor som gller, men det finns garanterat en hel del bra hemsidor p ntet som frklarar hur den fungerar.
Om du inte har den matematiska grunden att st p s kan sdana hr problem vara knepiga att lsa.

Nedan fljer en korrigering av din kod (med lite svngigare formattering i terminalen)
Kod:
Console.WriteLine("Varornas kostnad: ");
		int price = Convert.ToInt32(Console.ReadLine());
		Console.WriteLine("Belopp verlmnat: ");
		int paid = Convert.ToInt32(Console.ReadLine());
		
		int rest = paid - price; 
		
		//	Antal tvhundralappar
		int twohundreds = rest / 200;
		//	Rest, efter att beloppet fr tvhundralapparna r avdraget
		rest = rest%200;
		
		//	Antal hundralappar att ge tillbaka
		int hundreds = rest / 100;
		rest = rest % 100;
		
		int fifty = rest / 50;
		rest = rest % 50;

		int twenty = rest / 20;
		rest = rest % 20;

		int tens = rest / 10;
		rest = rest % 10;
		
		int fives = rest / 5;
		rest = rest % 5;

		int twos = rest / 2;
		rest = rest % 2;
		
		//	Enkronorna kommer endast vara resten
		int ones = rest;
		
		if(twohundreds+hundreds+fifty+twenty+tens+fives+twos+ones==0){Console.WriteLine("Jmt skgg, ingen vxel!");}
		else{
			Console.WriteLine("Din vxel:");
			if(twohundreds!=0){Console.WriteLine(twohundreds + "st tvhundralappar");}
			if(hundreds!=0){Console.WriteLine(hundreds + "st hundralappar");}
			if(fifty!=0){Console.WriteLine(fifty + "st femtiolappar");}
			if(twenty!=0){Console.WriteLine(twenty + "st tjugolappar");}
			if(tens!=0){Console.WriteLine(tens + "st tiokronor");}
			if(fives!=0){Console.WriteLine(fives + "st femkronor");}
			if(twos!=0){Console.WriteLine(twos + "st tvkronor");}
			if(ones!=0){Console.WriteLine(ones + "st enkronor");}
		}

tusen Tack fr hjlpen nu fattar jag vad exakt du menar. de var ju varialberna som jag fastande p
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in