Programmering A uppg. (hjälp)

Permalänk
Medlem

Programmering A uppg. (hjälp)

Hej!
Jag fick en uppg. av min lärare i programmering A. Kursen ska vara relativ lätt men jag har fastnat på en "överkurs uppg." och behöver därför er hjälp för att lösa den.

Programmet ska fråga efter följande:
Vad är vägskatten per år för bil A?
Hur mycket bränsle förbrukar bil A per / mil ?
Vad kostar bränslet till bil A per / L ?

Vad är vägskatten per år för bil B?
Hur mycket bränsle förbrukar bil B per / mil ?
Vad kostar bränslet till bil B per / L ?

Hur många mil ska du köra under ett år?

Utifrån dessa frågorna ska sedan programmet beräkna vilken bil som är billigast att äga under ett år. Svaret ska bli "Bil x det billigaste alternativet". Glöm inte att ta med vägskatten i beräkningen, den kan variera mycket mellan olika bilar. Kör man lite per år så får skatten en stor procentuell betydelse.

DETTA har jag klarat av, hur enkelt som helst men det är överkus uppg. som kommer nu som jag och alla andra har problem med.

---> Utöka ditt program så att jag kan få reda på vid vilket ungefärligt miltal är bilarna lika ekonomiska att äga? Låt ditt program testa om det finns en sådan brytpunkt. <---

Där har ni uppg. Det enda jag vet är att man ska använda sig av "while" och "If"
Här är min kod hittills!

#include <cstdlib> #include <iostream> #include <iomanip> using namespace std; int main(int argc, char *argv[]) { double vagskatt, liter, kronor, bil; cout << "Vad \x84r v\x84gskatten per \x86r f\x94r bil A? "; cin >> vagskatt; cout << "Hur mycket br\x84nsle f\x94rbrukar bil A per mil? "; cin >> liter; cout << "Vad kostar br\x84nslet till bil A per liter? "; cin >> kronor; cout << "" << endl; double vagskatt2, liter2, kronorb, bil2, mil; cout << "Vad \x84r v\x84gskatten per \x86r f\x94r bil B? "; cin >> vagskatt2; cout << "Hur mycket br\x84nsle f\x94rbrukar bil B per mil? "; cin >> liter2; cout << "Vad kostar br\x84nslet till bil B per liter? "; cin >> kronorb; cout << "" << endl; cout << "Hur m\x86nga mil ska du k\x94ra undet ett \x86r? "; cin >> mil; bil2=liter2*kronorb*mil+vagskatt2; bil=liter*kronor*mil+vagskatt; if (bil<bil2){ cout << "Bil A \x84r billigare!" << endl; } else{ cout << "Bil B \x84r billigare!" << endl; }

Nu behöver jag bara er hjälp för att lösa den andra uppgiften! Tack i förhand.

Permalänk
Medlem

Du ska hitta den punkt då liter2*kronorb*mil+vagskatt2 = liter*kronor*mil+vagskatt, mil är okänd.

Förutsatt att du kan matte borde du enkelt kunna bryta ut mil ur ekvationen. Men riktigt så mycket tänker jag inte göra åt dig

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk

Läraren menar att du i while-loopen sakta ska öka antalet mil tills kostnaderna för antalet mil blir ungefär lika stora. Ju mindre ökning du gör, ju bättre resultat får du, men ju fler loppar behövs göra.
Jag tycker en for-loop är mer praktisk för detta problem, men en whileloop fungerar såklart också.

jdv pratar om att matematisk räkna ut resultatet, detta bör du såklart göra och påpeka att denna lösning är bättre. Men läraren vill nog att du ändå löser problemet "det dumma sättet" också, för att visa dina kunskaper inom programmering.

Visa signatur

[Core i7-3930K med 32GB ram, 2*256GB SSD] & [Core i7 3770K med 16 GB RAM, 256GB SSD] som tillsammans har ett [HD 5850 1GB] och 3st 24".

Permalänk
Medlem
Skrivet av bud_bundy:

Läraren menar att du i while-loopen sakta ska öka antalet mil tills kostnaderna för antalet mil blir ungefär lika stora. Ju mindre ökning du gör, ju bättre resultat får du, men ju fler loppar behövs göra.
Jag tycker en for-loop är mer praktisk för detta problem, men en whileloop fungerar såklart också.

jdv pratar om att matematisk räkna ut resultatet, detta bör du såklart göra och påpeka att denna lösning är bättre. Men läraren vill nog att du ändå löser problemet "det dumma sättet" också, för att visa dina kunskaper inom programmering.

Problemet är bara att jag gjorde lite i skolan men programmet strular och får konstiga värden. Med konstiga värden menar jag att ifall bil A kostar x och B kostar y så får man ett "brytningsvärde" men ifall man byter plats på värdena så bil a kostar y och bil B kostar x får jag ett annat värde vilket det egentligen inte borde ske... Ifall jag skriver in så både bil a och bil b kostar lika mycket får jag svaret att de kostar lika mycket vilket det ska göra. Förstår inte varför det blir så.

Kan tyvärr inte skicka den koden eftersom att programmet är sparat på mitt inlogg i skolan (lägger in det imorgon). Ska testa med for satsen och se ifall det ger bättre resultat.

Permalänk
Skrivet av RamoM:

Problemet är bara att jag gjorde lite i skolan men programmet strular och får konstiga värden. Med konstiga värden menar jag att ifall bil A kostar x och B kostar y så får man ett "brytningsvärde" men ifall man byter plats på värdena så bil a kostar y och bil B kostar x får jag ett annat värde vilket det egentligen inte borde ske... Ifall jag skriver in så både bil a och bil b kostar lika mycket får jag svaret att de kostar lika mycket vilket det ska göra. Förstår inte varför det blir så.

Kan tyvärr inte skicka den koden eftersom att programmet är sparat på mitt inlogg i skolan (lägger in det imorgon). Ska testa med for satsen och se ifall det ger bättre resultat.

Att brytningsvärdet ej blir samma betyder inte att det nödvändigtvis är något fel, lösningen som du gör är en numerisk och resultatet påverkas av storleken på stegen (antalet iterationer, upprepningar) Resultatet ska dock inte skilja sig mycket.
Mitt tips är att lär dig att debugga eller kör åtminstone med fulmetoden genom att skriva ut resultateten i consolen, ta sedan fram pappret och pennan och räkna ut vilka värden som variablerna ska ha och jämför.
*EDIT*

Om du använder använder dig av någon funktion som gör om talet till positivt i jämförelsen, borde dock resultatet bli detsamma.

Visa signatur

[Core i7-3930K med 32GB ram, 2*256GB SSD] & [Core i7 3770K med 16 GB RAM, 256GB SSD] som tillsammans har ett [HD 5850 1GB] och 3st 24".

Permalänk
Medlem
Skrivet av bud_bundy:

Om du använder dig av någon funktion som gör om talet till positivt i jämförelsen, borde dock resultatet bli detsamma.

Vilket jag gör. Sen kan man göra att de inte skär varandra i den positiva delen av ett x och y diagram. If you get it. Då ballar den ut.

Tycker detta var en dum uppgift men han sa faktiskt att det var en svår uppgift och man behöver inte göra den ifall man inte vill. Men man vill ju ändå göra det för att visa hur duktig man är