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

Как удалить столбцы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ суммарное смещение в новый массив http://www.cyberforum.ru/cpp-beginners/thread844900.html
Доброго всем дня! Прогуглил,но не нашёл искомого. Суть такова:имеется массив,например , из 4 элементов(заполненный). Имеется еще массив, размерностью на 1 менее, т.е. 3. И необходимо, чтобы элементы второго массива были суммой элементов, стоящих перед соответствующим индексом массива первого. ДОСТУПНЕЕ НА КАРТИНКЕ: http://s020.***********/i707/1304/52/684bb0d4fdc0.jpg
C++ Вычислить среднеарифметическое нечетных элементов массива Дан одномерный массив, состоящий из N целочисленных элементов. Заполнить массив случайными числами. Вычислить среднеарифметическое нечетных элементов массива. http://www.cyberforum.ru/cpp-beginners/thread844886.html
C++ Вычислить произведение не нулевых элементов массива
Дан одномерный массив, состоящий из N целочисленных элементов. Заполнить массив случайными числами.Вычислить произведение не нулевых элементов массива.
Классы и объекты C++
В чем ошибка помогите пожалуйста #include <iostream> #include <windows.h> using namespace std; class Student { public: Student () { lastname=NULL;
C++ Перевод программы паскаль в с++ http://www.cyberforum.ru/cpp-beginners/thread844854.html
Var A:array of integer; i,n,t:integer; Begin write('Vvedite razmernost ');readln(n); writeln('Ishodni massiv: '); For i:=1 to n do Begin A:=random(30)-15; write(A:4); End;
C++ Применение указателей Доброй ночи. Встретил вот такое выражение в книге и не могу понять что к чему: Distance& dist = *(new Distance); После чего можно обращаться к объекту через операцию точки, а не "->". Disntace - класс. Операция new выделяет место равное объекту класса Distance и возвращает указатель на блок памяти, который выделили мы у операционной системы. Не могу понять к чему там ссылка (знак амперсанда... подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
16.04.2013, 23:38     Как удалить столбцы
Для таких целей как раз подходит структура данных под названием "список".
Вот пример с "двумерным" массивом. Работает по принципу: 1) создать новый указатель на массив на один элемент меньше; 2) скопировать все элементы кроме заданного; 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <cstdlib>
#include <ctime>
 
 
int** genArr(int h, int l)
{
    int** b = new int*[h];
    for (int i = 0; i < h; ++i)
    {
        b[i] = new int[l];
        for (int j = 0; j < l; ++j)
        {
            b[i][j] = rand() % 100;
        }
    }
    return b;
}
 
void delCol(int** b, int h, int l, int vl)
{
    if (vl < 0 || vl > l)
    {
        return;
    }
 
    for (int i = 0; i < h; ++i)
    {
        int* tmp = new int[l-1];
        for (int j = 0, k = 0; j < l; ++j)
        {
            if (j == vl)
            {
                continue;
            }
            tmp[k++] = b[i][j];
        }
        delete [] b[i];
        b[i] = tmp;
    }
}
 
void freeArr(int** b, int h)
{
    for (int i = 0; i < h; ++i)
    {
        delete [] b[i];
    }
    delete [] b;
}
 
void showArr(int** b, int h, int l)
{
    for (int i = 0; i < h; ++i)
    {
        for (int j = 0; j < l; ++j)
        {
            std::cout.width(3);
            std::cout << b[i][j] << ' ';
        }
        std::cout << '\n';
    }
}
 
 
int main()
{
    const int HEIGHT = 10;
    const int LENGTH = 10;
 
    srand(time(0));
    int** array = genArr(HEIGHT, LENGTH);
    showArr(array, HEIGHT, LENGTH);
    std::cout << '\n';
 
    delCol(array, HEIGHT, LENGTH, 0);
    delCol(array, HEIGHT, LENGTH, 4);
    showArr(array, HEIGHT, LENGTH-2); // на 2 поинта меньше.
    std::cout << '\n';
 
    freeArr(array, HEIGHT);
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru