Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Не получается решить задачу на c++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Не получается решить задачу на c++
Имя
Сообщение << Старые топики   Новые топики >>
Не получается решить задачу на 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 &lt;iostream&gt; using namespace std; int main() { &nbsp;&nbsp;&nbsp; setlocale(0,""); &nbsp;&nbsp;&nbsp; char b[255], a; &nbsp;&nbsp;&nbsp; cout &lt;&lt;"Введите набор чисел: "; &nbsp;&nbsp;&nbsp; cin &gt;&gt; b; &nbsp;&nbsp;&nbsp; a = strlen(b); &nbsp;&nbsp;&nbsp; cout &lt;&lt;a &lt;&lt;endl; &nbsp;&nbsp;&nbsp; return 0; } В чем собственно не получается:

Когда я ввожу в консоль набор чисел для их подсчета, в результате подсчета мне отображаются какие то кракозябры…
Как это исправить?
Post #: 1
RE: Не получается решить задачу на c++ - 2009-12-17 16:01:10.726666   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Если уж на то пошло, то переменную а сделай типа int, но ни как не char.
Post #: 2
RE: Не получается решить задачу на c++ - 2009-12-17 16:07:13.526666   
Motorcode

Сообщений: 68
Оценки: 0
Присоединился: 2009-07-15 21:15:27.283333
Переводи в строку и считай через strlen
Post #: 3
RE: Не получается решить задачу на c++ - 2009-12-17 16:09:52.433333   
andrey_94

Сообщений: 10
Оценки: 0
Присоединился: 2009-12-16 04:47:59.440000
спасибо… заработало
Post #: 4
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 пожалуйста =)
Post #: 5
RE: Не получается решить задачу на c++ - 2009-12-17 16:21:57.096666   
andrey_94

Сообщений: 10
Оценки: 0
Присоединился: 2009-12-16 04:47:59.440000
А существует ли функция аналогична strlen(); только чтобы она могла иметь тип int?  
Post #: 6
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…
Post #: 7
RE: Не получается решить задачу на c++ - 2009-12-17 16:32:35.120000   
andrey_94

Сообщений: 10
Оценки: 0
Присоединился: 2009-12-16 04:47:59.440000
совершенно верно
Post #: 8
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;
}
И да пребудет с вами сила;)
Post #: 9
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, как всегда, был очень близок к истине :).
Post #: 10
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 &lt;iostream&gt;
#include &lt;conio.h&gt;//подключаем библиотечный файл, хранящий описание функции getch() и getche();
using namespace std;
int main()
{
char ch = 'a';
unsigned int wordcount = 0;
while ((ch=getche()) != '\r'){
wordcount++ ;
}
cout &lt;&lt; "\nKolichestvo simvolov " &lt;&lt; wordcount;
getch();//чтобы окошко не закрывалось автоматом в Борланде
return 0;
}
И да пребудет с вами сила;)

Чем этот аццкий код легче легкого? Если его сравнивать с изначальным кодом ТС, то ваш код намного мудреней, в коде ТС достаточно ввести число, вызвать ф-ю и все ответ готов. Так что лажовый у вас код имхо)
_SaZ_ реализовал то, о чем я говорил выше, немного по другому но это не важно, я думаю оба варианта годятся, только в его варианте код короче выходит. Да и вообще если необходимо работать с числами, а не строками то только последний код годится, остальное хлам.
Post #: 11
RE: Не получается решить задачу на c++ - 2009-12-17 17:31:12.440000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ну мой код не укладывается в изначальное задание… Слишком уж большой там N :-P.
Post #: 12
RE: Не получается решить задачу на c++ - 2009-12-17 17:33:19.150000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Ну) я так и написал:
quote:

Да и вообще если необходимо работать с числами, а не строками то только последний код годится, остальное хлам.

если же нет, то вариант ТС вполне сгодится.
Post #: 13
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? &nbsp;


есть. логарифм называется. в твоём случае - десятичный
Post #: 14
RE: Не получается решить задачу на c++ - 2009-12-18 14:38:13.600000   
Vergil111

Сообщений: 5
Оценки: 0
Присоединился: 2009-12-17 16:44:21.230000
Просто моя программа работает как с символами, так и с числами, так что код получился немножко длиннее. Для чисел, конечно, код короче)
Post #: 15
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; }
Post #: 16
RE: Не получается решить задачу на c++ - 2009-12-20 14:25:24.433333   
Vergil111

Сообщений: 5
Оценки: 0
Присоединился: 2009-12-17 16:44:21.230000
Так как про редактирование строки ничего не говорилось, я сделал программу подобным образом.З.ы. Я и не говорил, то что она лучше, чем вызов strlen, просто решил сделать по-другому
Post #: 17
RE: Не получается решить задачу на c++ - 2009-12-21 21:05:19.556666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Просто коряво. Комментарии излишни ;). Ничего личного.
Post #: 18
RE: Не получается решить задачу на c++ - 2009-12-21 22:52:02.933333   
Vergil111

Сообщений: 5
Оценки: 0
Присоединился: 2009-12-17 16:44:21.230000
Рад, что ты смог блеснуть интеллектом;) Постараюсь в следующий раз сделать код получше и поменьше и надрать тебе задницу)
Post #: 19
RE: Не получается решить задачу на c++ - 2009-12-21 22:58:30.560000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Vergil111

Постараюсь в следующий раз сделать код получше


вот все бы так
Post #: 20
RE: Не получается решить задачу на c++ - 2009-12-22 02:35:42.626666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: Vergil111

Рад, что ты смог блеснуть интеллектом;) Постараюсь в следующий раз сделать код получше и поменьше и надрать тебе задницу)


Дерзай, будем ждать :)
Post #: 21
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
вот все бы так


)))) стремление стать лучше это есть хорошо))))
Post #: 22
RE: Не получается решить задачу на c++ - 2009-12-22 13:12:28.323333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Предоставлю собственную задницу для экспериментов. Хоть другим пример будет хороший, что всего можно добиться… Конечно если Вергиль111 быстро меня догонит и перегонит. Пойду, куплю рулетку.
Post #: 23
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Не получается решить задачу на c++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.