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

обычная программа - C++

Восстановить пароль Регистрация
 
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
05.10.2010, 20:53     обычная программа #1
C++
1
2
3
4
5
6
7
8
int x=0,n=0;
cin>>x;
while(x!=0){
    x=x/10;
 
n++;
}
cout<<n<<endl;
ну думаю тут уже всем ясно что делает прога,считает сколько цифр,если я ввожу 1000 выводит 4-правильно а если я ввожу 456456456465456 то 0,почему
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2010, 20:53     обычная программа
Посмотрите здесь:

Билдер 6 сохранить с проэкт с разширением .ехе! Что бы работал как обычная программа и на др компах! C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bazan
22 / 22 / 0
Регистрация: 15.04.2009
Сообщений: 100
05.10.2010, 20:56     обычная программа #2
Как минимум потому, что у типа int максимальное значение 2^32=4294967296, а с учетом того, что обычный int имеет знак, то максимальное значение - 2147483648
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
05.10.2010, 20:59  [ТС]     обычная программа #3
Bazan, поменял инт на дабл,результат лол

x=65456456456465
n=338
Для продолжения нажмите любую клавишу . . .
Bazan
22 / 22 / 0
Регистрация: 15.04.2009
Сообщений: 100
06.10.2010, 16:36     обычная программа #4
^Tecktonik_KiLLeR, Проблема в том, что double нацело не делится. Тут нужно другое условие
C++
1
2
3
4
5
6
7
8
double x=0,n=0;
cin>>x;
while(x>1){
    x=x/10;
 
n++;
}
cout<<n<<endl;
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.10.2010, 07:14     обычная программа #5
^Tecktonik_KiLLeR, а ты не провал через strlen() ?
ну, или там типа string s; ... s.length()
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.10.2010, 15:03  [ТС]     обычная программа #6
accept, наш учитель про стрлен не говорил,хотя я знаю что это)))))))
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.10.2010, 15:20     обычная программа #7
^Tecktonik_KiLLeR, выход - не вводить большие числа.
Vladimir616
110 / 110 / 3
Регистрация: 05.07.2009
Сообщений: 224
07.10.2010, 15:26     обычная программа #8
^Tecktonik_KiLLeR, также можно считывать посимвольно, вот так:

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main()
{  
    int n = 0;
    while(cin.get() != '\n')
        n++;
    cout << n << endl;
    return 0;
 }
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.10.2010, 15:29     обычная программа #9
Vladimir616, что за бред??? считаться будет количестов символов, а не количество цифр
то есть и пробелы, точки, запятые, слэши и прочее-прочее-прочее.
Vladimir616
110 / 110 / 3
Регистрация: 05.07.2009
Сообщений: 224
07.10.2010, 15:35     обычная программа #10
fasked, почему же бред? Мой вариант программы вполне подходит для задания с формулировкой "вводится число - найти количество знаков". К тому же, если ввести в программу автора вышеупомянутые символы, то вообще ничего считаться не будет.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.10.2010, 15:56     обычная программа #11
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <ctype.h>
 
#define BUF_LEN 4096
 
int main(void){
    char buf[BUF_LEN], * p;
    
    printf("Number: ");
    if ( ! fgets(buf, BUF_LEN, stdin) )
        return 1;
    for ( p = buf; isdigit(*p); ++p )
        ;
    if ( *p != '\n' )
        printf("Not number!\n");
    else
        printf("%d digits.\n", p - buf);
    
    return 0;
}
до 20 цифр
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdint.h>
 
int main(void){
    uint64_t num;
    char tail;
    int cnt;
    
    printf("Number: ");
    if ( scanf("%llu%c", &num, &tail) != 2 || tail != '\n' ){
        printf("Wrong input!\n");
        return 1;
    }
    for ( cnt = 0; num; ++cnt, num /= 10 )
        ;
    printf("%d digits.\n", cnt);
    
    return 0;
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.10.2010, 17:37  [ТС]     обычная программа #12
Цитата Сообщение от easybudda Посмотреть сообщение
uint64_t num; char tail;
без этих нельзя?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.10.2010, 18:06     обычная программа #13
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
без этих нельзя?
задайтесь вопросом, для чего они нужны, и сами себе ответите - можно без них, или нет...
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.10.2010, 19:30  [ТС]     обычная программа #14
easybudda, пока ответ на вопрос для чего они нужны мне не нужен,а вот ответ Без них нельзя-нужен,т.к. это в курсе проходят,а не я один учу,чтобы прошло...в курсе еще не прошли что такое чар...
хотя мне интересует с одной стороны что возвращает вот это
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
uint64_t num;
и где используется
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
07.10.2010, 19:31     обычная программа #15
^Tecktonik_KiLLeR, А расшифровать?
unsigned int 64... t - typedef...
Это тип. В данном случае тип переменной. И он ничего не возвращает, что естественно.

char - символьный тип, хотя скорее все же численный. Представлен символами, а аски коды являются числами. Читайте книжки...
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
07.10.2010, 19:35  [ТС]     обычная программа #16
Lavroff, я не правильно выразился на счет возвращения
хочу сказать что это такое....а unsigned если не ошибаюсь-не отрицательное число да?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
07.10.2010, 19:36     обычная программа #17
^Tecktonik_KiLLeR, Беззнаковый тип. Да не отрицательное.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.10.2010, 19:36     обычная программа #18
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
в курсе еще не прошли что такое чар...
вроде больше года уже на форуме... да и базовые типы обычно в первую очередь проходят...
^Tecktonik_KiLLeR
07.10.2010, 19:45  [ТС]
  #19

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
вроде больше года уже на форуме... да и базовые типы обычно в первую очередь проходят...
а форум тут причем?..
мы еще прошли бул,инт,дабл и флот.

accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.10.2010, 04:00     обычная программа #20
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
accept, наш учитель про стрлен не говорил,хотя я знаю что это)))))))
у типов есть размеры в байтах, и если размер типа один, то там существует предел
для ввода же любых чисел используется длинная арифметика
я делал для double, но число 6545645645646565456456456465 оно не выдерживает

C
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(void)
{
    printf("%f" "\n", 6545645645646565456456456465.0);
    return 0;
}
Код
[guest@localhost tests]$ ./t
6545645645646565064587608064.000000
[guest@localhost tests]$
Код
[guest@localhost ~]$ s='6545645645646565'
[guest@localhost ~]$ echo ${#s}
16
[guest@localhost ~]$
16 знаков всё правильно

Добавлено через 1 минуту
хочешь, складывай число в массив, даже если не через строку делать
просто массив целых чисел
Yandex
Объявления
08.10.2010, 04:00     обычная программа
Ответ Создать тему
Опции темы

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