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

Заполнение лидирующими нолями при неравном размере строк - C++

Восстановить пароль Регистрация
 
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.04.2011, 15:00     Заполнение лидирующими нолями при неравном размере строк #1
Решил попробовать длинную арифметику...
Начал с суммы. Реализовал собственно сумму и застопорился на добавлении лидирующих нолей=\
Например, есть 2 строки-"123" и "12345", первую необходимо привести к виду "00123"
Получилось у меня примерно такое(не работает вообще)
C++
1
2
3
4
5
6
7
8
9
void nol(char a[103],char b[103]){
    int i;
    if (strlen(a)>strlen(b))
    for (i = strlen(b)-2; i >=0; i--) {   //хотел пройтись циклом с конца числа, перемещая значение элемента на разницу размеров строк,а выбранный элемент обнулить.
    b[i]=b[i+strlen(a)-strlen(b)];
    b[i+strlen(a)-strlen(b)];
    }//else...
 
return;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 15:00     Заполнение лидирующими нолями при неравном размере строк
Посмотрите здесь:

C++ При добровольном страховании домашнего имущества по договорам, составленным на срок менее года, страховые платежи вносятся в размере:
C++ Не получается заполнение двумерного массива случайными числами с указанием количества строк и столбцов.
Заполнение списка с возможностью перестановки его строк C++
C++ ошибка при большом размере массива
C++ О размере циклов, break и производительности
Заполнение строк в структурах C++
Разница в размере исходного и декодированного файла C++
Как компилятор узнаёт о размере массива при выполнении операции delete? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
14.04.2011, 15:11     Заполнение лидирующими нолями при неравном размере строк #2
Вот, писал когда-то.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*Входной файл INPUT.TXT в первой строке содержит числа A и B, разделенные пробелом. (1 <= A <= 9, 1 <= B <= 104)
В выходной файл OUTPUT.TXT выведите одно число – результат возведения в степень, без лидирующих нулей.*/
 
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
#define BASE 100000000
#define LEN 8
 
void power (std::vector <int> &, const int);
 
int main()
{
    std::ifstream ifs ("INPUT.TXT");
    std::ofstream ofs ("OUTPUT.TXT");
 
    std::vector <int> num;
    int var, pow;
 
    std::cin >> var >> pow;
    num.push_back (var);
 
    for (int i=0; i<pow-1; i++)
        power (num, var);
 
    std::cout << num.back ();
    for (int i = num.size () - 2; i >= 0; i--)
        std::cout << std::setfill ('0') << std::setw (LEN) << num[i];
 
    ifs.close ();
    ofs.close ();
    return 0;
}
 
void power (std::vector <int> &vec, const int var)
{
    long carry = 0;
    for (int i = 0; i < vec.size () || carry; i++)
    {
        if (i == vec.size ()) vec.push_back (0);
        carry += vec[i] * var;
        vec[i] = carry % BASE;
        carry /= BASE;
    }
}
Программа реализована с помощью вектора, но с массивом суть та же.
Дополнение нулями и вывод реализуется с помощью манипуляторов в строках 27-29.
Yandex
Объявления
14.04.2011, 15:11     Заполнение лидирующими нолями при неравном размере строк
Ответ Создать тему
Опции темы

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