Как взять число и разделить его на три части положительное или отрицательное, целое число и дроби
В школьном задании мы должны написать программу, в которую входит число и делим его на три части: 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);
}