Не получается решить задачу на c++
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Не получается решить задачу на c++ - 2009-12-17 15:48:55.896666
|
|
|
andrey_94
Сообщений: 10
Оценки: 0
Присоединился: 2009-12-16 04:47:59.440000
|
Здравствуйте, не получается решить простую задачу на c++. Вот условия задачи: Посчитать количество цифр целого неотрицательного числа N (0 <= N <= 2000000000). Пример входных данных: 13243 Пример выходных данных: 5 Вот код написанный мной:
#include <iostream>
using namespace std;
int main()
{
setlocale(0,"");
char b[255], a;
cout <<"Введите набор чисел: ";
cin >> b;
a = strlen(b);
cout <<a <<endl;
return 0;
}
В чем собственно не получается: Когда я ввожу в консоль набор чисел для их подсчета, в результате подсчета мне отображаются какие то кракозябры… Как это исправить?
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:01:10.726666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
Если уж на то пошло, то переменную а сделай типа int, но ни как не char.
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:07:13.526666
|
|
|
Motorcode
Сообщений: 68
Оценки: 0
Присоединился: 2009-07-15 21:15:27.283333
|
Переводи в строку и считай через strlen
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:09:52.433333
|
|
|
andrey_94
Сообщений: 10
Оценки: 0
Присоединился: 2009-12-16 04:47:59.440000
|
спасибо… заработало
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:15:54.946666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
quote:
ORIGINAL: Motorcode Переводи в строку и считай через strlen К чему эти извращения? Достаточно почитать документацию по функции strlen. andrey_94 пожалуйста =)
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:21:57.096666
|
|
|
andrey_94
Сообщений: 10
Оценки: 0
Присоединился: 2009-12-16 04:47:59.440000
|
А существует ли функция аналогична strlen(); только чтобы она могла иметь тип int?
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:27:43.360000
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
Ты хочешь имея интовское число (к примеру 2010)вытащить через функцию число цифр, т.е. 4? Есть функция sizeof но это другая история. А вообще определить количество цифр в числе можно в цикле, деля исходное число сначала на 1, потом 10, 100…
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:32:35.120000
|
|
|
andrey_94
Сообщений: 10
Оценки: 0
Присоединился: 2009-12-16 04:47:59.440000
|
совершенно верно
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:49:58.010000
|
|
|
Vergil111
Сообщений: 5
Оценки: 0
Присоединился: 2009-12-17 16:44:21.230000
|
Господа, все легче легкого) Юзаем функцию ввода с эхом getche(); #include <iostream> #include <conio.h>//подключаем библиотечный файл, хранящий описание функции getch() и getche(); using namespace std; int main() { char ch = 'a'; unsigned int wordcount = 0; while ((ch=getche()) != '\r'){ wordcount++ ; } cout << "\nKolichestvo simvolov " << wordcount; getch();//чтобы окошко не закрывалось автоматом в Борланде return 0; } И да пребудет с вами сила;)
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 16:53:42.570000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
int intlen( int val )
{
int count = 0;
do
{
val /= 10;
count++;
}
while ( val );
return count;
}
Учите математику. 4-й класс. —- Добавлю: Lost_boy, как всегда, был очень близок к истине :).
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 17:22:53.206666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
quote:
ORIGINAL: Vergil111 Господа, все легче легкого) Юзаем функцию ввода с эхом getche(); #include <iostream> #include <conio.h>//подключаем библиотечный файл, хранящий описание функции getch() и getche(); using namespace std; int main() { char ch = 'a'; unsigned int wordcount = 0; while ((ch=getche()) != '\r'){ wordcount++ ; } cout << "\nKolichestvo simvolov " << wordcount; getch();//чтобы окошко не закрывалось автоматом в Борланде return 0; } И да пребудет с вами сила;) Чем этот аццкий код легче легкого? Если его сравнивать с изначальным кодом ТС, то ваш код намного мудреней, в коде ТС достаточно ввести число, вызвать ф-ю и все ответ готов. Так что лажовый у вас код имхо) _SaZ_ реализовал то, о чем я говорил выше, немного по другому но это не важно, я думаю оба варианта годятся, только в его варианте код короче выходит. Да и вообще если необходимо работать с числами, а не строками то только последний код годится, остальное хлам.
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 17:31:12.440000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Ну мой код не укладывается в изначальное задание… Слишком уж большой там N :-P.
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 17:33:19.150000
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
Ну) я так и написал: quote:
Да и вообще если необходимо работать с числами, а не строками то только последний код годится, остальное хлам. если же нет, то вариант ТС вполне сгодится.
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-17 19:06:23.630000
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: andrey_94 А существует ли функция аналогична strlen(); только чтобы она могла иметь тип int? есть. логарифм называется. в твоём случае - десятичный
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-18 14:38:13.600000
|
|
|
Vergil111
Сообщений: 5
Оценки: 0
Присоединился: 2009-12-17 16:44:21.230000
|
Просто моя программа работает как с символами, так и с числами, так что код получился немножко длиннее. Для чисел, конечно, код короче)
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-18 14:56:47.976666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: Vergil111 Просто моя программа работает как с символами, так и с числами, так что код получился немножко длиннее. Для чисел, конечно, код короче) Ну-ка объясни, чем вся твоя каша лучше, чем тупо вызов strlen?
char sz[200];
gets( s, 200 );
printf( "%d", strlen( s ) );
И, заодно, объясни, что будет если я попробую отредактировать строку (например, стереть пару последних символов с помощью backspace)? Кстати, Денатурат как всегда забожил… Про логарифмы я почему-то забыл.
int intlen( int x )
{
return (int)log10( (double)x ) + 1;
}
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-20 14:25:24.433333
|
|
|
Vergil111
Сообщений: 5
Оценки: 0
Присоединился: 2009-12-17 16:44:21.230000
|
Так как про редактирование строки ничего не говорилось, я сделал программу подобным образом.З.ы. Я и не говорил, то что она лучше, чем вызов strlen, просто решил сделать по-другому
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-21 21:05:19.556666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Просто коряво. Комментарии излишни ;). Ничего личного.
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-21 22:52:02.933333
|
|
|
Vergil111
Сообщений: 5
Оценки: 0
Присоединился: 2009-12-17 16:44:21.230000
|
Рад, что ты смог блеснуть интеллектом;) Постараюсь в следующий раз сделать код получше и поменьше и надрать тебе задницу)
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-21 22:58:30.560000
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: Vergil111 Постараюсь в следующий раз сделать код получше вот все бы так
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-22 02:35:42.626666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: Vergil111 Рад, что ты смог блеснуть интеллектом;) Постараюсь в следующий раз сделать код получше и поменьше и надрать тебе задницу) Дерзай, будем ждать :)
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-22 05:12:30.703333
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
quote:
ORIGINAL: Vergil111 и надрать тебе задницу) quote:
ORIGINAL: Denaturat вот все бы так )))) стремление стать лучше это есть хорошо))))
|
|
|
RE: Не получается решить задачу на c++ - 2009-12-22 13:12:28.323333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Предоставлю собственную задницу для экспериментов. Хоть другим пример будет хороший, что всего можно добиться… Конечно если Вергиль111 быстро меня догонит и перегонит. Пойду, куплю рулетку.
|
|
|
|
|