Datuve :: Forums :: Arhīvs :: c++ uzdevums

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 70

Reģistrētie lietotāji online: 0

Viesi online: 70

Datuve.lv video
Top.LV

c++ uzdevums

Ievietoja: pe4s @ 2011.10.17 19:06  

Kādā autostāvvietā minimālā maksa par auto novietošanu ir 2Ls. Gadījumā ja auto paliek stāvvietā ilgāk par 3 stundām, papildus jāmaksā 0,50Ls par katru stundu. Bet maksimāla diennakts maksa ir 10Ls. Jāuzraksta funkciju, lai ievadot stundu skaitu saņemtu maksu par autostāvvietu (pieņemsim ka neviens neatstāj mašīnu vairāk ka uz vienu diennakti).

Ir doma, ka varētu pielietot if, else funkcijas, bet kā lai pareizi pieraksta nosacījumus?

Komentāri:

#1 Whatever @ 2011.10.17 20:05

Ar ievadu/izvadu pats tiksi galā.

float saskaitiCenu(uint stundas)
{
  float cena = 2 + (stundas - 3) * 0.5;
  if (cena < 2) cena = 2;
  if (cena > 10) cena = 10;
  return cena;
}

P.S. Anti-spama filtrs atkal izceļas ar "saprātu". Viņam angliskie mainīgo nosaukumi nepatīk ("pr.ic.e").

#2 ob1 @ 2011.10.17 20:22

return min(10,max(2, 2 + (stundas - 3) * 0.5))

:)

#3 pe4s @ 2011.10.17 22:00

Pagaidām sanāca šādi:
#include <iostream>
using namespace std;

int main()
{
   double a;

   cout << "Ievadiet stundas: ";
   cin >> a;
   
   float x = 2 + (a - 3) * 0.5;
   
if (a <= 3)
{
     cout << "Maksa par autostavvietu: 2" << endl;
}
else if (a > 3)
{
    cout << "Maksa par autostavvietu: " << x << endl;
}
if (a > 19)
{
     cout << "Maksa par autostavvietu: 10" << endl;
}
   system ("pause");
   return 0;
}

Bet, neizpildās nosacījums, ka maksimālā diennakts cena ir 10ls.Jeb izpildās vienlaicīgi gan 2.nosacījums manā funkcijā, gan 3. Ja norādu stundas: 20, tad jābūt, ka vairs neizmanto formulu, bet izvada maksu par autostāvvietu: 10.

#4 jjanis @ 2011.10.17 22:58

Tev piedāvāja 2vus risinājumus, otrais ir vsp uuber, bet ko Tu, ņemies par saviem izvadiem, iemācies tac vienreiz valodas sintaksi un kkādus programmēšanas pamatus, citādāk Tu esi kā pavārs kurš tajā ka pīrāgi negaršīgi vaino karoti ar ko mīklu maisīja.!!!

#5 ob1 @ 2011.10.18 06:38

#3
tev streiko if loģika.

var rakstīt:
if (a<=3) {
...
} else if(a>19) {
...
} else {
...
}

#6 pe4s @ 2011.10.18 08:42

Nu nav jau uzreiz te jādi**, ka es tā un tā. Pagaidām es jau tikai mācos. Un neviens uzreiz jau nevar būt tāds PRO kā dažs labs.
P.S. thnx par palīdzību :)

#7 jjanis @ 2011.10.18 10:47

btw if (a<=3) ietver sevī arī a = 2.50, kas tiks izvadīt kā 2, tātad kļūda, pirmā no daudzajām... :) gl hf

#8 Whatever @ 2011.10.18 13:34

#7: nē, šoreiz tā ir Tava kļūda. :) pe4a kodā ar "a" ir apzīmētas stundas un ar "x" - cena.

Offtopic - ja es būtu skolotājs, par šādu mainīgo nosaukumu lietošanu es momentā liktu nesekmīgu atzīmi, bet laikam jau LV skolās tādas muļķības rekomendē..