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

Целое четырехзначное число заменить числом, получающимся при записи его цифр в обратном порядке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Некомпилится простой код! http://www.cyberforum.ru/cpp-beginners/thread443755.html
Привет! Сразу к делу. Вот код #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv) { unsigned long fibo;
C++ Опистать структуру с именем PRICE, содержащую следующие параметры 1. Опистаь структуру с именем PRICE, содержащую следующие параметры: -название товара; -название магазина в которм продаеться товар; -стоимость товара в рублях. Написать програму выполняющюю... http://www.cyberforum.ru/cpp-beginners/thread443745.html
vector C++
Как я понял в С++ vector это замена динамическому массиву, как в Delphi ss : array of String; Только тут vector <string> ss; Только как с ним работать? Как задать длину? Аналог дэльфийскому...
Ищу код перевода числа в строку и назад... C++
itoa и atoi не подходят...
C++ Помогите поставить размер строки http://www.cyberforum.ru/cpp-beginners/thread443718.html
как сделать чтобы не подчёркивало l в квадратных скобках? const int l=n-m+1; char str;
C++ Потоки Я нашел в интернете отличную статью про потоки и многопоточность и на её основе написал следующую программу: #include "stdafx.h" #include <process.h> #include <stdio.h> #include <iostream>... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
10.02.2012, 03:31
Цитата Сообщение от Сtrl Посмотреть сообщение
Нет такого типа, но задача не сводится к обращению строки.
Не сводится, но так проще.
Цитата Сообщение от Сtrl Посмотреть сообщение
Надеюсь, мне не придется рассказывать про длинную арифметику, чтобы это доказать.
Ну я когда-то краем уха слышал, а вот топикстартеру, думаю, интересно будет узнать. Так, что, если не затруднит...

Варварский способ перевернуть от 1 до 9 цифр, ТС, никогда так не делайте! Ну раз уж решили повыпендриваться...
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>
#include <math.h>
#include <limits.h>
 
#define digitscount(num) ((int)log10(num) + 1)
#define MAX_DIGITS digitscount(UINT_MAX)
 
unsigned swap_digits(unsigned num, int left, int right){
    return ( left < right ) ? 0 : ( left == right ) ? num / (int)pow(10.0, right - 1) % 10 * (int)pow(10.0, right - 1) :
        num / (int)pow(10.0, left - 1) % 10 * (int)pow(10.0, right - 1) + num / (int)pow(10.0, right - 1) % 10 * (int)pow(10.0, left - 1) + swap_digits(num, left - 1, right + 1);
}
 
int main(void){
    unsigned n;
    int digits;
    
    while ( printf("Number: ") && scanf("%u", &n) == 1 && n > 0 && ( digits = digitscount(n) ) < MAX_DIGITS )
        printf("Result: %0*u\n", digits, swap_digits(n, digits, 1));
    
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru