Форум программистов, компьютерный форум CyberForum.ru

Дано натуральное число. Получить строковое представление этого числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ почему не работает? http://www.cyberforum.ru/cpp-beginners/thread445795.html
#include "stdafx.h" #include<iostream> struct item; item *Insert(item *tree); item *InOrder(item *tree); struct item { int data;
C++ Найти объем тела и площадь полной поверхности Тело имеет форму параллелепипеда с высотой h. Прямоугольник в основе имеет диагональ d. Известно, что диагонали прямоугольника пересекаются под углом. Найти объем тела V и площадь полной поверхности S. http://www.cyberforum.ru/cpp-beginners/thread445792.html
C++ Перевести с Паскаля на С++
Program Proc; procedure MinMax(var A,B:real); var temp:real; begin if (A>B)then begin temp:=A; A:=B; B:=Temp;
C++ Вывести на экран номер максимального элемента массива(+ ещё 3 задачи)
Программирование на легком уровне, так как только на 1 курсе, задача на МАССИВЫ! «Статический массив» 1.Задан массив из n чисел – результаты измерения температуры воздуха, взятые в течении n дней. Вывести на экран номер максимального значения температуры воздуха. Вывести на экран номера значений температуры воздуха, которые отличаются от средней температуры не более, чем на один...
C++ Перегрузка оператора -> http://www.cyberforum.ru/cpp-beginners/thread445782.html
скажите, а какие особенности перегрузки -> ?
C++ описать функцию MonthDays(M, Y) Используя функцию IsLeapYear из задания Proc52, описать функцию MonthDays(M, Y) целого типа, которая возвращает количество дней для M-го месяца года Y (1 ≤ M ≤ 12, Y > 0 — целые числа). Вывести значение функции MonthDays для данного года Y и месяцев M1, M2, M3. Proc52. Описать функцию IsLeapYear(Y) логического типа, которая возвращает True, если год Y (целое положительное число) является... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
16.02.2012, 10:22     Дано натуральное число. Получить строковое представление этого числа
Ну тогда уж и вариант с рекурсией
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
char * rekursSplit(char * out, long length, long num)
{
    char buf[5] = {0};
    sprintf(buf,((999 < num) ? " %03d" : "%d"),num % 1000);
    strcat(out, strrev(buf));
    if(0 < (num / 1000))
    {
        out = (char *)realloc
                    (
                        (void *)out,
                        (length = length + 6)*sizeof(char)
                    );
        rekursSplit(out, length, num/1000);
    }
    return out;
}
int main()
{
    long num;
    long length;
    char * out;
    while(1)
    {
        out = (char *)malloc((length = 5)*sizeof(char));
        out[0] = '\0';
        printf("Enter number : ");scanf("%u",&num);
        strcpy(out,rekursSplit(out, length, num));
        printf("Split number : %s\n",strrev(out));
        free((void *)out);
    }
    return 0;
}
Отработка
Enter number : 115474847
Split number : 115 474 847
Enter number :

PS:Долго алгоритм не тестил...
 
Текущее время: 14:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru