Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка файов регулярными выражениями. https://www.cyberforum.ru/ cpp/ thread338680.html
Задайте верное направление. Исходная задача. Необходимо обработать текстовый файл "умным образом". Где то достаточно просто замены "А" на "Б"; где то необходимы регулярные выражения (например,...
C++ Выбор технологии
Всем привет! У меня такой вопрос Вот я сейчас работаю в компании, которая занимается разработкой ПО на С++ Начал разработку проекта Про технологию речи не шло, я скачал много учебников (имею...
RxGifAnimator C++
Всем привет дайте мне кто нибудь файл RxGifAnimator для С Добавлено через 10 секунд кому не жалко
C++ Работа с pdf в Cairo. Помогите разобраться с выводом графики в pdf. Английский не знаю. Очень трудно читать буржуйские мануалы, 3 день парюсь. Самый важный вопрос: Какая функция начинает вторую страницу pdf??? ... https://www.cyberforum.ru/ cpp/ thread338459.html
C++ При запуске консоль не поддерживается https://www.cyberforum.ru/ cpp/ thread338400.html
Добрый день. Есть такая проблема, прога работает нормально но одно диалоговое окно задолбало(извините...)... При запуске прилрожения выскакивает: Диалоговое окно "WARNING" Selected console type...
сс3260mt.dll C++
Билдер пишет, что на компе нет сс3260mt.dll и упорно отказывается запускать мои проги. Я скачал эту библиотеку, в какую папку её пихать?
Вопрос про Visual Express C++
Что делать если мне нужна студия для С++ и С#? Скачивать Express C++ и Express C#? Это будет занимать меньше места, чем одна Visual Studio (pro/ultimate)?
C++ [Квест] Нужно написать распаковщика Здравствуйте, нужно написать распаковщика который будет распаковывать пару файлов на рабочий стол и один файл в корень жесткого диска. Если кто может помочь выполнить данное задание оставляйте... https://www.cyberforum.ru/ cpp/ thread337618.html
C++ Обмен опытом и сотрудничество https://www.cyberforum.ru/ cpp/ thread336904.html
Здравствуйте, программисты, веб-мастера, дизайнеры. Рад буду пообщаться, обменяться опытом, и принять участие в совместных проектах. Увлекаюсь веб технологиями, сейчас пытаюсь осваивать дизайн. На...
C++ Управление скоростью вентилятора. Как собственно управлять скоростью вращения вентилятора? Я так понимаю, что скоростью вентилятора подключенного к блоку питания управлять не получится, а вот к 4 пиновому на матплате надеюсь да, и... https://www.cyberforum.ru/ cpp/ thread336783.html
1158 / 822 / 180
Регистрация: 16.03.2008
Сообщений: 3,950
Записей в блоге: 1
03.08.2011, 18:11 0

Устал искать баг

03.08.2011, 18:11. Просмотров 2394. Ответов 23
Метки (Все метки)

Ответ

Как вариант:
1. Обходим матрицу. Двигаемся только по диагонали. Если встречаем 0. Уменьшаем счетчик столбцов/строк
2. Выделяем память под новую матрицу с размерами согласно текущему полученному счетчику строк/столбцов
3. Опять идем по матрице (по диагонали) и копируем во вторую только то, что нужно (т.е. если элемент в диагонали не равен 0)

Добавлено через 1 минуту
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(int i = 0,j; i < m; i++)
j -здесь зачем?

Добавлено через 6 минут
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
for(j = i; j < m - 1; j++) 
memcpy((void *)&a[j],(void *)&a[j + 1],m);
Здесь, как я понял, вы сдивгаете строку. Т.е. согласно рисунку 5 ячеек начина с ячейки со значением "8".. Т.е. на последней строке вы вылетаете за пределы. К томуже еще перебиваете первые ячеки следующей строки (если текущая не последняя)

Добавлено через 4 минуты
К тому же у вас m не изменяется, а элементы сдвигаются

Добавлено через 8 минут
C++
1
for(j = 0; j < m; j++)
Тут тоже вроде нужно не до m, а до i

Добавлено через 10 минут
Стоп. у вас же double..... А последний параметр memcpy размер в байтах. нет?

Добавлено через 6 минут
Не проверял. Но вроде так. (Это как я понял ваш алгоритм только без memcpy). Но нужно еще освободить память. Или просто возвращать новый размер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void compress(int m, double **a, double *b)
{
    for(int i = 0,j; i < m; i++)
    {
        if(a[i][i] == 0)
        {
            for(j = i; j < m - 1; ++j)
                for(k=0;k<m;++k)
                    a[j][k]=a[j+1][k];
            for(j = i; j < m - 1; ++j)
                for(k=0;k<m;++k)
                    a[j][k]=a[j][k+1];
            --m;
        }
    }
}
Добавлено через 1 минуту
Ах да. Наверно надо в 15 строку вставить
C++
1
--i;
т.к. еперь на этом месте еще не проверенный элеент

Вернуться к обсуждению:
Устал искать баг
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2011, 18:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

std::regex : баг на сайте или баг компилятора?
http://en.cppreference.com/w/cpp/regex/regex_match этот код выкидывает throw... Добавлено через...

Баг asio? или баг TCP стека?
всем привет. повстречался с очень странным багом. и не могу определить кто бажит, asio, или...

Я устал ждать
Ребята, вот я пишу код ну написал 5 строк нажал на кнопку start или debag и жду сижу блин...

Яша устал?
Такая проблема... Часов в 11 вечера любимый 1ГБ сказал что база сильно грузит сервер SQL и рубанул...

Скотт Мейерс устал от С++
http://scottmeyers.blogspot.ru/2015/12/good-to-go.html Кто-нибудь хочет последовать его примеру?...

Устал уже от BSOD
Всем привет, помоги разобраться.. BSOD выкидывает каждый день. За частую при нагруженной работе, и...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.