Как взять число и разделить его на три части положительное или отрицательное, целое число и дроби

В школьном задании мы должны написать программу, в которую входит число и делим его на три части: 1. Проверка, является ли число положительным или отрицательным 2. Целое число (величина) 3. Дробные части

Требование состоит в том, что должна быть собственная функция с именем отделенная, которая имеет входной и выходной параметры.

Например: если вы наберете 23.639, программа должна отсортировать и распечатать: Знак: + Величина целого числа: 23 Дробные части: 0.639

ВОПРОСЫ: 1. Функция для определения, является ли число положительным или отрицательным, дает неправильный ответ при вводе отрицательного числа. Это также отправляет неправильный характер. Я пробовал разные типы данных, такие как int, char и float, но, похоже, ни один из них не работает. Любые советы о том, как решить эту проблему, очень ценятся, потому что я думаю, что я ослеплен своими собственными ошибками...

2. Функция, отделяющая десятичные числа от целых чисел (дробей), не будет вычитать целое число из десятичных, поэтому я застрял с целым числом. Кто-нибудь может заметить мою ошибку здесь?


* ОБНОВИТЬ *

Мне удалось решить поставленные вопросы, и я сделал ужасную ошибку n00b при редактировании кода, который я впервые опубликовал в этом вопросе. Теперь я отредактировал код еще раз, чтобы сохранить исходные ошибки настолько хорошо, насколько я себя помню. Правильный код размещен как ответ ниже.

Извините за ошибку новичка.

/*
Author: Thorbjørn Elvestad
Student ID: *****
E-mail: drommevandrer@gmail.com


This program take in number typed in by the user, and then divide it into three parts.

SIGN: '+' or '-'
Whole number: Show number as a whole number
Fraction: Show fractions 

The program uses function to sort out the number, and print out the result*/

/* Declaring libraries */
#include <stdio.h>
#include <stdlib.h>


/* Declaring functions */
double sorting_sign(char x);
double sorting_whole(double x);
double sorting_fract(double x, int y);



/* Calling main function */
int main()
{
    double num, fractures; /* declaring variables */
    int sign_sorted, part;
    double whole_sorted;

    printf("LET ME TELL YOU SOME INTERESTING STUF ABOUT YOUR NUMBER!\n\n");
    printf("Enter your number: ");
    scanf("%d", &num);

    sign_sorted = sorting_sign(num); /* Calling the function that sorts out if this number is '+' or '-' */
    whole_sorted = sorting_whole(num); /* Calling the function separating whole number from decimals */
    fractures = sorting_fract(num, num); /* Calling the function removing the whole number from the fractures */

    printf("Sign: %c\nWhole: %0.lf\nFraction: %f", sign_sorted, whole_sorted, fractures);

    return 0;
}


/* Function for sorting of if number is '+' or '-' */
double sorting_sign(char x)
{
    int sign;

    /* true if number is less than 0 */
    if(x < 0.0){sign = '-';}

    /* true if number is greater than 0 */
    else if(x > 0.0){sign = '+';}

    return (sign);
}


/* Function for sorting out the whole number */
double sorting_whole (double x)
{
    int whole;

    whole = x;

    return (whole);
}

/* Function for sorting out the fractions */
double sorting_fract(double x)
{
    int whole;
    double fract;
    whole = y;
    fract = x - whole;


    return (fract, whole);
}

2 ответа

Решение

Вы объявили свой sorting_sign функция для возврата doubleкогда возвращаешь int установить значение char... разберись с типами.

РЕШИТЬ! Для дальнейшего использования я выкладываю код полностью работающей программы:

/*
Author: Thorbjørn Elvestad
Student ID: *****
E-mail: drommevandrer@gmail.com


This program take in number typed in by the user, and then divide it into three parts.

SIGN: '+' or '-'
Whole number: Show number as a whole number
Fraction: Show fractions 

The program uses function to sort out the number, and print out the result*/

/* Declaring libraries */
#include <stdio.h>
#include <stdlib.h>


/* Declaring functions */
int sorting_sign(int x);
double sorting_whole(double x);
double sorting_fract(double x);



/* Calling main function */
int main()
{
double num, fractures; /* declaring variables */
int sign_sorted, part;
double whole_sorted;

printf("LET ME TELL YOU SOME INTERESTING STUF ABOUT YOUR NUMBER!\n\n");
printf("Enter your number: ");
scanf("%lf", &num);

sign_sorted = sorting_sign(num); /* Calling the function that sorts out if this number is '+' or '-' */
whole_sorted = sorting_whole(num); /* Calling the function separating whole number from decimals */
fractures = sorting_fract(num); /* Calling the function removing the whole number from the fractures */

printf("Sign: %c\nWhole: %0.lf\nFraction: %f", sign_sorted, whole_sorted, fractures);

return 0;
}


/* Function for sorting of if number is '+' or '-' */
int sorting_sign(int x)
{
int sign;

/* true if number is less than 0 */
if(x < 0.0){sign = '-';}

/* true if number is greater than 0 */
else if(x > 0.0){sign = '+';}

return (sign);
}


/* Function for sorting out the whole number */
double sorting_whole (double x)
{
int whole;

whole = x;

return (whole);
}

/* Function for sorting out the fractions */
double sorting_fract(double x)
{
int whole;
double fract;
whole = (int)x;
fract = x - whole;


return (fract);
}
Другие вопросы по тегам