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

Одномерный массив, проблемы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисления максимального элемента массива с явной специализацией для строк http://www.cyberforum.ru/cpp-beginners/thread386179.html
Здравствуйте! Всех студентов с праздником! Возможно тема заезженная! Возникла такая проблемка, нужно вычислить максимальный элемент одномерного массива с явной специализацией шаблонной функции для строк (тип char*). Как найти максимум из трех строк, то тут проблем не может быть!
C++ Как исправить ошибки C2065, C2109 в этой программе? error C2065: is: необъявленный идентификатор error C2109: для индекса требуется массив или указатель что это за ошибки и как их исправить задача, кстати из этой программы # include "iostream" # include <math.h> # include "iomanip" http://www.cyberforum.ru/cpp-beginners/thread386177.html
C++ циклический сдвиг
написать программу на СИ (обычном ,НЕ Си++), используя символьные массивы : Если число отрицательных элементов масива А чётно,то осуществить циклический сдвиг элементов массива на 4 позиции влево, иначе упорядочить элементы по возрастанию. Помогите пожалуйста. Буду очень благодарна.
C++ условный оператор в dev-cpp
Надо написать программу на dev-c++ , в которой имеется две функции: главная и пользовательская для вычисления выражения. При этом необходимо запросить у пользователя вещественное число и вывести значение функции (вложение: функция.doc)
C++ Вывести числа из файла http://www.cyberforum.ru/cpp-beginners/thread386172.html
Есть файл, в котором записаны 3 числа. Нужно вывести их, минуя пробелы. Вроде всё получается, но только 2 раза, т.е.если создать цикл, то числа выводятся только 2 раза. На третий раз не выводится первое число. Вот код: #include <cstdlib> #include <iostream> #include <conio.h> #include <fstream> #include "GetString.h" using namespace std;
C++ Ошибка при записи в файл Помогите добить задачку на С++. В общем прога работает правильно вот только когда идет запись в файл, то в файле находятса не данные структуры а какие-то символи #include <iostream> #include <fstream> #include <string> #include <stdio.h> #include <conio.h> #include <stdlib.h> подробнее

Показать сообщение отдельно
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
18.11.2011, 10:24     Одномерный массив, проблемы
silent_1991, абсолютно прав (:

http://e-maxx.ru/algo/big_integer в помощь

Решил вспомнить как это:

код
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
56
57
58
59
60
61
62
63
64
65
66
/* 
 *  Author: Kovtun Ruslan
 *          TFTM © 2011
 */
 
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <limits>
#include <iomanip>
#include <ctime>
#include <cmath>
 
using namespace std;
 
typedef __int64 LL;
typedef std::vector<int> VI;
typedef std::vector<VI> VVI;
typedef std::pair<int,int> PII;
typedef std::pair<double,double> PDD;
 
#define FOR(i,a,b) for (int i(a), _n(b); i < _n; ++i)
#define FORR(i,b,a) for (int i(b), _n(a); i >= _n; --i)
#define ALL(a) a.begin(), a.end()
#define MP(a,b) make_pair(a,b)
 
const LL base = 1000*1000*1000;
 
VI &operator *= (VI &a, VI b)
{
    VI res(a.size() + b.size(), 0);
    for (int i(0); i < a.size(); ++i)
        for (int j(0), carry(0); j < b.size() || carry; ++j)
        {
            LL cur = res[i+j] + a[i] * 1ll * (j < (int)b.size() ? b[j] : 0) + carry;
            res[i+j] = int (cur % base);
            carry = int (cur / base);
        }
    while (!res.back() && res.size() > 1) res.pop_back();
    return a = res;
}
 
VI BinPow(int a, int n)
{
    VI res(1, 1), b(1, a);
    while (n) n & 1 ? (--n, res *= b) : (n >>= 1, b *= b);
    return res;
}
 
ostream &operator << (ostream &out, VI a)
{
    out << a.back();
    for (int i(a.size()-2); i > -1; --i) 
        out << setfill('0') << setw(9) << a[i];
    return out;
}
 
int main(){
        VI res = BinPow(2, 64);
    cout << res << endl;
}


Добавлено через 18 минут
Подумал, что быстрота не так важна, решил сделать более читабельный вывод:
код
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
56
57
58
59
60
61
62
63
64
65
66
/* 
 *  Author: Kovtun Ruslan
 *          TFTM © 2011
 */
 
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <limits>
#include <iomanip>
#include <ctime>
#include <cmath>
 
using namespace std;
 
typedef __int64 LL;
typedef std::vector<int> VI;
typedef std::vector<VI> VVI;
typedef std::pair<int,int> PII;
typedef std::pair<double,double> PDD;
 
#define FOR(i,a,b) for (int i(a), _n(b); i < _n; ++i)
#define FORR(i,b,a) for (int i(b), _n(a); i >= _n; --i)
#define ALL(a) a.begin(), a.end()
#define MP(a,b) make_pair(a,b)
 
const LL base = 1000;//*1000*1000;
 
VI &operator *= (VI &a, VI b)
{
    VI res(a.size() + b.size(), 0);
    for (int i(0); i < a.size(); ++i)
        for (int j(0), carry(0); j < b.size() || carry; ++j)
        {
            LL cur = res[i+j] + a[i] * 1ll * (j < (int)b.size() ? b[j] : 0) + carry;
            res[i+j] = int (cur % base);
            carry = int (cur / base);
        }
    while (!res.back() && res.size() > 1) res.pop_back();
    return a = res;
}
 
VI BinPow(int a, int n)
{
    VI res(1, 1), b(1, a);
    while (n) n & 1 ? (--n, res *= b) : (n >>= 1, b *= b);
    return res;
}
 
ostream &operator << (ostream &out, VI a)
{
    out << a.back() << (a.size() > 1 ? "," : "");
    for (int i(a.size()-2); i > -1; --i) 
        out << setfill('0') << setw(3) << a[i] << (i ? "," : "");
    return out;
}
 
int main(){
        VI res = BinPow(2, 31);
    cout << res << endl;
}

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