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

Магия со статическими массивами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача с использованием структуры и указателя http://www.cyberforum.ru/cpp-beginners/thread1065974.html
Структура содержит поля: имя, фамилия , возраст. Надо заполнить с клавиатуры и передать через указатель в функцию , в к-ой вывести на экран Со структурой мне все понятно, но как к ней сделать указатель, так как типы полей разные и и в какую функцию передавать, если ввод и вывод сразу можно сделать в main ? Помогите пожалуйста разобраться) Struct my { char m;// фамилия char m;//имя int...
C++ Непонятен алгоритм: как записывать значения в бинарном файле в обратном порядке? Нужно написать программу, которая будет, записывать значения в бинарном файле, в обратном порядке. Кажется легко, НО!!! Нельзя использовать массивы, нужно как-то через fseek И никакой копии файла: с этого файла читаем, в него сразу и пишем... Вот так =) http://www.cyberforum.ru/cpp-beginners/thread1065967.html
Определить номер столбца массива, в котором расположен минимальный элемент четвертой строки массива C++
Доброго времени суток, помогите пожалуйста решить задачи по C++ 3)Дан двумерный массив. Определить: a) номер столбца, в котором расположен минимальный элемент четвертой строки массива.Если элементов с минимальным значением в этой строке несколько, то должен быть найден номер столбца самого левого из них. б) номер строки в котором расположен максимальный элемент третьего столбца массива.Если...
Найти число пар соседних элементов массива, являющихся четными числами C++
Доброго времени суток, помогите пожалуйста решить задачи по C++ 2)Найти число пар соседних элементов массива, являющихся четными числами. P.S: очень рассчитываю на вашу помощь
C++ Сформировать стек из N студентов http://www.cyberforum.ru/cpp-beginners/thread1065949.html
Класс "Успеваемость": ФИО, оценки по 4 предметам. Сформировать стек из N (вводится с клавиатуры) студентов. Распечатать список всех студентов, которые имеют средний балл >=4. Сформировать множество из тех студентов, которые не вошли в список. Для решения использовать стандартные функции библиотеки STL. Решил, что через if буду сразу заносить фамилии с средней оценкой >=4 в стек, а остальных сразу...
C++ Найти матрицу С Помогите выполнить данное задание. Нигде не могу найти теорию и даже не представляю как его решать. подробнее

Показать сообщение отдельно
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
08.01.2014, 20:57  [ТС]     Магия со статическими массивами
Tulosba, знаешь как сделать второе? Массив ссылок.

Добавлено через 13 минут
Почему компилятор такое хавает, размерности массивов ведь явно не совпадают.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
template<typename T, std::size_t N>
T* join(T *arrays[N], const int (&sizes)[N])
{
    int capasity = std::accumulate(sizes, sizes + N, 0);
    T *res = new T[capasity];
 
    for (int i = 0, pos = 0; i < N;)
    {
        std::copy(arrays[i], arrays[i] + sizes[i], res + pos);
        pos += sizes[i++];
    }
 
    return res;
}
 
int main()
{
    int* arrays[] =
    {
        new int[2]{1,2},
        new int[1]{3},
        new int[1]{3},
        new int[3]{4,5,6}
    },
    sizes[] = {2,1,3},
    *res = join(arrays, sizes);
    std::copy(res, res + 6, std::ostream_iterator<int>(std::cout, " "));
}


Добавлено через 6 минут
Вопрос решен:
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <assert.h>
 
template<typename T, std::size_t N>
T* join(T *(&arrays)[N], const int (&sizes)[N])
{
    int capasity = std::accumulate(sizes, sizes + N, 0);
    T *res = new T[capasity];
 
    for (int i = 0, pos = 0; i < N;)
    {
        std::copy(arrays[i], arrays[i] + sizes[i], res + pos);
        pos += sizes[i++];
    }
 
    return res;
}
 
int main()
{
    int* arrays[] =
    {
        new int[2]{1,2},
        new int[1]{3},
        new int[3]{4,5,6}
    },
    sizes[] = {2,1,3},
    *res = join(arrays, sizes);
    std::copy(res, res + 6, std::ostream_iterator<int>(std::cout, " "));
}
 
Текущее время: 16:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru