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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
vadosik
6 / 6 / 0
Регистрация: 18.04.2011
Сообщений: 63
#1

Написать программу которая складывает первую и последнюю цифру числа. - C++

07.11.2011, 13:08. Просмотров 2234. Ответов 14
Метки нет (Все метки)

Всего цифр с числе может быть до 5 (тип числа int). Собсно как?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2011, 13:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу которая складывает первую и последнюю цифру числа. (C++):

Написать функцию, которая складывает первую и последнюю строки квадратного массива и записывает результат в первый столбец - C++
Задание звучит так: написать функцию, которая складывает первую и последнюю строки квадратного массива и записывает результат в первый...

Написать программу, которая по одной из цифр 0,1,2,3, 4,5,6,7,8,9 – послед-ней цифре числа N - находит последнюю цифру квадрата этого числа - C++
Чтобы определить на какую цифру оканчивается квадрат целого числа, достаточно знать последнюю цифру самого числа. Написать программу,...

Написать программу, которая по последней цифре числа позволяет определить последнюю цифру его квадрата - C++
13 Написать программу, которая по последней цифре числа позволяет определить последнюю цифру его квадрата. Использовать оператор выбора...

Переставить первую и последнюю цифру числа местами - C++
Дано какое-то целое число n. 1. Найти количество цифр 3, т.е. сколько троек в числе . 2. Получить число в обратном порядке без тройки...

Определить и вывести первую и последнюю цифру числа - C++
Не знаю, как сделать, чтобы программа одновременно находила первое и последнее число #include <stdio.h> #include <conio.h> int...

Написать программу позволяющую по последней цифре числа определить последнюю цифру его квадрата - C++
Помогите рещить задачу в с++ написать программу позволяющую по последней цифре числа определить последнюю цифру его квадрата заранее...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.11.2011, 13:29 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void)
{
    int n, first, last;
    
    n = 12345;
    
    for (first = n; first / 10 > 0; first /= 10)
        ;
    last = n % 10;
    printf("%d\n", first + last);
    return 0;
}
Код
[guest@localhost tests]$ .ansi t.c -o t
[guest@localhost tests]$ ./t
6
[guest@localhost tests]$
1
pincet
1242 / 811 / 86
Регистрация: 23.07.2010
Сообщений: 4,149
07.11.2011, 13:31 #3
Собсно так:
получаешь остаток от деления на 10 - это последняя цифра
делишь на 10, пока число >10 - получаешь первую
.....
profit
1
vadosik
6 / 6 / 0
Регистрация: 18.04.2011
Сообщений: 63
07.11.2011, 14:14  [ТС] #4
Цитата Сообщение от accept Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void)
{
    int n, first, last;
    
    n = 12345;
    
    for (first = n; first / 10 > 0; first /= 10)
        ;
    last = n % 10;
    printf("%d\n", first + last);
    return 0;
}
Код
[guest@localhost tests]$ .ansi t.c -o t
[guest@localhost tests]$ ./t
6
[guest@localhost tests]$
СПАСИБО!

Добавлено через 1 минуту
А ещё что дописать чтоб менять первую и последнюю цифру местами??

Добавлено через 12 минут
А ещё что дописать чтоб менять первую и последнюю цифру местами?? и при этом выводил всё число целиком с поменяными цифрами
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.11.2011, 14:19 #5
нужно в цикл добавить подсчёт цифр в числе
потом последнюю цифру умножить на десять число_цифр - 1 раз
прибавить к полученному числу n / 10
поделить полученное число на десять, умножить на десять
прибавить к полученному числу первую цифру
1
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 14:24 #6
Реализация:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <math.h>
 
int main()
{
    int n, first, last, nd;
 
    while (printf("enter n (0 to exit): ") && scanf("%d", &n) && n) {
        for (first = n, nd = 1; first / 10 != 0; first /= 10)
            nd++;
        last = n % 10;
        n -= first * (int) pow(10, nd-1);
        n -= last;
        last *= (int) pow(10, nd-1);
        n += first + last;
        printf("%d\n", n);
    }
    return 0;
}
1
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.11.2011, 16:02 #7
printf() может вернуть отрицательное значение, которой является истиной
scanf() может вернуть отрицательное значение, которой является истиной
в случае ошибки цикл не должен продолжаться

C
1
while (printf("enter n (0 to exit):\n") > 0 && scanf("%d", &n) == 1 && n > 0) {
без символа конца строки, при построчной буферизации потока вывода, сообщение из printf() останется в буфере, если тот не заполнен (не выведется на экран в то время, когда ожидается)

C
1
2
3
    while (printf("enter n (0 to exit):\n") > 0
        && scanf("%d", &n) == 1
        && n > 0) {
1
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 16:43 #8
C
1
        && n != 0) {
отрицательные числа тоже обрабатываются
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.11.2011, 16:47 #9
не, число нужно сделать положительным перед обработкой
операция деления с остатком не определена
и обычное деление, вроде, тоже
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 16:47 #10
Цитата Сообщение от accept Посмотреть сообщение
без символа конца строки, при построчной буферизации потока вывода, сообщение из printf() останется в буфере, если тот не заполнен
У меня все выводится правильно, от чего это зависит?
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.11.2011, 16:49 #11
C89(draft) 3.3.5 Multiplicative operators
Код
   When integers are divided and the division is inexact, if both
operands are positive the result of the / operator is the largest
integer less than the algebraic quotient and the result of the %
operator is positive.  If either operand is negative, whether the
result of the / operator is the largest integer less than the
algebraic quotient or the smallest integer greater than the algebraic
quotient is implementation-defined, as is the sign of the result of
the % operator.  If the quotient a/b is representable, the expression
(a/b)*b + a%b shall equal a .
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 16:53 #12
accept, нет, я имел в виду, что без '\n' в строке, у меня все выводится правильно.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.11.2011, 16:55 #13
то есть при простом делении, если хотя бы один операнд отрицательный, то при результате 0.5, может произойти округление до нуля или единицы

Цитата Сообщение от Net_Wanderer
accept, нет, я имел ввиду, что без '\n' в строке, у меня все выводится правильно.
это зависит от реализации, оно может быть выведено в самом конце программы, причём все сразу
1
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 16:59 #14
Цитата Сообщение от accept Посмотреть сообщение
операция деления с остатком не определена
и обычное деление, вроде, тоже
это, да, вспомнил что в K&R про это тоже написано
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.11.2011, 17:30 #15
Цитата Сообщение от vadosik Посмотреть сообщение
А ещё что дописать чтоб менять первую и последнюю цифру местами?? и при этом выводил всё число целиком с поменяными цифрами
На плюсах:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
 
int swap_first_and_last_digits( int x )
{
    std::string str = boost::lexical_cast< std::string > (x);
    std::swap( str[ str.at(0) == '-' ], str.at( str.size() - 1 ) );
    return boost::lexical_cast< int > (str);
}
 
int main()
{
    int n = -12345;
    std::cout << swap_first_and_last_digits(n);
}
Результат: http://liveworkspace.org/code/50439b...e05af8e7221436
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2011, 17:30
Привет! Вот еще темы с ответами:

Определить первую/последнюю цифру данного натурального числа - C++
Привет Всем, мне нужна помощь в решении одной задачи по С++. Задача такова: Дано натуральное число. Определить: А) Его первую цифру. ...

Как сделать через класс? Дано число. Удалить из числа первую и последнюю цифру - C++
...

Программа которая складывает 2 числа.Числа вбиты в программу заранее. Не получается. Плохо знаю этот язык - C++
Помогите пожалуйста(((

Написать функцию, которая в заданном натуральном числе а переставляет последнюю цифру в начало - C++
Помогите написать функцию, которая в заданном натуральном числе а переставляет последнюю цифру в начало. У меня есть код, но его нужно...


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

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

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