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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 185
#1

Раскладываем на цифры - C++

26.10.2012, 19:54. Просмотров 446. Ответов 8
Метки нет (Все метки)

Доброго времени суток.
Задача:
Дано натуральное n. Верно ли, что равны суммы четных и нечетных цифр?
Но меня мучает вопрос, что бы раскладывать число, нужно обязательно знать количество знаков? (без ввода в массив). Никак не разберусь со всеми тонкостями этого процесса. Помогите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2012, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Раскладываем на цифры (C++):

Замена последней цифры на значение наименьшей цифры в записи числа N - C++
Ошибка в задании Условие:Дано натуральное число N. Получить новое число М, которое образуется из числа N путем замены последней цифры на...

Даны цифры двух двузначных чисел. Получить цифры суммы - C++
Даны цифры двух двузначных чисел, записываемых в виде а2а1 и b2 b1, где а1 и b1— число единиц, а2 и b2 — число десятков Получить цифры...

Сложить цифры числа (до тех пор, пока не получится сумма из одной цифры) - C++
Всем Доброго времени суток. Первая программа заключается в том что с клавиатуры вводится число например 45644, нужно занести его или в...

Циклы: найти произведение последней цифры и минимальной цифры числа с произведением всех остальных - C++
Помогите, я даже не знаю о чем речь(((( Дано натуральное число n. Найти произведение последней цифры и минимальной цифры этого числа...

Вывести сумму первой и третьей цифры и произведение второй и четвертой цифры числа, заданного пользователем - C++
Пользователь вводит 4-значное число - программа выводит сумму первой и третьей цифры и произведение второй и четвертой цифры.

Получить число М, которое образуется из числа N путем замены последней цифры на значение наибольшей цифры - C++
Помогите составить программу, пожалуйста! Вот условие: Дано натуральное число N. Получить новое число М, которое образуется из числа...

8
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.10.2012, 20:06 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main(void) {
    
    int N, t1=0, t2=0;
    cin>>N;
    while(N)
    {
        if((N%10)%2==0)
            t1+=N%10;
        else
            t2+=N%10;
        N/=10;
    }
    if(t1==t2)
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
    return 0;
}
0
De_N
28 / 26 / 9
Регистрация: 15.10.2012
Сообщений: 60
26.10.2012, 20:13 #3
Как альтернатива, вот небольшой пример с библиотекой stdio.
Сперва число (int) переводится в строку (string).
Затем в цикле происходит обращение к каждому символу строки и его преобразование обратно в число.
В итоге программа выводит сумму всех цифр.
Думаю слегка модифицировав этот вариант можно вычислить суммы нужных разрядов.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdio.h"
int a;  // Входное число
String s; // Строка для работы
int b;  // Сумма
 
main()
{
// Ввод данных (числа)
printf("a = ");
scanf("%d",&a);
 
s = IntToStr(a); // его перевод в строку
 
for (int i=1; i<=s.Length(); i++)
{
b = b + StrToInt(s[i]); // Посимвольное обращение и перевод обратно в int
}
 
printf("%d\n", b);
scanf("%d",&a);
}
Пример, конечно, далеко не идеальный. Но)
0
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.10.2012, 20:15 #4
De_N, Это даже не скомпилируется.
0
De_N
28 / 26 / 9
Регистрация: 15.10.2012
Сообщений: 60
26.10.2012, 20:24 #5
soon, осмелюсь опровергнуть ваше замечание.
Данный код успешно компилируется в среде C++Builder6.
Однако на счет "кривости" кода я ничего не говорю. Да, пожалуй яркий пример быдлокода.
0
Croessmah
Эксперт CЭксперт С++
13409 / 7559 / 853
Регистрация: 27.09.2012
Сообщений: 18,606
Записей в блоге: 3
Завершенные тесты: 1
26.10.2012, 20:30 #6
Цитата Сообщение от De_N Посмотреть сообщение
осмелюсь опровергнуть ваше замечание.
g++ c:\cpp\main.cpp -o c:\cpp\main.exe
Process started >>>
c:\cpp\main.cpp:4:1: ошибка: «String» не является именем типа
c:\cpp\main.cpp: В функции «int main()»:
c:\cpp\main.cpp:13:1: ошибка: нет декларации «s» в этой области видимости
c:\cpp\main.cpp:13:15: ошибка: нет декларации «IntToStr» в этой области видимости
c:\cpp\main.cpp:17:22: ошибка: нет декларации «StrToInt» в этой области видимости
<<< Process finished.
================ READY ================
0
De_N
28 / 26 / 9
Регистрация: 15.10.2012
Сообщений: 60
26.10.2012, 20:34 #7
Хе-хе. Извиняюсь, упустил те несколько строк кода, которые среда генерирует самостоятельно)
Вы были правы.
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.10.2012, 20:50 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
 
unsigned long buf;
int Check(unsigned long a)
{
   return a < 10 ? a * (a & 1 ? -1 : 1) : (buf = a % 10) * (buf & 1 ? -1 : 1) + Check(a / 10);
}
 
int main()
{
   unsigned long a;
   std::cin >> a;
   std::cout << (Check(a) ? "not equal" : "equal");
   return 0;
}
0
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
26.10.2012, 21:03 #9
Цитата Сообщение от sergey_viper Посмотреть сообщение
Дано натуральное n. Верно ли, что равны суммы четных и нечетных цифр?
Имеется ввиду что сама цифра четная или нечетная, или номер позиции, на которой она находится.
Если определяется по четности цифры то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
void sumDigit(unsigned int* sum1, unsigned int* sum2, unsigned int num) {
    if (num/10 == 0)
        (num%2 == 0) ? (*sum1 += num) : (*sum2 += num);
    else {
        ((num%10)%2 == 0) ? (*sum1 += (num%10)) : (*sum2 += (num%10));
        sumDigit(sum1, sum2, num/10);
    }
}
 
int main() {
    unsigned int s1 = 0;
    unsigned int s2 = 0;
    sumDigit(&s1, &s2, 1212);
    std::cout << s1 << " " << s2 << std::endl;
        (s1 == s2) ? std::cout << "equal" : std::cout << "not equal";
    std::cout << std::endl;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2012, 21:03
Привет! Вот еще темы с ответами:

Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры - C++
Помогите пожалуйста с задачей ! срочно!! Необходимо написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести...

В десятичной записи числа 42*4* пропущены 2 цифры. Определите эти цифры, если известно, что число кратно 72. - C++
Помогите,пожалуйста! С++

Образовать новое число, путём замены последней цифры на значение наименьшей цифры в записи исходного числа - C++
Помогите доделать задачу, минимальную цифру нашёл, последнюю цифру нашёл, только осталось присвоить значение минимальной цифры последней,...

Дано 4 цифры, напечатать цифры в порядке возрастания - C++
в программе ввел 4 числа,она должна распологать цифры в порядке возрастания,без всяких массивов и циклов void lowtohigh(int a, int...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
26.10.2012, 21:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru