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

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

Войти
Регистрация
Восстановить пароль
 
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
#1

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

14.04.2011, 15:00. Просмотров 496. Ответов 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;}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 15:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение лидирующими нолями при неравном размере строк (C++):

Ошибка при большом размере массива - C++
Есть код: #include <stdio.h> main() { int y=0; const int i=10000000; // если i=1000000 работает, если больше, например...

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

Как компилятор узнаёт о размере массива при выполнении операции delete? - C++
Такой глупый вопрос появился при изучении операций new и delete. Я создаю указатель на массив int с помощью операции new. int size; ...

Зависит ли от платформы значение выражения -1u, при размере типа, равном 32 бита? - C++
Кто как думает, значение выражения -1u зависит от платформы или нет? :D

При добровольном страховании домашнего имущества по договорам, составленным на срок менее года, страховые платежи вносятся в размере: - C++
При добровольном страховании домашнего имущества по договорам, составленным на срок менее года, страховые платежи вносятся в размере: 30%...

Массив: При размере массива свыше 67000 строк, программа сообщает ошибку "Туpe mismatch". Почему? - VBA
Помогите. Когда вывожу массив длиной 60000 строк процедура работает идеально, а на 67000 уже пишет "Туpe mismatch". Почему? ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
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.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2011, 15:11
Привет! Вот еще темы с ответами:

Последовательное заполнение строк таблицы Xcell при нажатии на Cb - VBA
Уважаемые форумчане, доброго всем времени суток. Прошу помощи. У меня возникла проблема следующего характера: имеется таблица экселя,...

Заполнение строк работает только при их количестве 6 и более - 1С
Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл //товар и артикул Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда ...

Настройки logrotate: архивация при несоответствующем размере файла - Bash
Добрый день! У меня есть настройки для logrotate утилиты ~/debug*.log { # if file is absent then it is not a error ...

Отключение скриптов при размере экрана меньше 480px - jQuery
Доброго времени суток. Как можно реализовать отключение некоторых скриптов при размере экрана меньше 480px?


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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