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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
blecklov
11 / 11 / 2
Регистрация: 07.08.2009
Сообщений: 85
#1

Работа с цифрами - C++

26.10.2011, 01:16. Просмотров 570. Ответов 1
Метки нет (Все метки)

Не могу понять, что в программе не так. Алгоритм правильный, но расчет не идет.

Исходное задание:
Напишите программу, принимающую с консоли большое целое число и выводящую его на консоль с разделителями-запятыми после каждых трех цифр. Например, 123654004 -> 123,654,004. Программа должна принимать большое целое с консоли следующим образом:

long lNum;
std::cin >> lNum;

и выводить его на консоль с помощью массива символов:

char Str[?]; // какова должна быть размерность массива?
std::cout << Str << "\n";

Программа не должна использовать библиотечные функции для работы со строками.

----------------------------------------------------------------------------------------------

Примечания

1. Рассмотрите возможность применения циклов for, while и do while. Какой вариант лучше?

2. Для инкрементирования переменных используйте оператор ++. Его можно использовать двояко - как постфиксный (i++) и как префиксный (++i). Выражение y = x++ интерпретируется компилятором так: присвоить переменной y значение x и увеличить x на единицу. Выражение y = ++x выполняется в другом порядке: увеличить x на единицу и присвоить переменной y новое значение x. Если короче, то i++ означает "воспользоваться i, а потом увеличить", а ++i – "сначала увеличить i, а потом уже воспользоваться".

3. Используйте оператор % - остаток от целочисленного деления.

4. Для корректной работы операции std::cout << Str << '\n' массив символов Str должен заканчиваться нулевым символом '\0'.

мой код

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
#include <iostream>
 
void main(){
long lNum;
std:: cin >> lNum;
int a,b,d,i,h,n;
char X[13];
d=1;
a=1;
b=1;
for (i=1;i<10;i++){
d=10*d;
a=lNum/d;
if (a==0)
 n=i;
}
d=1;
for ( i=0; i<n; i++)
{
    d=d*10;
    a=lNum/d;
    b=a%d;
    h=48+b;
    if (a/3!=0)
            X[13-i]=h;
    else 
    X[13-(i+1)]=',';
}
for (i=0; i<14; i++){
std:: cout <<X[i];  
}
}
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2011, 01:16     Работа с цифрами
Посмотрите здесь:

Работа с цифрами - C++
Привет всем, помогите пожалуйста решить задачу. Заменить в натуральном числе все цифры 7 цифрами 8 и удалить из записи числа все единицы,...

Работа с цифрами в числе - C++
Доброго времени суток, гуглил и ненашёл, как если у меня есть например int v=1234, перебрать его по цифре те чтобы было 1 2 3 4 ?

работа с цифрами заданного Числа - C++
С++. Как можно обращаться к нужной цифре в числе. Например есть число 34562, а я хочу сложить 3 и 5 цифру, или 1-ую с 4-ой, как это можно...

Работа со звуком (как звуковые спектры определённого звукового файла записать цифрами в массив) - C++
как звуковые спектры определённого звукового файла записать цифрами в массив.

задача с цифрами - C++
a) Дано трёхзначное число. Определить, есть ли среди его цифр одинаковые? b) Дано натуральное число с различными цифрами. Определить,...

Заполнение массива 6*6 цифрами от 1 до 36 - C++
Заполнить массив 6*6 цифрами от 1 до 36 по следующей схеме 1 36 35 33 30 26 2 3 34 32 29 25 4 5 6 31 28 24 7 8 9 10 27 23 11 12...

Заполнение массива цифрами от 1 до 8 - C++
Здравствуйте, есть массив который создается динамически, его максимальный размер 1 - 8 в каждой ячейке может быть число от 1 до 8 int...

Выбор цифрами и выход - C++
Кто может поделиться кодом как сделать чтоб отображение пункта было не только посредством кнопок (вверх-вниз) но и цифрами 1 2 3 4 5 и...

Уравнение с пропущенными цифрами - C++
Нужна программа на Си Помогите пожалуйста Добавлено через 33 минуты upupupup

задача с натуральными цифрами - C++
int n, count = 0; cin &gt;&gt; n; // вводим натуральное число, меньше которого наш знаменатель for(int i = 2; i &lt; n; i++) { ...

Замена слов цифрами - C++
Пользователь вводит текст, программа проверяет текст на наличие цифр записанных прописью. Реализация с помощью строк. Помогите с...

Операции над 4 цифрами числа - C++
Ввести 4-х значное число, разложить его на цифры. Возвести в квадрат суммы цифр попарно, 1 и 4, 2 и 3 цифры. Найти корень квадратный 3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
26.10.2011, 03:06     Работа с цифрами #2
если я не ошибаюсь unsigned long int от 0 до 4294967295
отсюда у вас будет максимум в массиве 10 цифр и 3 запятые. соответственно размер массива равен 13.
вот у меня вот такое решение получилось.
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
#include "stdafx.h"
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
int main(){
    long lNum;
    char x[13];
    int comma=0, r = 0;
    std::cout << "Enter number: ";
    std:: cin >> lNum;
 
    while(lNum > 0){
        if((r-comma)%3 == 0 && lNum>0 && r > 0){
            x[r] = ',';
            comma++;
            r++;
        }
        x[r] = lNum%10+'0';
        lNum = lNum/10;
        (lNum > 0) ? r++ : r;
    }
    for(int i = r; i >=0; --i){
        cout << x[i];
    }
        cout << endl;
    system("pause");
    return 0;
}
Yandex
Объявления
26.10.2011, 03:06     Работа с цифрами
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru