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

Удаление столбцов из матрицы содержащих число 1 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ q-sort сортировка http://www.cyberforum.ru/cpp-beginners/thread438052.html
Здраствуйте , не могу понять где в коде ошибка . Выдает такое :d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(main.o):main.c|| undefined reference to `WinMain@16| ||=== Build finished: 1 errors, 0 warnings ===| вот код : //#include "stdafx.h" #include "ctime"
C++ Задача на строки: Вывести директорию файла. Задача: из полного адреса файла выделить его основную директорию. Если файл находится в корневой директории, вывести символ "\". Считать что адрес введен всегда правильно. Короче, если дан адрес C:\AMD\Catalyst_Mobility_64-Bit_Util.exe на экран вывести AMD. Вот наброски: #include "stdafx.h" #include <iostream> #include "stdio.h" #include "string.h" http://www.cyberforum.ru/cpp-beginners/thread438049.html
В произвольной тексте на русском языке вывести строки, содержащие более 5 букв "о" C++
Привет всем! Вобщем у меня проблема, есть задачка: В произвольной тексте на русском языке вывести строки, содержащие более 5 букв "о". Не подскажите как это реализовать?) как поменять буквы в тексте я уже понял, а вот над этим ломаю голову. Вот что я попытался сделать(ясно дело бред написал:)) #include "stdafx.h" #include<iostream> #include<string> #include<fstream>
Помогите найти ошибку C++
//Даны три положительных числа а, b, c. Проверить, могут ли они быть длинами сторон треугольника. Если да, то вычислить площадь этого треугольника. #include <math.h> #include <iostream> using namespace std; void main() { int a, b, c;
C++ нужна блок схема и ручной расчёт к етому коду http://www.cyberforum.ru/cpp-beginners/thread438019.html
помогите пожалуйста с: 1)блок-схема 2)ручной счет(подготовка программы) вот код: #include <stdio.h> #include <tchar.h> #include <stdlib.h> #define SIZE_ARRAY 10 //размер массива #define MAX_INTEGER 10 //максимально допустимое число int myarray; // масив с которым работаем
C++ Чтение и запись в файл. Как вывести значение на экран #include <sys/stat.h> #include <memory.h> #include <fcntl.h> #include <stdio.h> #include <io.h> struct mystruct { int i; char buf; double d; подробнее

Показать сообщение отдельно
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
01.02.2012, 07:10
Для динамических структур лучше использовать контейнеры stl, но если нужны именно массивы, то вот мой вариант:
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
using namespace std;
 
typedef const size_t cst;
typedef unsigned ui;
 
// создание двухмерного динамического массива
ui** create_array_2d( cst, cst );
// удаление двухмерного динамического массива
void free_array_2d( ui**, cst );
// заполнение двухмерного массива псевдослучайными целочисленными значениями
void fill_rand_array_2d( ui**, cst, cst );
// вывод двухмерного массива на экран
void print_array_2d( ui**, cst, cst );
// вывод одномерного массива на экран
void print_array_1d( ui*, cst );
// формирование массива индексов столбцов другого массива, в которых содержаться элементы равные 1
ui* generate_array_num_cols( ui**, cst, cst );
// формирование массива из столбцов другого массива, в которых отсутствуют элементы, равные 1
ui** generate_array_scheme( ui**, ui*, cst, cst, cst );
 
int main() {
    srand( time( NULL ) );
 
    size_t rows, a_cols, b_cols, d_size = 0;
    ui **a, **b;
    ui *d;
 
    // вводим исходные данные для массива a
    cout << "Введите количество строк и количество столбцов через пробел"
            << endl;
    cin >> rows >> a_cols;
 
    a = create_array_2d( rows, a_cols ); //создаем массив a
    fill_rand_array_2d( a, rows, a_cols ); // заполняем массив a
    d = generate_array_num_cols( a, rows, a_cols ); // генерируем массив d
    d_size = d[ -1 ]; //узнаем размер массива d, если больше нуля, то массив сгенерирован
    b_cols = a_cols - d_size; // считаем размер массива b
 
    // выводим на экран массив a
    cout << "Исходный массив A:" << endl;
    print_array_2d( a, rows, a_cols );
 
    // если размер массива b больше нуля, то генерируем его
    if ( b_cols ) {
        b = generate_array_scheme( a, d, rows, a_cols, b_cols );
 
        // выводим на экран массив b
        cout
                << "Новый массив B - столбцы массива A, в которых отсутствуют элементы равные 1:"
                << endl;
        print_array_2d( b, rows, b_cols );
 
        // освобождаем память от массива b
        free_array_2d( b, rows );
    }
    //  если размер массива b равен нулю, то выводим на экран сообщение
    else
        cout
                << "Массив B пустой, так как в каждом столбце массива A содержаться элементы равные 1"
                << endl;
 
 
 
    // если размер массива d больше нуля, то выводим его на экран
    if ( d_size ) {
        cout
                << "Новый массив D - индексы столбцов массива A, в которых содержаться элементы равные 1:"
                << endl;
        print_array_1d( d, d_size );
 
        // освобождаем память от массива d
        delete[] --d;
 
    } else
        cout
                << "Массив D пустой, так как массив A на содержит элементов равных 1"
                << endl;
 
 
    // // освобождаем память от массива a
    free_array_2d( a, rows );
 
    return 0;
}
 
ui** create_array_2d( cst dimm1, cst dimm2 ) {
    ui** temp_arr = new ui*[ dimm1 ];
 
    for ( size_t i = 0; i != dimm1; ++i )
        temp_arr[ i ] = new ui[ dimm2 ];
 
    return temp_arr;
}
 
void free_array_2d( ui** arr, cst dimm ) {
    for ( size_t i = 0; i < dimm; i++ )
        delete[] arr[ i ];
    delete[] arr;
 
}
 
void fill_rand_array_2d( ui** arr, cst dimm1, cst dimm2 ) {
    for ( size_t i = 0; i != dimm1; ++i )
        for ( size_t j = 0; j != dimm2; ++j )
            arr[ i ][ j ] = rand() % 11; //[ 0..10 ]
}
 
void print_array_2d( ui** arr, cst dimm1, cst dimm2 ) {
    for ( size_t i = 0; i != dimm1; ++i ) {
        for ( size_t j = 0; j != dimm2; ++j )
            cout << setw( 3 ) << arr[ i ][ j ];
        cout << endl;
    }
}
 
void print_array_1d( ui* arr, cst dimm ) {
    for ( size_t i = 0; i != dimm; ++i )
        cout << setw( 3 ) << arr[ i ];
    cout << endl;
}
 
ui* generate_array_num_cols( ui** src_arr, cst dimm1, cst dimm2 ) {
    size_t temp_dimm = 0;
    ui *temp_arr = new ui[ dimm2 ], *dest_arr;
 
    for ( size_t j = 0; j != dimm2; ++j )
        for ( size_t i = 0; i != dimm1; ++i )
            if ( src_arr[ i ][ j ] == 1 ) {
                temp_arr[ temp_dimm ] = j;
                ++temp_dimm;
                break;
            }
 
    if ( temp_dimm ) {
        dest_arr = new ui[ temp_dimm + 1 ];
        dest_arr[ 0 ] = temp_dimm; // тут храним размер массива
        for ( size_t i = 1; i <= temp_dimm; ++i )
            dest_arr[ i ] = temp_arr[ i - 1 ];
    }
 
    delete[] temp_arr;
 
    return ++dest_arr;
}
 
ui** generate_array_scheme( ui** src_arr, ui* arr_nums, cst dimm1, cst dimm2,
        cst dimm_dest_cols ) {
    ui** dest_arr = create_array_2d( dimm1, dimm_dest_cols );
    size_t temp_dimm = dimm2 - dimm_dest_cols, ind = 0;
    bool flag;
 
    for ( size_t j = 0; j != dimm2; ++j ) {
        flag = false;
        for ( size_t i = 0; i != dimm1; ++i ) {
            for ( size_t k = 0; k != temp_dimm; ++k )
 
                if ( arr_nums[ k ] == j ) {
                    flag = true;
                    ++ind;
                    break;
                }
 
            if ( flag )
                break;
            else
                dest_arr[ i ][ j - ind ] = src_arr[ i ][ j ];
        }
    }
    return dest_arr;
}
Консоль
Введите количество строк и количество столбцов через пробел
3 6
Исходный массив A:
8 1 7 1 9 6
2 10 9 1 6 0
7 3 9 5 5 7
Новый массив B - столбцы массива A, в которых отсутствуют элементы равные 1:
8 7 9 6
2 9 6 0
7 9 5 7
Новый массив D - индексы столбцов массива A, в которых содержаться элементы равные 1:
1 3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru