Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Учусь... все сложно...
0 / 0 / 0
Регистрация: 09.04.2019
Сообщений: 65
1

Сложение в столбик

08.01.2023, 05:49. Показов 423. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Готовый код но надо что б числа складывались столбиком… найти и вывести в файл запись нахождения суммы двух очень длинных чисел в виде столбика. Что б сами числа вводились в командной строке не в строку а в столбик

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
#include <iostream>
#include <cstring>
 
using namespace std;
 
bool is_native(string s)
{
  if (!s.size()) return false;
  for (auto c : s) 
    if (!isdigit(c)) return false;
  return true;
}
 
inline char sum_digs(unsigned char a, unsigned char b, bool &carry)
{
  unsigned result = carry + a + b - 0x60;
  carry = result > 9;
  return 0x30 + (result % 10); 
}
 
#define SYMBOL_OF(s, idx) ((idx) >= 0 ? (s)[(idx)] : '0')
 
// сложение столбиком двух натуральных чисел, в виде строк.
bool try_sum(string s1, string s2, string &sum)
{
  sum = "";
  if (!is_native(s1) || !is_native(s2)) return false; // error
  bool carry = false;
  for (int i = s1.size() - 1, j = s2.size() - 1; i > -1 || j > -1; i--, j--)
    sum = sum_digs(SYMBOL_OF(s1, i), SYMBOL_OF(s2, j), carry) + sum;
  if (carry) sum = '1' + sum;  
  return true;  
}
 
int main()
{
  string x1 = "184567930095460984394580394863754967059680499", 
         x2 = "934587657924379273489567324658762783654725374627543", sum;
         
  if (try_sum(x1, x2, sum))
    cout << "# " << x1 << " + " << x2 << " = " << sum << '\n';
  else cout << "not a number\n";  
  return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2023, 05:49
Ответы с готовыми решениями:

Сложение в столбик
Даны два целых числа — двузначное число aa и однозначное число bb, причем первое задается двумя...

Сложение чисел строкового типа в столбик
Есть задание: даны два вещественных числа в виде срок. Они могут быть разной длины Необходимо...

Умножение и сложение в столбик двух чисел без использования массива
Здравствуйте, уважаемые. Нужно написать код для умножения и сложения в столбик двух чисел без...

Сложение в столбик в массиве
Даны две целочисленные последовательности A и B, каждый элемент которых является цифрой, то есть...

Сложение\вычитание в столбик
Нужно написать программу, которая выполнит сложение и вычитание (выбор выполняемого действия...

7
 Аватар для Kuzia domovenok
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,521
Записей в блоге: 1
08.01.2023, 05:51 2
и в чём проблема? поставить перенос строки?
C++
1
cout << "# " << x1 << endl<<" + " << x2 << endl<<" = " << sum <<endl;
0
Учусь... все сложно...
0 / 0 / 0
Регистрация: 09.04.2019
Сообщений: 65
08.01.2023, 05:55  [ТС] 3
Куда именно?!
0
 Аватар для Kuzia domovenok
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,521
Записей в блоге: 1
08.01.2023, 06:10 4
FoxTail7, а я какую-то абракадабру написал что ли, по которой не понятно, о каком месте кода мы с тобой говорим?
Может хватит уже относиться к своему собственному коду как к каким-то магическим письменам, которые ты копируешь, ничего в них не понимая?
2
Учусь... все сложно...
0 / 0 / 0
Регистрация: 09.04.2019
Сообщений: 65
09.01.2023, 22:05  [ТС] 5
Знаете… вы и в правду похоже амбрукадабру какую то написали… я ведь русским языком написала что мне надо уравнение решаемое столбиком… а не просто перенос строк… т.е в примере должна быть свойственная для столбика черта означающая равно вместо знака =… и что б числа вписывались в консоли а не в самом коде…
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
09.01.2023, 23:31 6
Лучший ответ Сообщение было отмечено FoxTail7 как решение

Решение

Так?
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
47
48
49
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
 
bool is_native(string s)
{
  if (!s.size()) return false;
  for (auto c : s) 
    if (!isdigit(c)) return false;
  return true;
}
 
inline char sum_digs(unsigned char a, unsigned char b, bool &carry)
{
  unsigned result = carry + a + b - 0x60;
  carry = result > 9;
  return 0x30 + (result % 10); 
}
 
#define SYMBOL_OF(s, idx) ((idx) >= 0 ? (s)[(idx)] : '0')
 
// сложение столбиком двух натуральных чисел, в виде строк.
bool try_sum(string s1, string s2, string &sum)
{
  sum = "";
  if (!is_native(s1) || !is_native(s2)) return false; // error
  bool carry = false;
  for (int i = s1.size() - 1, j = s2.size() - 1; i > -1 || j > -1; i--, j--)
    sum = sum_digs(SYMBOL_OF(s1, i), SYMBOL_OF(s2, j), carry) + sum;
  if (carry) sum = '1' + sum;  
  return true;  
}
 
int main()
{
  string x1 = "184567930095460984394580394863754967059680499", 
         x2 = "934587657924379273489567324658762783654725374627543", sum;
  if( x1.size() < x2.size() )
    swap( x1, x2 );
  if (try_sum(x1, x2, sum))
  {
    cout << " " << setw(sum.size()) <<  x1 << "\n+\n " << setw(sum.size()) << x2 << endl;
    cout<<string( sum.size()+1, '-' );
    cout<<endl<<" "<<setw(sum.size())<<sum<<endl;
  }
  else cout << "not a number\n";  
  return 0;
}
Миниатюры
Сложение в столбик  
1
Учусь... все сложно...
0 / 0 / 0
Регистрация: 09.04.2019
Сообщений: 65
09.01.2023, 23:36  [ТС] 7
Большое спасибо)
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
09.01.2023, 23:39 8
Лучший ответ Сообщение было отмечено FoxTail7 как решение

Решение

Собственно вот небольшая доделка для вывода в файл
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
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <cstring>
#include <sstream>
#include <fstream>
#include <iomanip>
using namespace std;
 
bool is_native(string s)
{
  if (!s.size()) return false;
  for (auto c : s)
    if (!isdigit(c)) return false;
  return true;
}
 
inline char sum_digs(unsigned char a, unsigned char b, bool &carry)
{
  unsigned result = carry + a + b - 0x60;
  carry = result > 9;
  return 0x30 + (result % 10);
}
 
#define SYMBOL_OF(s, idx) ((idx) >= 0 ? (s)[(idx)] : '0')
 
// сложение столбиком двух натуральных чисел, в виде строк.
bool try_sum(string s1, string s2, string &sum)
{
  sum = "";
  if (!is_native(s1) || !is_native(s2)) return false; // error
  bool carry = false;
  for (int i = s1.size() - 1, j = s2.size() - 1; i > -1 || j > -1; i--, j--)
    sum = sum_digs(SYMBOL_OF(s1, i), SYMBOL_OF(s2, j), carry) + sum;
  if (carry) sum = '1' + sum;
  return true;
}
 
int main()
{
  string x1 = "184567930095460984394580394863754967059680499",
         x2 = "934587657924379273489567324658762783654725374627543", sum;
  if( x1.size() < x2.size() )
    swap( x1, x2 );
  if (try_sum(x1, x2, sum))
  {
    ostringstream s;
    s << " " << setw(sum.size()) <<  x1 << "\n+\n " << setw(sum.size()) << x2 << endl;
    s << string( sum.size()+1, '-' );
    s << endl<<" "<<setw(sum.size())<<sum<<endl;
    cout<<s.str();
    ofstream out("output.txt");
    out << s.str();
  }
  else cout << "not a number\n";
  return 0;
}
ps для спасибо кнопочка под сообщениями есть
1
09.01.2023, 23:39
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2023, 23:39
Помогаю со студенческими работами здесь

Сложение массивов разной длины в столбик; длинная арифметика
Здравствуйте! Требуется реализовать функцию Add, которая будет принимать на вход два массива, их...

Поменять местами последний столбик и столбик, содержащий минимальный положительный элемент матрицы
Задан список действительными числами, лежащими в диапазоне от –10 до 10; Написать программу,...

Как сделать отчет в котором 1 столбик выводил имена а 2 столбик показывал к какой группе относится ребенок
В детском саду дети распределены на группы по возрастному принципу. В одной группе может находиться...

Написать программу, которая выводит на экран в два столбика все прописные (1 столбик) и заглавные (2 столбик) латинские буквы.
Задание: Написать программу с использованием одного из операторов цикла: арифметического,...

в файле содержатся слова написанные в столбик нужно найти среди них союзы и вывести в отдельный файл также в столбик
текст может быть различного содержания а вот союзы: и да также тоже а но зато однако или


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru