Member 13729630 Ответов: 3

Как добавить эту функцию, чтобы она работала? В C


Измените код таким образом, чтобы он включал в себя следующую функцию:

пустота pay_amount (инт долларов, инт *двадцатые годы, инт *десятки, инт *пятерок, инт *те);

Функция определяет наименьшее количество $20, $10, $5 и $1 купюр, необходимых для оплаты суммы, представленной параметром dollars. Параметр twenties указывает на переменную, в которой функция будет хранить необходимое количество купюр по 20 долларов. Параметры десятков пятерок и единиц аналогичны.


Я совсем запутался, как это добавить, некоторое время пытался, но устал и заснул.

Что я уже пробовал:

int main(void)
{
  int amount, twenties, tens, fives, ones, reduced_amount;

  printf("Enter a dollar amount: ");
  scanf("%d", &amount);

  twenties = amount / 20;
  reduced_amount = amount - (20 * twenties);

  tens = reduced_amount / 10;
  reduced_amount = reduced_amount - (10 * tens);

  fives = reduced_amount / 5;
  ones = reduced_amount - (5 * fives);

  printf("\n");   /* blank line */

  printf("$20 bills: %d\n", twenties);
  printf("$10 bills: %d\n", tens);
  printf(" $5 bills: %d\n", fives);
  printf(" $1 bills: %d\n", ones);

  return 0;
}

3 Ответов

Рейтинг:
2

KarstenK

Вам нужны некоторые базовые навыки программирования. Так что поищите какой-нибудь учебник.

Ваша задача-бросить курить легко. Напишите это объявление вне основной функции

void pay_amount (int dollars, int *twenties, int *tens, int int *fives, int *ones);
И чем вам нужно это реализовать
void pay_amount (int dollars, int *twenties, int *tens, int *fives, int *ones)
{
  //your code
}
Как вызвать эту функцию, показано в решении 2.


Richard MacCutchan

Похоже, вы рано перестали печатать на прототипе.

KarstenK

Пятница полдень ринутся на выходные ;-)

Рейтинг:
0

OriginalGriff

Прочтите инструкции, которые дал вам ваш наставник: они довольно ясны.
Он дает команду добавить функцию, которая принимает определенный набор параметров, и установить необходимые значения. Итак, начните с добавления функции, а затем выясните, что это такое.
Это достаточно просто сделать: Возьмите данную сумму, разделите ее на 20. Это то количество двадцаток, которое вам нужно.
Удалите значение в двадцатых годах из значения.
Повторите для десятков.
Потом пятерки.
То, что осталось-это единицы.


Это ваше домашнее задание, поэтому я не дам вам никакого кода, но дам вам подсказку: посмотрите на оператор модуля.


Member 13729630

Я понимаю, как это сделать, проблема в том, что я получаю эту ошибку.

https://gyazo.com/32d21feeaa99b186b71c1d9f36e72470

пустота pay_amount (инт долларов, инт *двадцатые годы, инт *десятки, инт *пятерок, инт *те);


тап_п(недействительными)
{
int amount, двадцатки, десятки, пятерки, единицы, reduced_amount;

pay_amount( размер, &ампер;двадцатые годы, &ампер;десятки &амп;пятерок &амп;те);


printf("\n"); /* пустая строка */

printf("$20 купюр: %d\n", двадцатки);
printf("$10 купюр: %d\n", десятки);
printf(" $5 купюр: %d\n", пятерки);
printf(" $1 bills: %d\n", ones);

возвращает 0;
}


пустота pay_amount (инт долларов, инт *двадцатые годы, инт *десятки, инт *пятерок, инт *те)
{
инт reduced_amount;

printf("введите сумму в долларах: ");
scanf ("%d", &доллары);

*двадцатки = доллары / 20;
reduced_amount = доллары - (20 * двадцатки);

*десятки = reduced_amount / 10;
reduced_amount = reduced_amount - (10 * десятки);

*пятерки = reduced_amount / 5;

*единицы = reduced_amount - (5 * пятерки);

}

OriginalGriff

Посмотрите на свой код:
*двадцатки = доллары / 20;
Используя указатель, "*" разыменовывает его, поэтому значение попадает в нужное место.

reduced_amount = доллары - (20 * двадцатки);
Умножение указателя на 20 ... что же это дает? Почти то же самое, что "умножение вашего телефонного номера на 20".

Кстати: вам не нужно "reduced_amount" - просто перепишите "доллары".

Рейтинг:
0

CPallini

Вы (или ваш учитель) правильно реализовали алгоритм. Теперь вам просто нужно знать, как это сделать параметры выхода технически реализованы в C.
В следующем коде я покажу вам простой пример:

#include <stdio.h>
void square(int x, int * px2) // px2 implements an OUT parameter: the function set the of the pointed variable
{
  *px2 = x*x;
}

int main()
{
  int x;
  int x2;
  printf("enter a number: ");
  if ( scanf("%d", &x) == 1)
  {
    square( x, &x2);
    printf("the square of %d is %d\n", x, x2);
  }
  return 0;
}