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

как записать числа n и k в виде составного числа nk - C++

Восстановить пароль Регистрация
 
 
Trane Pitrovich
1 / 1 / 0
Регистрация: 03.09.2013
Сообщений: 16
05.09.2013, 23:54     как записать числа n и k в виде составного числа nk #1
как записать числа n и k в виде составного числа nk
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 23:54     как записать числа n и k в виде составного числа nk
Посмотрите здесь:

C++ Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел?
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми C++
C++ Из одного файла считать целые числа, в другие файлы записать четные и нечетные числа
Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых C++
C++ Записать в файл все числа от нуля до 2^16 в hex-виде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 00:00     как записать числа n и k в виде составного числа nk #2
Цитата Сообщение от Trane Pitrovich Посмотреть сообщение
как записать числа n и k в виде составного числа nk
в смысле?
вывести на экран?
C++
1
printf("%d%d",n,k);
или сосчитать если n и k от 0 до 10
то n*10+k
если нет то умножай n на разрядность k и прибавляй k
Trane Pitrovich
1 / 1 / 0
Регистрация: 03.09.2013
Сообщений: 16
06.09.2013, 00:04  [ТС]     как записать числа n и k в виде составного числа nk #3
допустим есть 2 числа n=32 и k=48 в итоге должно получится 3248

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
в смысле?
вывести на экран?
C++
1
printf("%d%d",n,k);
или сосчитать если n и k от 0 до 10
то n*10+k
если нет то умножай n на разрядность k и прибавляй k

допустим есть 2 числа n=32 и k=48 в итоге должно получится 3248
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 00:07     как записать числа n и k в виде составного числа nk #4
Цитата Сообщение от Trane Pitrovich Посмотреть сообщение
в итоге должно получится 3248
где получится? на экране? в другой переменной?
Trane Pitrovich
1 / 1 / 0
Регистрация: 03.09.2013
Сообщений: 16
06.09.2013, 00:08  [ТС]     как записать числа n и k в виде составного числа nk #5
Цитата Сообщение от ValeryS Посмотреть сообщение
где получится? на экране? в другой переменной?
в другой переменной
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 00:11     как записать числа n и k в виде составного числа nk #6
Цитата Сообщение от Trane Pitrovich Посмотреть сообщение
в другой переменной
Цитата Сообщение от ValeryS Посмотреть сообщение
если нет то умножай n на разрядность k и прибавляй k
k у тебя 2 десятичных разряда т.е 100(10^2)
32*100+48=3248
это даже не программирование, а школьная математика
Trane Pitrovich
1 / 1 / 0
Регистрация: 03.09.2013
Сообщений: 16
06.09.2013, 00:13  [ТС]     как записать числа n и k в виде составного числа nk #7
Цитата Сообщение от ValeryS Посмотреть сообщение
k у тебя 2 десятичных разряда т.е 100(10^2)
32*100+48=3248
это даже не программирование, а школьная математика
ну эт понятно,как это в программном коде реализовать?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 00:18     как записать числа n и k в виде составного числа nk #8
Цитата Сообщение от Trane Pitrovich Посмотреть сообщение
ну эт понятно,как это в программном коде реализовать?
так и реализовать
C++
1
int c=32*100+48;
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
06.09.2013, 11:37     как записать числа n и k в виде составного числа nk #9
Объединяем все вышесказанное
C++
1
2
3
4
5
int f(int n, int k)
{  char b[20];
  sprintf(b, "%d%d", n, k);
  return atoi(b);
}
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
06.09.2013, 15:16     как записать числа n и k в виде составного числа nk #10
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
 
int merge(int n, int k)
{
    if (k < 0)
    {
        n = -n;
        k = -k;
    }
    if (!k)
        return n;
    if (k > 10)
    {
        n = merge(n, k / 10);
    }
    return n * 10 + (k % 10);
}
 
int main(void)
{
    printf("%d\n", merge(23, 45));
    return 0;
}
reisal78
 Аватар для reisal78
