Базовая помощь в программировании на C - PullRequest
0 голосов
/ 19 мая 2011

Эй, мне нужна помощь в написании простой программы.Я хочу быть в состоянии продемонстрировать использование целых чисел и остатков, используя модуль.Я застрял в том, как я должен рассчитать информацию.Любая помощь будет высоко ценится, но вот общая идея.Программа включает в себя следующее:

1 week = 40 hours ($200 per week)
1 day = 7 hours   ($45 per day)
                  ($2 per hour)

Пример выполнения:

Enter the total hours:59 (59 is just an example.)
You have:
         1week
         2day(s)
         5hr(s)
Payment: $300.00

Вот что я придумала до сих пор ...

int main(){

   int totalWeekHrs = 0,
   totalDayHrs = 0,
   totalWorkedHrs = 0;

   float totalPayment = 0,
     payPerWeek = 0,
     payPerDay = 0,
     PayPerHr = 0;

   // Input process   
   printf("Enter the total hours :");
   scanf("%i",&totalWeekHrs,&totalDayHrs,&totalWorkedHrs);

  // Calculative process

system("pause");    
}

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Это пахнет домашней работой, поэтому я объясню, как работает модуль.

Оператор модуля% выполняет целочисленное деление и возвращает остаток.Например:

int foo = 6;
int bar = 4;
int remainder = foo % bar;

В этом примере для remainder будет установлено значение 2.

Подробнее об операторе модуля можно прочитать здесь .

0 голосов
/ 19 мая 2011

Я не буду отвечать на ваш вопрос с помощью кода, так как это похоже на домашнюю работу. Вы также остановились, когда вы действительно должны начать кодировать!

Проблема в другом типе вопроса типа "возврат возврата". Это активный алгоритм, который пытается решить задачу с помощью самого большого шага, который он может сделать.

Вы должны иметь два вектора paralell:

{ 40,   7, 1 }  // hours worked (week, day, hour)
{ 200, 45, 2 }  // salary for each item above.

Обратите внимание, что первый вектор отсортирован и что каждая позиция совпадает с той же позицией во втором. В вашем примере цель 59.

Для каждой позиции в первом векторе вы должны делиться на свои цели и комментировать оставшиеся.

Например, для первой позиции наибольшая сумма равна 1, для второй - 2 ...

First step:
( 59 / 40 ) == 1
( 59 % 40 ) == 19

Second step:
( 19 / 7 ) == 2
( 19 % 7 ) == 5

Third step:
( 5 / 1 ) == 5
( 5 % 1 ) == 0

Вы, наконец, получите вектор, такой же, как первый с результатами:

{ 1, 2, 5 } // one week, two days and five hours.

Чтобы показать результаты, просто переберите вектор и умножьте каждую позицию на ту же позицию во втором векторе:

1 week(s)  ( 1 * 200 )
2 day(s)   ( 2 * 45 )
5 hour(s)  ( 5 * 2 )

( 1 * 200 ) + ( 2 * 45 ) + ( 5 * 2 ) = 300

Таким образом, вы получите нужный вам результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...