Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

уплотнение матрицы на Си, кто поможет

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Dr@gon



Зарегистрирован: 28.03.2005
Сообщения: 10
Откуда: Урал

СообщениеДобавлено: Пн Мар 28 2005 08:05    Заголовок сообщения: уплотнение матрицы на Си, кто поможет Ответить с цитатой

нужно уплотнить матрицу если присутствует 0, массив вводим ручками
вот, кто допишет, кто поможет, плиз?
а то уже край, не могу сообразить...

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
clrscr(); // очистка экрана
int a=0;
int n=3, m=4; // объявление переменных
int *pa; // указатель на pa
int **paa=new int*[m]; // дин.выделение памяти под m
int *buf=new int;
for(int i=0;i<m;i++) // цикл выд.памяти для зап.массива
{
pa=new int[n];
paa[i]=pa;
} // конец

for(i=0;i<m;i++) // цикл заполнения массива с 0
for(int j=0;j<n;j++)
{
scanf("%d",&paa[i][j]);
} // конец

for(i=0; i<m; i++) // вывод массива
{
for (int j=0; j<n; j++) {
printf("%5d",paa[i][j]);
}
printf("\n");
}
printf("\n"); // конец вывода
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dr@gon



Зарегистрирован: 28.03.2005
Сообщения: 10
Откуда: Урал

СообщениеДобавлено: Пн Мар 28 2005 13:05    Заголовок сообщения: Ответить с цитатой

похоже никто Crying or Very sad
пытаюсь в матрице где ноль присутствует удалить эту строку и что-то не выходит
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
tinimi



Зарегистрирован: 27.03.2005
Сообщения: 90
Откуда: Win32

СообщениеДобавлено: Пн Мар 28 2005 22:59    Заголовок сообщения: Ответить с цитатой

Напишите что конкретно надо сделать. Что дано, что в результате.
Как уплотнять? если ноль, то ряд смещаем влево изаполням в конце 0?
Напиши все что надо полностью.
_________________
[ TiNiMi ]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Dr@gon



Зарегистрирован: 28.03.2005
Сообщения: 10
Откуда: Урал

СообщениеДобавлено: Вт Мар 29 2005 06:31    Заголовок сообщения: Ответить с цитатой

Дана матрица, которую забиваем вручную, например:

1 4 7 5
4 6 0 7
4 6 1 2

нужно убрать строчку где присутствует 0 и должно получиться:

1 4 7 5
4 6 1 2

я находил строку с 0 и пробовал удалять delete paa[i,j]=0 , но он вместо той строчки не убирает ее, а заполняет всякями другими цифрами.
Не могу сообразить с алгоритмом, давно не программировал, лет 7 уже
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ersh



Зарегистрирован: 20.01.2004
Сообщения: 107

СообщениеДобавлено: Вт Мар 29 2005 10:54    Заголовок сообщения: Ответить с цитатой

Создай одномерный массив, размерность которого количество строк, которых надо удалить, а значения номера строк.(Пробегаемся по массиву, считаем количество строк, дальше выделяем память, опять пробегаемся и уже пишем номера строк в этот массив. Можно без динамических обойтись, еще проще.)
Дальше создаем другой массив с размерностью начальный массив минус количество строк. Пробегаемся по начальному массиву, пробегаемся по одномерному массиву, смотрим если номера строки нету в одномерном массиве, то пишем в новый массив(допустим буленовскую переменную для этого можно завести, то есть сначала в тру ее ставим, пробежались по второму массиву, если была строка, то переменную ставим в фолс.Дальше смотрим если переменная тру, то писать строку можно, если фалс, то там был 0). И все собственно, получим новый массив, уже "уплотненный".
_________________
Анархия - мать порядка!!!!!!!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ersh



Зарегистрирован: 20.01.2004
Сообщения: 107

СообщениеДобавлено: Вт Мар 29 2005 10:55    Заголовок сообщения: Ответить с цитатой

То есть мы не правим существующий массив, а создаем новый, в который пишем то, что нам надо.
_________________
Анархия - мать порядка!!!!!!!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dr@gon



Зарегистрирован: 28.03.2005
Сообщения: 10
Откуда: Урал

СообщениеДобавлено: Вт Мар 29 2005 12:41    Заголовок сообщения: спасибо Ответить с цитатой

огромное
_________________
с Уважением к Вам
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Чт Мар 31 2005 19:35    Заголовок сообщения: не разбрасывайтесь памятью -- она деньги стоит Ответить с цитатой

Вот алгоритм удаления пробелов из строки без копирования в дополнительный буфер:
Код:
char* alltrim(char* A) {
 char *B=A;
 char *C=A;
 while(*B) if(*C++ != ' ') if(*B=C[-1])B++;
 return A;
}

Аналогии:
пробел -- строка с нулями
сравнение с пробелом -- проверка наличия нуля в строке
присваивание -- копирование одной строки в другую
инкремент указателя на символ -- инкремент указателя на строку
проверка указателя на пустой символ -- проверка общего конца строк
--------------------
не разбрасывайтесь памятью -- она деньги стоит
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...