603 / 516 / 119
Регистрация: 28.04.2013
Сообщений: 1,451
06.09.2013, 15:34     как записать числа n и k в виде составного числа nk #11
А если так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <sstream> // нужен для stringstream
 
 
using namespace std;
 
 
int main()
{setlocale (LC_ALL,"");
 
    int n = 32;
    int k = 48;
 
    stringstream tmp;
    tmp << n << k;
 
    int rez;
    tmp >> rez;
 
    cout << rez;
return 0;
}
Даже попроще сделал =)
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 16:22     как записать числа n и k в виде составного числа nk #12
Цитата Сообщение от Байт Посмотреть сообщение
Объединяем все вышесказанное
а нахрена козе боян?
вот так это делается
C++
1
2
3
4
5
6
7
int tmp=k;
while(tmp)
{
 n*=10;
tmp/=10;
}
int c=n+k;
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
06.09.2013, 17:16     как записать числа n и k в виде составного числа nk #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int digits(int x)  
{  
    return (x < 10 ? 1 :   
        (x < 100 ? 2 :   
        (x < 1000 ? 3 :   
        (x < 10000 ? 4 :   
        (x < 100000 ? 5 :   
        (x < 1000000 ? 6 :   
        (x < 10000000 ? 7 :  
        (x < 100000000 ? 8 :  
        (x < 1000000000 ? 9 :  
        10)))))))));  
}
int n,k;
n*=10*digits(k);
int s = n + k;
чтобы быстрее работало)
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 17:51     как записать числа n и k в виде составного числа nk #14
Цитата Сообщение от Raali Посмотреть сообщение
чтобы быстрее работало)
очень быстро
сколько у тебя ветвлений, посчитай
а если будет 15значное число, дальше лесенку будешь строить?
Цитата Сообщение от Raali Посмотреть сообщение
10*digits(k);
и ты уверен что если 10*2 будет 100?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
06.09.2013, 18:12     как записать числа n и k в виде составного числа nk #15
Цитата Сообщение от ValeryS Посмотреть сообщение
и ты уверен что если 10*2 будет 100?
почему то был уверен)
Цитата Сообщение от ValeryS Посмотреть сообщение
а если будет 15значное число, дальше лесенку будешь строить?
рассчитывал для максимального значения int, которое составляет 10 знаков

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
сколько у тебя ветвлений, посчитай
за то нет медленного деления
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 18:25     как записать числа n и k в виде составного числа nk #16
Цитата Сообщение от Raali Посмотреть сообщение
за то нет медленного деления
"медленное" деление оптимизаторы уже давно превращают в "быстрое" умножение
но даже не это страшно, деление от 30 до 50 тактов процессора
а вот ветвление более страшно, из за кэширования процессора
процессор загоняет в кэш несколько команд, ну чтобы не за каждой командой в память бегать, и вот ветвление, которое он неправильно предсказал, он выгружает все команды и грузит новые, а это время

Добавлено через 1 минуту
хотя это мелочи на таком коде все быстро исполнится, не стоит заморачиватся, а вот возвращаемые данные поправь
dmitry94
517 / 187 / 34
Регистрация: 25.05.2012
Сообщений: 780
06.09.2013, 18:28     как записать числа n и k в виде составного числа nk #17
Предлагаю свой вариант, работает 100%
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
int d(int in,int dg)
{
    int n = 1;
    for(int i=0; i<dg; i++) n *= in;
    return n;
}
 
int main() 
{
    int n=32, k=48;
    int i;
    for (i=0; i< 10; i++) if (d(10,i) > n) break;
    int result = d(10,i-(i-2))*n+k;
    std::cout << "result= " << result;
    return 0;
}
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
06.09.2013, 18:33     как записать числа n и k в виде составного числа nk #18
Цитата Сообщение от dmitry94 Посмотреть сообщение
int d(int in,int dg)
я так понимаю это возведение 10 в степень?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
06.09.2013, 18:38     как записать числа n и k в виде составного числа nk #19
Цитата Сообщение от ValeryS Посмотреть сообщение
int d(int in,int dg)
это будет вызываться каждый раз в цикле, тогда уж лучше сделать по варианту ValeryS,

Цитата Сообщение от ValeryS Посмотреть сообщение
while(tmp)
{
*n*=10;
tmp/=10;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 18:45     как записать числа n и k в виде составного числа nk
Еще ссылки по теме:

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив C++
Как массив цифр записать в виде одного числа? C++
Как записать числа в массив? C++

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

Или воспользуйтесь поиском по форуму:
dmitry94
517 / 187 / 34
Регистрация: 25.05.2012
Сообщений: 780
06.09.2013, 18:45     как записать числа n и k в виде составного числа nk #20
Цитата Сообщение от Raali Посмотреть сообщение
это будет вызываться каждый раз в цикле, тогда уж лучше сделать по варианту ValeryS,
Да, конечно. Я просто думал цель этой темы создать код позаморочнее . На самом деле, imho sprintf(%d,%d), atoi() самый быстрый вариант в данном случае
Yandex
Объявления
06.09.2013, 18:45     как записать числа n и k в виде составного числа nk
Ответ Создать тему
Опции темы

Текущее время: 16:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru