Permalänk
Medlem

Programmeringsuppgift - Hjälp

Hej, har en uppgift i skolan som jag inte kan lösa och behöver lite hjälp. OBS, söker endast hjälp inte att ni löser den till mig har bara ingen aning hur jag ska börja. Tips inte lösningar

Uppgiften går så här:

Skriv ett program som tar emot en kund i taget med alla sina brev. Efter att man har vägt brevet måste priset informeras och hur många frimärken per brev. Sen tar man nästa brev av samma kund. Osv.

Sluta med kunden efter att han har fått in alla sina brev. Säg totalt belopp per kund och antal frimärken.

Dagen fortsätter med att ta emot kund efter kund. I slutet måste programmet informera om hur många kunder som har kommit till kontoret, hur många frimärken såldes och total försäljning i kronor.

Använd listor för den här uppgift. Se nedan portotabellen.

Max vikt i gram---------------------------Pris---------------------------Antal valörlösa frimärken----------------------
-----------50------------------------------------------9,00------------------------------------------------1--------------------------------------------
---------100---------------------------------------- 18,00 --------------------------------------------- 2--------------------------------------------
---------250-----------------------------------------36,00-----------------------------------------------4--------------------------------------------
---------500-----------------------------------------54,00-----------------------------------------------6--------------------------------------------
-------1000-----------------------------------------72,00-----------------------------------------------8--------------------------------------------
-------2000 ----------------------------------------90,00----------------------------------------------10--------------------------------------------

Permalänk
Medlem

@Timjan13: Ingen kommer göra din uppgift åt dig. Du får försöka själv först och sedan fråga om specifika problem du får.

Permalänk
Medlem

@Timjan13: Vad är det du behöver hjälp med? Ingen kommer att lösa hela uppgiften åt dig och de som har gett dig uppgiften skulle inte bli så glada över att se folk fråga om lösningar på hela uppgiften på nätet.

Permalänk
Medlem

@ToddTheOdd: jag fråga efter hjälp inte att ni löser det till mig

Permalänk
Medlem

@MrPasty: jag behöver hjälp, inte lösningarna

Permalänk
Medlem

@Timjan13: Hjälp med vad? Du har ju inte visat vad du har gjort själv hittills och ställt någon specifik fråga. Klarar du inte ens av att skriva en enda rad kod själv så ska du nog inte hålla på med det här. Men jag kan ge dig lite hjälp. Int i=0;

Permalänk
Medlem
Skrivet av Timjan13:

@ToddTheOdd: jag fråga efter hjälp inte att ni löser det till mig

Så... Vad är det du behöver hjälp med?
Hade detta vart postat på stackoverflow så hade du knappast fått såhär pass lindriga kommentarer 😅

Du har gett oss en uppgift men ingen fråga kopplad till den.
Är det hur du ska tänka? Isf har väl uppgiften förklarat det med att använda listor - det antar jag att ni nu gått igenom på kursen.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem

Vilket språk handlar det om?

Visa hur långt du har kommit, sen kan vi hjälpa dig när du har kört fast.

Visa signatur

i7 4790k | Asus Z97M-Plus | 16gb ram | Asus Strix 970 | Phanteks PH-TC12DX | Samsung 850 Evo 250gb | Corsair Force GS 120gb | Fractal Design Integra M 650w | Fractal Design Define Mini C

Permalänk
Medlem

Börja enkelt och strunta i detaljer som listan t ex. Dela upp uppgiften i små steg som du sedan bygger vidare på.

Tänk vad är det som händer? Folk kommer en efter en med brev. Börja där. Gör en slinga/loop som frågar ”Nästa! Hur mång brev?” Kunden svarar med ett nummer som matas in. Spara i variabeln noOfLetters. ”Nästa! Hur många brev?” osv om och om igen.

När det funkar och du har kört programmet i debuggern och ser att noOfLetters får nytt värde för varje ny kund är det dags att tänka på nästa steg. Hint: En ny loop som loopar noOfLetters gånger.

Detta är givetvis bara ett förslag. En kan givetvis tänka sig att kunden inte vet hur många brev den har utan bara lämnar in brev efter brev tills de tar slut. Då kommer loopen se lite annorlunda ut, men det kommer att loopas lika fullt!

Lycka till!

Permalänk

Bra svar ovan.

Jag hade börjat med att försöka modellera upp mina klasser (om man nu kör objektorienterat) och försökt lista ut vilka egenskaper och beteende som är viktiga i "flödet".

Därefter kan du börja med att skriva själva logiken.

Hen skriver ju faktiskt "har bara ingen aning hur jag ska börja".

Permalänk
Medlem

Ge TS ett break. Helt onödigt att gödsla med elaka kommentarer.

Till TS;
Vilket språk?
Håller ni på att lära er något speciellt, typ hur man använder arrayer? For loopar? While loopar?
Funktioner?

Funktion Frimärksantal(vikt)
Om vikt>2000 returnera fel
Om vikt>1000 returnera 10
Om vikt>500 returnera 8
osv....
End Funktion
En vettig funktion att börja med är en som ger antal frimärken om den får vikt.

Permalänk
Medlem

Ta papper och penna.
Tänk på hur du manuellt hade gjort steg för steg för att lösa problemet.
Skriv ner substantiv och verb och tänk vilka egenskaper dessa har. Dessa kommer att bli dina modeller och funktioner som behövs. Försök tänka abstrakt, inte hur det ska fungera i kod i detta stadie.

Börja att koda då du känner att du har en god övergripande blick. Börja smått och lös en del i taget, fokusera inte på hela uppgiften direkt.

Skickades från m.sweclockers.com

Permalänk
Medlem

@Timjan13: ajdå TTE2C lmao

Permalänk

Som ovanstående skrev så kan det vara klokt att börja med att skriva ner programmet i pseudokod. Eftersom att du har priset och antalet frimärken per vikt så är det inte svårare än att börja skapa några if/else för varje villkor. Typ:

Fråga kunden om antalet brev Kunden anger antalet For-loop som loopas [antalet] gånger Vid varje loop anges en vikt if (vikt > 0 && vikt <= 50) { Skriv ut "Kostnad: 9 kr, Antal frimärken: 1" kundensAntalFrimärken += 1; kundensBelopp += 9; } else if (vikt > 50 && vikt <= 100) { Skriv ut "Kostnad: 18 kr, Antal frimärken: 2" kundensAntalFrimärken += 2; kundensBelopp += 18; } [osv...]

När for-loopen har körts igenom och kunden har vägt samtliga brev:

Skriv ut kundensBelopp Skriv ut kundensAntalFrimärken //Spara sedan ner infon som ska visas upp vid dagens slut totalAntalKunderFörDagen ++ totalFörsäljningFörDagen += kundensBelopp totaltAntalFrimärkenFörDagen += kundensAntalFrimärken

Förlåt för den förvirrande fulkoden, men är själv ganska färsk på det här så ville mest skriva ner mina tankar. Någon får gärna rätta mig om jag är ute och cyklar.

Edit: Missade att uppgiften behöver listor. Vad exakt ska sparas ner i listorna?

Permalänk
Medlem
Skrivet av Oh Geesus:

Edit: Missade att uppgiften behöver listor. Vad exakt ska sparas ner i listorna?

T.ex. Kund-objekt som i sin tur innehåller en lista med Brev-objekt.

public class Letter{ public decimal Weight { get; set; } } public class Customer { public List<Letter> Letters { get; set; } public Customer() { int letterCount = Random.Next(); // typ for(int j = 0; j < letterCount; j++) { Letters.Add(new Letter () { Weight = Random.Next() }); } } } ... var customers = new List<Customer>(); ... // Läs in användarens input (hur många kunder som ska skapas) for(int i = 0; i < inputCount; i++){ customers.Add(new Customer()); } int totalCost = 0; foreach(var cust in customers){ foreach(var letter in cust.Letters){ // Kolla letter.Weight och öka totalCost med kostnaden för brevet. // T.ex.: if(letter.Weight >= 50 && letter.Weight < 100) { totalCost += 9; } } } // Skriv ut totalCost

Skrev på mobilen så ursäkta eventuella felskrivningar. Men det där är ett sätt att använda listor på för detta

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Moderator
Moderator

Synd att några har taggarna utåt som utgångsläge och kanske i sin hast missar delar av frågan där en lösning inte efterfrågats, men känns hur som helst jäkligt respektlöst att be om hjälp och sen förstöra tråden när folk ändå försökt.

*Trådstart återställd och låst tills vidare.

Visa signatur

*-<|:C-<-<

Nytt namn, samma bismak.