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

Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дискретка и С++: универсальное множество http://www.cyberforum.ru/cpp-beginners/thread778413.html
способ задачи универсального множества это целые числа {0....255} - в C++ это получается просто создание массива в данном диапазоне??если да - то массив - это все значения ,которые входят в данный диапазон или всего лишь их индексы??? как писать прогу,если правильно рассуждаю - кажется знаю либо если неправильно думаю,подскажите как вернее:-Добавлено через 27 минут способ задания...
C++ Подсчитать в процентах частоту вхождений Букв, Цифр и Остальных символов (включая пробелы). Использовать file.get(s) Подскажите в чем ошибка? если есть можно исправленный код?:) #include <iostream> #include <fstream> using namespace std; int main(){ char a; int bkv,cfr,ost; ifstream file; file.open("c:\\11\chastota.txt"); http://www.cyberforum.ru/cpp-beginners/thread778397.html
C++ Рекурсивная функция вывода всех файлов и директорий
функция ищет все файлы включая директории с набором др. файлов и директорий при этом выводит их на экран. Вместо того, чтобы вывести файлы директории, бесконечно выводит точку. посмотрите пожалуйста) : int SearchAll(char *path) //приходит имя диска (f:\) и в последствии добавляется маска "*" { char* temp_path = new char; //добавляет к пути маску "*"...
Реализация md5() C++
Как мне md5 хеш строки char получить? вон как просто в пхп - md5($string) гугл весь перерыл ничего нормального не нашел.. как реализовать?
C++ Определить размер массива по указателю http://www.cyberforum.ru/cpp-beginners/thread778365.html
Собственно вопрос в следующем: можно ли определить размер выделенного динамически массива по указателю на область памяти? int *ptr = new int; int size = getsize(ptr);
C++ с чего начать обучение на С++ с чего начать обучение в С++ самостоятельно? подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
04.02.2013, 00:31     Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями
Как вариант:
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
#include <stdio.h>
#include <conio.h>
#include <windows.h>
 
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
 
int main()
{
    _CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
//------------------------------------------------------------------------------------------------------------------------------------------------
// создание массива
    int **a = NULL;
    int height = 0;
    int width = 0;
 
    printf("Демонстрация работы с массивами\n");
    printf("Введите размерность массива (ширина, высота): \n");
    scanf("%d %d", &width, &height);
    printf("\n");
    
    a = new int*[height];
    for (int i = 0; i< height; ++i)
    {
        a[i] = new int [width];
    }
    
// Заполнение массива вручную.
    printf("Введите значения элементов массива: \n");
    for (int i = 0; i< height; ++i)
    {
        for (int j = 0; j< width; ++j)
        {
            printf("Введите элемент [%d][%d]: ", i+1, j+1);
            scanf("%d", &(a[i][j]));
        }
    }
 
// вывод массвиа на экран
    printf ("Вы ввели матрицу: \n\n");
    for (int i = 0; i< height; ++i)
    {
        for (int j = 0; j< width; ++j)
        {
            printf("%d", a[i][j]);
        }
        printf ("\n");
    }
 
//---------------------------------------------------------------------------------------------------------------------
// Вот здесь не могу додуматься как :(
 
     for(int i=0,flag=false;i<height;++i,flag=false){
         for(int j=0;j<width;++j)
             if(a[i][j]!=0){
                 flag=true; 
                 break;
             }
        if(!flag){
            delete [] a[i];
            memcpy(a+i,a+i+1,sizeof(a[i])*(height-i-1));
            --i; --height;
        }
     }
 
     for(int i=0,flag=false;i<width;++i,flag=false){
         for(int j=0;j<height;++j)
             if(a[j][i]!=0){
                 flag=true; 
                 break;
             }
        if(!flag){
            for(int d=0;d<height;++d)
                memcpy(a[d]+i,a[d]+i+1,sizeof(a[d][i])*(width-i-1));
            --i; --width;
        }
     }
 
//---------------------------------------------------------------------------------------------------------------------
    printf ("Измененная матрица: \n\n");
    for (int i = 0; i< height; ++i)
    {
        for (int j = 0; j< width; ++j)
        {
            printf("%d", a[i][j]);
        }
        printf ("\n");
    }
// Устранение утечек памяти
 
    for (int i = 0; i< height; ++i)
    {
        delete [] a[i];
    }
    delete [] a; 
 
    getchar();
    getchar();  
    return 0;
}
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями
 
Текущее время: 04:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru