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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.60
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
#1

Сложение двух чисел - C++

25.03.2010, 18:23. Просмотров 5601. Ответов 17
Метки нет (Все метки)

Сложение двух чисел. Как, если оба числа в диапазоне от 0 до 2*10^9 ? Если складывать 2*10^9 + 2*10^9 то long int не справляется((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2010, 18:23     Сложение двух чисел
Посмотрите здесь:

Сложение двух чисел - C++
P.S Код должен выполнять аналогию сложения двух числе в столбик. Добавлено через 34 секунды

Сложение двух чисел - C++
Написать программу сложения двух чисел на Visual c++. Вот мой код. #include "stdafx.h" #include <stdio.h> #include <conio.h> ...

Рекурсия: сложение двух чисел - C++
Написать рекурсивную программу сложения двух чисел........ помогите срочно нужно

Сложение двух чисел на TurboC++ - C++
Всем привет! Подскажите, в чем ошибка с переменной с? Вот скрины - Коды программ надо переписывать в тему!

Сложение двух длинных чисел. - C++
всем привет. как вы считаете, каким способом лучше сделать? или абсолютно всеравно?) #include <iostream> #include <string> ...

Сложение двух больших чисел - C++
#include <vector> #include <fstream> #include <string> using namespace std; int main() { const int base = 1000 * 1000 *...

Сложение столбиков двух массивов чисел - C++
Например есть два массива int a={2,8,3,9,4,7,5,8,6,7,3,8,2}; int b={4,7,3,8,5,7,3,8}; Как мне их сложить в столбик (длинная...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UKOL
112 / 64 / 7
Регистрация: 17.11.2009
Сообщений: 258
25.03.2010, 18:33     Сложение двух чисел #2
попробуй тип, unsigned long 4 байта 32 бита диапазон от 0 до 4294967295 должно влезть

или уж double, float

C++
1
2
3
4
int a;
int b;
double c;
c=(double)(a+b);
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
25.03.2010, 19:04  [ТС]     Сложение двух чисел #3
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <fstream.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
void WriteFile(int a);//ÔóГ*êöèÿ Г§Г*ГЇГЁГ±ГЁ Гў ГґГ*éë
double Summ(int a, int b); //ÔóГ*êöèÿ Г*Г*õîæäåГ*ГЁГї ñóììû äâóõ Г·ГЁГ±ГҐГ«
 
int main()
{
        int a, b;
        double s;
 
        ifstream instream("input.txt");
        if (!instream) {
                cout<<"Г”Г*éë Г*ГҐ îòêðûëñÿ"<<endl;
                getch();
                return 0; }
        while(!instream.eof()) {
                instream>>a>>b;
                s=Summ(a, b);
                WriteFile(s); }
        instream.close();
        getch();
        return 0;
}
 
 
void WriteFile(double s)
{
ofstream outstream("output.txt", ios::app);
outstream<<s<<endl;
outstream.close();
}
 
double Summ(int a, int b)
{       double s;
 
        s=(double)(a+b);
        return s;
}
Почему ругается на код? Вот ошибка:
Код
[Linker Error] Unresolved external 'WriteFile(int)' referenced from D:\ÐÀÁÎÒÀ (WORK)\ÊÎÍÊÓÐÑ\UNIT1.OBJ
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.03.2010, 19:10     Сложение двух чисел #4
WiDe, потому что прототип принимает int (void WriteFile(int a)), а реализация double (void WriteFile(double s)).
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
25.03.2010, 19:42  [ТС]     Сложение двух чисел #5
Блин, не заметил=) Но всё равно не сработало. После сложения прога вывела -2.94967e+08

Добавлено через 1 минуту
Всё, заработало, сделал через unsigned long. Спасибо!

Добавлено через 3 минуты
Кстати, а данную программу реально переделать так, чтобы чтение файла вынести в обдельную функцию? При условии, что входной файл имеет вид:
Код
5 8
32 68
436 54
а выходной суммы этих чисел на каждой строке соответственно. Я смог сделать (код выше) только если функция чтения в мейне, а записи и нахождения суммы в отдельных...
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
25.03.2010, 19:57     Сложение двух чисел #6
Попробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void ReadFile()
{
    int a, b;
        double s;
 
        ifstream instream("input.txt");
        if (!instream) {
                cout<<"Файл не открылся"<<endl;
                getch();
                exit(1); }
        while(!instream.eof()) {
                instream>>a>>b;
                s=Summ(a, b);
                WriteFile(s); }
        instream.close();
}
Добавлено через 1 минуту
ЗЫ. Можно попробовать вместо double использовать целый тип long long. На моей машине максимальное значение, которое помещается в этот тип, равно 9223372036854775807

Добавлено через 24 секунды
Я думаю, этого с лихвой хватит
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
25.03.2010, 20:06     Сложение двух чисел #7
а если попробовать число разбить на: десятки, сотни, тысячи и т.д.
а затем складывать отдельно десятки, сотни и т.д.
после всего все полученные суммы по-разрядно внести в массив и вывод на экран.
поправьте если не прав.
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
25.03.2010, 21:45  [ТС]     Сложение двух чисел #8
Nameless One, ну про такой вариант я тоже думал... И мне кажется что по другому тут не сделаешь... В main получится только вызов ReadFile(); и всё=) Всё-равно спасибо!

KIRASIR, можно и так, но это намного сложнее реализуемо.
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
25.03.2010, 22:14     Сложение двух чисел #9
такие задачи на олимпиадах по программированию даются.
Сложить два числа на скорость. Каждое из которых имеет по 32 цифры. Разрядность шины 16.

вот тогда и приходится разбивать число на несколько составляющих. И кстати, хз почему но было подмечено что если число делить на две составляющие то система нагружается меньше, а если разбивать на 3 составляющие то увеличивается прирост к производительности проги на 30%(или наоборот). В таком стиле обычно военных учат программировать.
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
25.03.2010, 23:25  [ТС]     Сложение двух чисел #10
Просто я думаю вряд ли в таком задании будет приветствоваться использование массива...
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
26.03.2010, 01:53     Сложение двух чисел #11
Вообще должен прокатить unsigned long long или long double (на некоторых машинах),


Цитата Сообщение от WiDe Посмотреть сообщение
Просто я думаю вряд ли в таком задании будет приветствоваться использование массива...


я с тобой не согласен да действительно на олимпиадах даются такие задания в прошлом году в четвертьфинале была задаса на длинную арифметику было число размеров в 100 000 знаков до "." и 100 000 после точки и эти два числа нужно было сравнить и все это сделать за секунду.... могло оно записывается как 000001616846684.168461510000000 единственный нормальный вариант это массив из char* , я думаю операции с длинной арифметикой будут приветствовать все преподаватели. тем более тут еще контроль переходящей в старший разряд 1-цей. кстати очень полезно будет если ты напишешь умножение таких чисел.
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
26.03.2010, 16:57  [ТС]     Сложение двух чисел #12
Надо попробовать подобный вариант...
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.03.2010, 16:59     Сложение двух чисел #13
Цитата Сообщение от breate Посмотреть сообщение
единственный нормальный вариант это массив из char*
Это как раз ненормальный вариант, лучше всего использовать массивы из типов, разрядность который соответсвует разрядности ОС, чтобы производительность была максимальной
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
26.03.2010, 17:17     Сложение двух чисел #14
Цитата Сообщение от fasked Посмотреть сообщение
Это как раз ненормальный вариант, лучше всего использовать массивы из типов, разрядность который соответсвует разрядности ОС, чтобы производительность была максимальной
код в студию! уловие: в файле лежат 2 числа типа
Код
00000000000000000051680046156846.546165188598000
00000000000000000000000000000000000000000000051680046156846.546165188598001
ограничение на числа [100 000][.][100 000] сравнить их. время выполнения 1 сек@1.2GHZ
32-бита ось
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
28.03.2010, 20:37  [ТС]     Сложение двух чисел #15
Блин, я тут заметил, что unsigned long не складывает отрицательные числа... long long тоже. Другие же варианты, о которых говорили, складывают, но там нельзя сложить большие числа (вместо 2000000000 выводит -2.94967e+08
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
28.03.2010, 21:44     Сложение двух чисел #16
Цитата Сообщение от WiDe Посмотреть сообщение
вместо 2000000000 выводит -2.94967e+08
тогда только char* или int* ты на ASM`е прогать умеешь?
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
28.03.2010, 22:06  [ТС]     Сложение двух чисел #17
неа...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2010, 01:14     Сложение двух чисел
Еще ссылки по теме:

Сложение двух чисел: отображение числа полностью - C++
Есть задача сложить два числа например 3.3234e+18 и 1.3232e+2. Но при проверки слодения показыват число 3.323432e+18. Я понимаю что первое...

Измерить время выполнения (сложение двух чисел) - C++
Вот у меня есть код, который выполняет сложение двух чисел.. Помогите вставить сюда GetTickCount и QueryPerformanceCounter.... Только нужно...

Запрос у пользователя поочередно двух целых чисел, и их сложение - C++
Написала простенькую программу,которая будет запрашивать у пользователя поочередно два целых числа, затем складывать их и результат...

Сложение двух чисел в Двоично-десятичной системе счисления - C++
Доброго времени суток, может есть ли у кого уже готовый код? или же можете носом ткнуть на ссылку, bcd - двоично десятичная система, весь...

Сложение/деление двух длинных чисел (длиной 1024 бита) - C++
Всем привет! Есть две вот такие задачи: 1. используя вставку кода в программу на С++, составить программу для сложения 2-х длинных...


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

Или воспользуйтесь поиском по форуму:
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
29.03.2010, 01:14     Сложение двух чисел #18
плохо тогда просто проконтролировать переполнение легче

Добавлено через 3 минуты
тогда лучше всего тебе с char * работать выдели кусок памяти достаточный для 2*10^10 и аккуратненько запиши пошаговое сложение
Yandex
Объявления
29.03.2010, 01:14     Сложение двух чисел
Ответ Создать тему
Опции темы

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