Форум программистов, компьютерный форум 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 (целое положительное число) является... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.02.2012, 00:36     Дано натуральное число. Получить строковое представление этого числа
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
через sprintf пошёл, но вышла такая громадина из кода
такая
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct STACKNODE {
    unsigned value;
    struct STACKNODE * next;
} stacknode_t;
 
int push(stacknode_t ** stack, unsigned value){
    stacknode_t * node = malloc(sizeof(stacknode_t));
    if ( ! node )
        return -1;
    
    node->value = value;
    node->next = *stack;
    *stack = node;
    
    return 0;
}
 
int pop(stacknode_t ** stack, unsigned * value){
    stacknode_t * tmp = *stack;
    if ( ! *stack )
        return -1;
    
    *value = (*stack)->value;
    *stack = (*stack)->next;
    free(tmp);
    
    return 0;
}
 
char * number_as_string(unsigned number){
    static char buf[BUFSIZ]; /* вычислять нужную длину лень, просто делаем буфер заведомо достаточным */
    stacknode_t * stack;
    unsigned tmp;
    char * ptr;
    
    stack = NULL;
    *buf = 0;
    ptr = buf;
    
    do {
        tmp = number % 1000;
        if ( push(&stack, tmp) ){
            fprintf(stderr, "Can't push value to stack!\n");
            return NULL;
        }
    } while ( number /= 1000 );
    
    if ( pop(&stack, &tmp) ){
        fprintf(stderr, "Can't pop any value from stack.\n");
        return NULL;
    }
    sprintf(ptr, "%u ", tmp);
    ptr += strlen(ptr);
    
    while ( ! pop(&stack, &tmp) ){
        sprintf(ptr, "%03u ", tmp);
        ptr += strlen(ptr);
    }
    
    return buf;
}
 
int main(void){
    unsigned num;
    
    while ( printf("Number: ") && scanf("%u", &num) == 1 )
        printf("As string: %s\n", number_as_string(num));
    
    return 0;
}
или громаднее? На самом деле не всё комильфо, но работает. Отрицательными числами просто не стал заморачииваться.
 
Текущее время: 12:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru