Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Программирование на С++

Ответить
Настройки темы
Программирование на С++

Дизайнер


Сообщения: 410
Благодарности: 1

Профиль | Отправить PM | Цитировать


Народ, выручайте, нужно решить задачку

задача такая:

Дано произвольное целое число n. Написать программу, которая разбивает число n на цифры и выводит их на экран; подсчитывает сколько цифр в числе n; находит сумму цифр числа n; меняет порядок цифр числа n на обратный.

... может есть какие-нибудь идеи как решить...

Буду благодарен

Отправлено: 15:45, 08-01-2003

 

Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Tanchenko AleXanDr
число делится по цифрам делением n/10 и взятием остатка n%10.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 16:29, 08-01-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Дизайнер


Сообщения: 410
Благодарности: 1

Профиль | Отправить PM | Цитировать


// vasketsov, спасибо... идею понял... щас попробую на практике

Отправлено: 21:35, 08-01-2003 | #3


Старожил


Сообщения: 225
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

-------
Нет такой плохой ситуации, которая не могла бы стать еще хуже.


Отправлено: 17:03, 09-01-2003 | #4

Lunich


Сообщения: n/a

Профиль | Цитировать


На С можно преобразовать целое в строку:
//
char buffer[20]
_itoa( n, buffer, 10 );
//
а потом для каждого элемента полученной строки, отняв от него 0х30 получить его значение в int. Кол-во чисел:
//
slren( buffer );
//

Отправлено: 22:44, 10-01-2003 | #5

Yagur


Сообщения: n/a

Профиль | Цитировать


Я преобразую число(iKod) в строку(c) так:
   char c[5];
   sprintf(c, "%d", iKod);

Отправлено: 16:27, 23-01-2003 | #6


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Yagur
а почему 5 а не 12 ?

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 17:13, 23-01-2003 | #7


Монголо-татар


Сообщения: 117
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Roman Go
Цитата:
незнаю как на си, а на Паскале можно было бы перевести число в строку, а строка это массив, сколько в нем элементов определяется одной процедуркой, сложить по цифиркам это  тоже просто, каждый символ в тип интежер и суммируй себе в какой-нибудь переменной, вывести задом наперед, так не с головы строки идти, а с последнего элемента...
конечно проще... но разумнее? быстрее?
сколько нужно ресурсов и процессорного времени для переводов туды сюды? что быстрее работа с текстом или числами?
я по молодости, тоже был любитель стринга... щас меня от него воротит... там все функции и процедуры такие тяжелые... уж лучше как-нить по свойски...
(это я ваще про всякие визуальные языки)

-------
* * * * * * * * Мы - это наши желания. Зигмунд Фрейд


Отправлено: 09:11, 24-01-2003 | #8


Дизайнер


Сообщения: 410
Благодарности: 1

Профиль | Отправить PM | Цитировать


помогите решить еще одну задачу

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

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

насколько я понимаю , нужно значение строки преобразовать в число. Это делает вроде бы функция atoi, какие параметры она использует?
Цитата:
_itoa( n, buffer, 10 );
это обратная ей. А что здесь есть 10?

Добавлено:

Ork Yason
как всегда флуд

Отправлено: 22:36, 14-03-2003 | #9


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Tanchenko AleXanDr
Если без скобок выражение, то решается всё не просто, а очень просто (на голом C):
Код: Выделить весь код
int expression(char * expr)
{
    int result;
    char * c;
    result = 0;
    c = expr;
    if(!isdigit(*c))
    {
        printf("Ошибочка вышла: \"...%s\"\n", c);
        exit(1);
    }
    for(; isdigit(*c); ++c)
        result = result * 10 + (c - '0');
    switch(*c)
    {
        case 0:
            return result;
        case '+';
            return result + expression(c + 1);
        case '-';
            return result - expression(c + 1);
        default:
            printf("Ошибочка вышла: \"...%s\"\n", c);
            exit(1);
    }
}
Цитата:
А что здесь есть 10?
Основание системы счисления.

-------
http://ivank.ru


Отправлено: 23:08, 14-03-2003 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Программирование на С++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Программирование с TCP/IP. Guest Программирование и базы данных 1 17-06-2004 09:43
Программирование andy666 Программирование и базы данных 3 24-10-2003 22:17
Программирование andy666 Программирование и базы данных 1 10-10-2003 19:52
Программирование на Яве Guest Программирование и базы данных 2 05-10-2003 20:09
Программирование LeXo Программирование и базы данных 10 11-10-2002 12:23




 
Переход