Помощ - Търси - Регистрирани - Календар
Пълна версия: Проблем със "С".
UniBG Forums > Дискусии > Dexter's Lab > Програмиране
zxcxxcvvnvnmc
/
CODE
* Filename: C8PAY2.C
  Compute the full overtime pay possibilities */
#include <stdio.h>
main()
{
  int hours;
  float dt, ht, rp, rate, pay;

  printf("\n\nHow many hours were worked? ");
  // Enter whole numbers only
  scanf(" %d", &hours);
  printf("\nWhat is the regular hourly pay?");
  scanf(" %f", &rate);

  /* Compute pay here */
  /* Double-time possibility */
  if (hours > 50)
    { dt = 2.0 * rate * (float)(hours - 50);
      ht = 1.5 * rate * 10.0; } // Time + 1/2 for 10 hours
  else
    { dt = 0.0; }  // Either none or double for those hours over 50

  /* Time and a half */
  if ((hours > 40) && (hours <= 50))
     { ht = 1.5 * rate * (float)(hours - 40); }

  /* Regular Pay */
  if (hours >= 40)
    { rp = 40 * rate; }
  else
    { rp = (float)hours * rate; }

  pay = dt + ht + rp;   // Add up 3 components of payroll

  printf("\nThe pay is %.2f", pay);
  getch();
  return 0;
}

Някои може ли да ми я обясни.
Guest
По - точно проблема ми е : първо трябва да се изпълни първия if - случая когато стойността е над 50 - тя или се удвоява или -след else - не ; след това се се изпълнява случая ако стойността е между 40 и 50 ; а накрая ако стойнстта е по - голяма (или равна) на 40.
Но в крайна сметка след като си "проверя" програмата не ми излиза! pardon.gif
Narf
Аз не виждам смисъл от 3-тата проверка, при всички положения, освен 40, то в едната от предните 2 вече ще има изпълнено условие.
demond
greshkata ti e che ne inicializirash promenlivite (ili po-skoro ne ti a avtora na programata, kojto kakto si lichi po komentarite ne e bg), v rezultat na koeto ht ima sluchajna stojnost kogato hours <= 40
Guest
Аз я разбрах, първо се проверява дали числото е над 50 и ако да се удвоява - th и dt, а ако не , th е 0. След това се проверява дали числото е между 40 и 50 и ако да, сметката нарства 1.5 пъти, а ако не е се пресмята нормалната заплата коята е над или равна на 40 часа и - rp, а иначе се пресмята заслуженото по часовете.А най - накрая се изчислява общо заплатата.
Благодаря за коментарите!!:)
theBlackened
Да, но ако забелязваш ще се получи грешка, тъй като:
if ((hours > 40) && (hours <= 50))
{ ht = 1.5 * rate * (float)(hours - 40); }
няма else и ht няма да получи никаква стойност .. заради това ги има и грешките smile.gif
Guest
Това ще рече , че трябва на 'th' да се присвои 0 - th =0;.
Guest
т.е. на 'ht'.
Това е семпла версия на форума. За да видиш пълната версия, която има повече информация, по-добра подредба и снимки, натисни тук.
Invision Power Board © 2001-2008 Invision Power Services, Inc.