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

Вывод числа в столбик с первой цифры, без массива, без строк - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
28.07.2014, 20:15     Вывод числа в столбик с первой цифры, без массива, без строк #1
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
#include <iostream>
#include <math.h>
using namespace std;
void p(long a)
{ 
long i=0,z=a;
    while (z)
    {
       z/=10;  
       i++; //êîëè÷åñòâî öèôð ГўГ® ââåäåГ*Г*îì ÷èñëå 
    } 
    
    for (i;i>0;i--)
      {
        cout<<abs(a/(long (pow(10,i-1)))%10)<<endl; 
        }
    
}
int main(void)
{ 
     setlocale (0,""); long  n;
     cout<<"n="; cin>>n;
     p(n);
     system ("PAUSE");
}
подскажите , что у меня не правильно?

Добавлено через 1 минуту
задание: напишите процедуру, которая выводит на экран в столбик все цифры переданного ей числа, начиная с первой
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2014, 20:15     Вывод числа в столбик с первой цифры, без массива, без строк
Посмотрите здесь:

Вывод числа в столбик (без использования строковых переменных) C++
Посимвольная проверка строк без массива C++
Без операторов цикла вывести цифры числа через пробел C++
Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) C++
Вывести в цикле те цифры числа, которые не делятся на 3 без остатка. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
28.07.2014, 20:27     Вывод числа в столбик с первой цифры, без массива, без строк #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void p(long a)
{ 
   int digits[32];
   int N=0;//количество цифр во введенном числе 
    while (a)
    {
         digits[N++]=a%10;
          a/=10;  
    } 
    for (int i=N-1;i>=0;i--)
         cout<<digits[i]<<endl; 
    
}
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
28.07.2014, 20:31  [ТС]     Вывод числа в столбик с первой цифры, без массива, без строк #3
а без массива?
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.07.2014, 20:31     Вывод числа в столбик с первой цифры, без массива, без строк #4
Вот откопал свой старый код, только в нем выводил числа через пробел.
Ваш не запускал, точно указать на ошибку не могу. Предполагаю, что проблема в выводе первого/последнего значения?

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
#include <iostream>
using namespace std;
 
void cleave(int);
 
 
int main()
{
    int x;
 
    cout << "Vvedite celoe chislo ot 1 do 32767: ";
    cin >> x;
    cleave(x);
    cout << endl;
    system("pause");
    return 0;
}
 
void cleave(int volume)
{
    int x = volume,
        m = 1,      // счетчик итераций
        rank = 1;   // разрядность числа
 
    do
    {
        rank *= 10;
        x /= 10;
 
    } while (x != 0);
 
    x = volume;
    rank /= 10;
 
    if (rank == 1)
        cout << x;
    else
    {
        for (rank; rank > 1; rank /=10)
        {
            if (m == 1)
                {
                    cout << x / rank << "  ";
                    rank *= 10;
                }
            else
                cout << (x % rank) / (rank / 10) << "  ";
            m++;
 
        }
    }
}
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
28.07.2014, 20:34  [ТС]     Вывод числа в столбик с первой цифры, без массива, без строк #5
Мимино, запусти мой код, например, 123123 - рабатает, а если 9999999 почему то с какими - то разрядами беда (((
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.07.2014, 20:40     Вывод числа в столбик с первой цифры, без массива, без строк #6
Цитата Сообщение от arzhanok Посмотреть сообщение
Мимино, запусти мой код, например, 123123 - рабатает, а если 9999999 почему то с какими - то разрядами беда (((
а... так это ж:
long от -2 147 483 648 до 2 147 483 647
до этого предела все работает
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
28.07.2014, 20:43  [ТС]     Вывод числа в столбик с первой цифры, без массива, без строк #7
даже 99999 не работает...
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.07.2014, 20:45     Вывод числа в столбик с первой цифры, без массива, без строк #8
Цитата Сообщение от arzhanok Посмотреть сообщение
даже 99999 не работает...
У меня Ваш код работает нормально в пределах long. Только с самого начала выдавал ошибку вот тут:
C++
1
abs(a/(long (pow(10,i-1)))%10
--->
C++
1
abs(a/(long (pow(10.0,i-1)))%10
-=ЮрА=-
Заблокирован
Автор FAQ
28.07.2014, 20:49     Вывод числа в столбик с первой цифры, без массива, без строк #9
Цитата Сообщение от arzhanok Посмотреть сообщение
адание: напишите процедуру, которая выводит на экран в столбик все цифры переданного ей числа, начиная с первой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main(){
    int val = -25564885;
    int num = 0;
    for( int i = int(10E8); i; i /= 10)
    {
        if( (num = val / i) != 0 )
            cout<<num<<endl;
        val -= num*i;
        if( num < 0 )
            val *= -1;
    }
    return 0;     
}
http://codepad.org/v5hI3xeQ
Output:
-2
5
5
6
4
8
8
5
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
28.07.2014, 20:52  [ТС]     Вывод числа в столбик с первой цифры, без массива, без строк #10
-=ЮрА=-, процедуру я и сам написал )) спасибо, просто я бы хотел ошибку свою найти

Добавлено через 54 секунды
Мимино, все проверил, код 1 в 1 совпадает, у меня не работает))
-=ЮрА=-
28.07.2014, 20:53
  #11

Не по теме:

Цитата Сообщение от arzhanok Посмотреть сообщение
-=ЮрА=-, процедуру я и сам написал )) спасибо, просто я бы хотел ошибку свою найти
- ошибка в самой концепции и неоптимальности

Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.07.2014, 20:56     Вывод числа в столбик с первой цифры, без массива, без строк #12
Мимино, все проверил, код 1 в 1 совпадает, у меня не работает))
У меня вот так
Миниатюры
Вывод числа в столбик с первой цифры, без массива, без строк  
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
28.07.2014, 20:58  [ТС]     Вывод числа в столбик с первой цифры, без массива, без строк #13
-=ЮрА=-, можешь подсказать ошибку в коде? почему 12345 работает, а 99999 нет?

Добавлено через 1 минуту
Мимино, извини, мне пора, завтра отвечу
-=ЮрА=-
Заблокирован
Автор FAQ
28.07.2014, 21:05     Вывод числа в столбик с первой цифры, без массива, без строк #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
arzhanok, переделай свой код хотя бы так ( я не знаю как тебе объяснить что нужно вычислить старший разряд а потом его же вычисть, у тебя тут
Цитата Сообщение от arzhanok Посмотреть сообщение
abs(a/(long (pow(10,i-1)))%10)
выврдится сомножитель старшего разряда, а из числа сам разряд не вычитается, согласись бред какой-то...)
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
#include <iostream>
#include <math.h>
using namespace std;
void p(long a)
{ 
    long i=a ? 0 : 1;//даже в нуле уже есть 1 на цифра
    long z=abs(a);
    while (z)
    {
       z/=10;  
       i++; //количество цифр во введенном числе 
    } 
    
    long div = (long)pow(10.0, 1.0*(i - 1));
    long num = 0;
    for (div; div; div /= 10)
    {
        num = a / div; 
        cout<<num<<endl; 
        a -= num*div;  
    }
    
}
int main(void)
{ 
     setlocale (0,""); 
    long  n = -128848;
    // cout<<"n="; cin>>n;
    cout<<"FIRST NUM : "<<endl;
     p(n);
    n = 256897;
    cout<<"SECOND NUM : "<<endl;
    p(n);
     system ("PAUSE");
}
http://codepad.org/aCr6bdf2
FIRST NUM :
-1
-2
-8
-8
-4
-8
SECOND NUM :
2
5
6
8
9
7
Disallowed system call: SYS_fork
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
28.07.2014, 21:14     Вывод числа в столбик с первой цифры, без массива, без строк #15
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for (div; div; div /= 10)
Красивее
C++
1
for(;;div/=10)
-=ЮрА=-
28.07.2014, 21:18
  #16

Не по теме:

zss, а прверять окончание цикла кто будет?

Mr.X
Эксперт С++
 Аватар для Mr.X
2796 / 1572 / 246
Регистрация: 03.05.2010
Сообщений: 3,647
28.07.2014, 22:31     Вывод числа в столбик с первой цифры, без массива, без строк #17
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 <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
typedef long long   T_int;
/////////////////////////////////////////////////////////////////////////////////////////
void    print_number_in_column( T_int   n )
{
    std::cout   <<  (
                        abs(n) < 10
                            ?   n
                            :   print_number_in_column( n / 10 ), abs(n % 10)
                    )
 
                <<  std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        T_int   n   =   0;
        std::cout   <<  "n = ";
        std::cin    >>  n;
 
        print_number_in_column(n);
        std::cout   <<  std::endl;
    }//for
}
-=ЮрА=-
28.07.2014, 22:55
  #18

Не по теме:

Mr.X, http://ideone.com/jdPYx8

Mr.X
Эксперт С++
 Аватар для Mr.X
2796 / 1572 / 246
Регистрация: 03.05.2010
Сообщений: 3,647
28.07.2014, 23:02     Вывод числа в столбик с первой цифры, без массива, без строк #19
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Не по теме:
Mr.X, http://ideone.com/IyUNqx
Ну, тут уже ругали этот компилятор. Врет он.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 23:19     Вывод числа в столбик с первой цифры, без массива, без строк
Еще ссылки по теме:

Определить цифры целого числа (тип числа - целое без знака) C++
Определить все цифры в цифровой записи данного числа, на которые оно делится без остатка C++
C++ Сравнение строк без учета имеющегося в строке числа

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
28.07.2014, 23:19     Вывод числа в столбик с первой цифры, без массива, без строк #20
Чисто для фана
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main(){
    int val = -25504885;
    int num = 0;
    if( val < 0 )
        val *= -1;
    int pwr = 1;
    while( pwr < val)
           pwr*= 10;
    for( pwr /= 10; pwr; pwr /= 10)
    {
        if( pwr < val  )
        {
            cout<<(num = val / pwr)<<endl;
            val -= num*pwr;
        }
        else
            cout<<"0"<<endl;
    }
    return 0;     
}
http://codepad.org/ZoVxE6JX
2
5
5
0
4
8
8
5
Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, тут уже ругали этот компилятор. Врет он.
кодпад тоже отказался, правда там поддержки С+11 нет, а вот студия да собрала норм, даже 6-ая

Yandex
Объявления
28.07.2014, 23:19     Вывод числа в столбик с первой цифры, без массива, без строк
Ответ Создать тему
Опции темы

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