Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 9-13 ftoa itoa.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <stdio.h>
- #include <ctype.h>
- #include <math.h>
- int get_size(int a) {
- a = fabs(a);
- int size = 0;
- while (a > 0) {
- size++;
- a /= 10;
- }
- return size;
- }
- int get_any_digit(int a, int index) {
- a = fabs(a);
- int loop = get_size(a) - index - 1;
- for (int i = 0; i < loop; i++)
- a /= 10;
- return a % 10;
- }
- int my_itoa(int a, char tab[], int size);
- int my_ftoa(float a, int precision, char tab[], int size);
- int my_itoa(int a, char tab[], int size) {
- int a_size = get_size(a);
- if (size < a_size + 1)
- return 1;
- int i = 0;
- if (a < 0) {
- tab[i] = '-';
- i = 1;
- }
- int j = 0;
- for ( ; i < a_size; i++) {
- tab[i] = get_any_digit(a, j) + '0';
- j++;
- if (j > size)
- return 1;
- }
- tab[j] = '\0';
- return 0;
- }
- int my_ftoa(float a, int precision, char tab[], int size) {
- int a_size = get_size(a);
- if (size < a_size + precision + 2 || precision < 0)
- return 1;
- int i = 0;
- if (a < 0) {
- tab[i] = '-';
- i = 1;
- }
- int j = 0;
- for (; i < a_size; i++) {
- tab[i] = get_any_digit(a, j) + '0';
- j++;
- if (j > size)
- return 1;
- }
- if (precision > 0) {
- tab[j++] = '.';
- if (j > size)
- return 1;
- int a1 = (int)a;
- float num = a;
- num -= a1; //ten zabieg daje nam sama czesc dziesietna floata
- num *= 10;
- for (int k = 0; k < precision; k++) {
- int num1 = (int)num;
- tab[j++] = float(num1) + '0';
- if (j > size)
- return 1;
- num -= num1;
- num *= 10;
- }
- }
- tab[j] = '\0';
- return 0;
- }
- int main()
- {
- char tab[1000];
- printf("%d\n%d\n", get_size(1320), get_any_digit(1320, 2));
- my_itoa(1320.12, tab, 1000);
- printf("%s\n", tab);
- my_ftoa(1320.9583291428, 4, tab, 1000);
- printf("%s\n", tab);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement