CS50 Pset1 Cash: «неопределенная ссылка на« get_change »» - PullRequest
0 голосов
/ 13 января 2019
#include <stdio.h>
#include <cs50.h>
#include <math.h>

int main(void)
{
    // prompt user for "0.00" value
    float dollars;
    double get_change(float dollars);
        // prompt user for "0.00" value
    do
        {
            dollars = get_float("Change owed: ");
        }
    while(dollars <= 0);
    printf("%f\n", get_change(dollars));

        //calculate which coins will be used
    int cents = round(dollars * 100);
    int coins = 0;
    int denom[] = {25, 10, 5, 1};

    for (int i = 0; i < 4; i++)
        {
            coins += cents / denom[i];
            cents = cents % denom[i];
        }
    return coins;
}

Делаем Pset1 Cash in CS50. Получение сообщения об ошибке «В функции main': /home/ubuntu/workspace/pset1/cash/cash2.c:15: undefined reference to get_change» clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова) сделать: [cash2] Ошибка 1 "очень запутано

Ответы [ 2 ]

0 голосов
/ 18 января 2019
#include <stdio.h>
#include <cs50.h>
#include <math.h>

int get_change(float dollars);

int main(void)
{
    float dollars;
    //prompts user for 0.00 amount
    do
    {
        dollars = get_float("change owed: ");
    }
    while (dollars < 0);
    //
    printf("%i\n", get_change(dollars));
}
int get_change(float dollars)
{
    //calculate how mnay coins will be used
    int cents = round(dollars * 100);
    int coins = 0;
    int denom[] = {25, 10, 5, 1};

    for (int i = 0; i < 4; i++)
    {
        coins += cents / denom[i];
        cents = cents % denom[i];
    }
    return coins;
}

МОЙ ОФИЦИАЛЬНЫЙ ОТВЕТ НА МОЙ ВОПРОС.

0 голосов
/ 13 января 2019

следующий предложенный код:

  1. выполняет операцию с общим количеством необходимых монет (при условии отсутствия бумажных денег)
  2. правильно разделяет функции
  3. правильно использует прототип для подфункции
  4. правильно конвертирует из float в int
  5. правильно определяет константы как float, включая десятичную точку и завершающий 'f'

и теперь предложенный код:

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int get_change( float dollars );


int main(void)
{
    // prompt user for "0.00" value
    float dollars;

    do
    {
        dollars = get_float("Change owed: ");
    }
    while(dollars <= 0.0f);

    printf("%d\n", get_change(dollars));
}

// returns number coins needed, not their denominations 
int get_change( float dollars )
{
    //calculate which coins will be used
    int cents = (int)floorf(dollars * 100.0f);
    int coins = 0;
    int denom[] = {25, 10, 5, 1};

    for (int i = 0; i < 4; i++)
    {
        coins += cents / denom[i];
        cents = cents % denom[i];
    }
    return coins;
}
...