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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
AcetoN
0 / 0 / 0
Регистрация: 27.05.2007
Сообщений: 3
#1

Удалить из матрицы нулевые строки - C++

27.05.2007, 02:46. Просмотров 2753. Ответов 6
Метки нет (Все метки)

Господа уважаемые программеры!
Пожалуйста помогите доделать детскую прогу.

Имеется матрица NxM элементов. Нужно удалить методом сдвига все строки, состоящие из нулей.

Вот то что писал сам, может пригодится:
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
#include <stdio.h>
#include <conio.h>
 
void main(void)
{
 
int i,j,l=0,k,q,v,g=0,lmax=0,
    n=4,                                            //kolvo strok
    m=2,                                            //kolvo stolbcov
    a[20][20];                                      //maks dlina massiva
 
clrscr();                                           //o4istka ekrana
printf("Vvod matrici %dx%d\n",n,m);
for (i=0;i<n;i++) {
    for (j=0;j<m;j++) {
        printf("Vvedite element a[%d][%d]: ",i,j);
        scanf("%d",&a[i][j]);
        }
    }
 
/* output matrix */
clrscr();
printf("Icxodnaya matrica:\n\n");
for (i=0;i<n;i++) {
    for (j=0;j<m;j++) {
        printf("%3d",a[i][j]);
        if (j==m-1) printf("\n");
        }
    }
/* poisk nylevoi stroki */
 
for(i=0;i<n;i++) {
    for (j=0;j<m;j++) {
        if (a[i][j]==0) {
       //   printf("%d[%d][%d]=0\n",a[i][j],i,j);
            l++;
            lmax++;
            if (l==m) {
            //printf("nlystrk\n");
                l=0;
                g++;
// ydalenie stroki
                //n--;
                for(v=i;v<n;v++) {
                    printf("v= %d\n",v);
                    for(q=0;q<m;q++) {
                        a[i][q]=a[i+1][q];
                    }
                }
 
            }
        }// else printf("%d[%d][%d]!=0\n",a[i][j],i,j);
 
    }
 
    l=0;
    //printf("\n");
    //printf("i=%d\n",i);
}
printf("naideno nulei: %d",lmax);
printf("\nPoly4ennaya matrica:\n\n");
printf("g= %d\n",g);
for(i=0;i<n;i++) {
    for (j=0;j<m;j++) {
        printf("%3d",a[i][j]);
        if (j==m-1) printf("\n");
        }
    }
 
printf("\npress any key to continue");
getch();
}
i,j,v,q - переменные для циклов
lmax - считает вбщее кол-во найденых нулей
l - считает нули в текущей строке
g - кол-во найденых нулевых строк
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2007, 02:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из матрицы нулевые строки (C++):

Найти нулевые строки матрицы - C++
Задана матрица целых чисел.Найти номера строк все элементы которых равны нулю.Использовать функции Помогите отредактировать пожалуйста ...

Матрицы. нулевые и одинаковые строки. - C++
Дана целочисленная матрица размера 56. Найти номера строк, где все элементы нулевые, все элементы одинаковы. Вот недописанный код...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Удалить из матрицы строки и стольбцы - C++
Дана прямоугольная матрица,уплотнить её,удалив из неё строки и столбцы заполненные нулями. Подскажите как удалить где все нули,я знаю...

Удалить из матрицы A все строки, сумма элементов которых четна, а из матрицы B – строки, сумма элементов которых нечетна(функции) - C++
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна.

Удалить все строки матрицы, которые содержат нули - C++
Дана квадратная матрица целых числе N*N(N-константа), заданная случайным образом, числами из промежутка от -10 до 5. Удалить все строки...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rich
11 / 11 / 1
Регистрация: 16.03.2007
Сообщений: 108
28.05.2007, 00:15 #2
Я так быстренько взглянул, вроде бы всё правильно.
Скажи что именно тебя не устраивает?
0
AcetoN
0 / 0 / 0
Регистрация: 27.05.2007
Сообщений: 3
28.05.2007, 02:57  [ТС] #3
сдвиг (удаление) строки неправильно работает, допустим если ввести все нули а последний элемент поставить 1, то выведется две строки
0 0 0 0
0 0 0 1
0
Rich
11 / 11 / 1
Регистрация: 16.03.2007
Сообщений: 108
28.05.2007, 23:19 #4
Я тут кое-что набросал. Посмотри, что не устроит напиши
0
Вложения
Тип файла: zip nuli.zip (597 байт, 79 просмотров)
AcetoN
0 / 0 / 0
Регистрация: 27.05.2007
Сообщений: 3
28.05.2007, 23:57  [ТС] #5
здорово! а можно сделать без второго массива F ?
0
Rich
11 / 11 / 1
Регистрация: 16.03.2007
Сообщений: 108
29.05.2007, 19:18 #6
Я тут кое-что исправил
0
Вложения
Тип файла: zip nuli.zip (623 байт, 112 просмотров)
kuchok
Сообщений: n/a
07.02.2009, 12:50 #7
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
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
void main(void)
{
 
int i,j,l=0,k,q,v,g=0,lmax=0,
    n=4,                                            
    m=2,                                            
    a[4][2];                                        
int *f;
f=(int*)malloc(n*sizeof(int));                                          
printf("Vvod matrici %dx%d\n",n,m);
for (i=0;i<n;i++) {
    for (j=0;j<m;j++) {
        printf("Vvedite element a[%d][%d]: ",i,j);
        scanf("%d",&a[i][j]);
        }
    }
 
/* output matrix */
 
printf("Icxodnaya matrica:\n\n");
for (i=0;i<n;i++) {
    for (j=0;j<m;j++) {
        printf("%3d",a[i][j]);
        if (j==m-1) printf("\n");
        }
    }
/* poisk nylevoi stroki */
 
for(i=0;i<n;i++) 
{
    for (j=0;j<m;j++) 
    {
        if(a[i][j]==0) {l++; if(m==l) {f[i]=1;g++;}}
    }
    lmax+=l;
    l=0;
}
 
 
printf("naideno nulei: %d",lmax);
printf("\nPoly4ennaya matrica:\n\n");
printf("g= %d\n",g);
for(i=0;i<n;i++) 
{
    for (j=0;j<m;j++) 
    {
        if( f[i]==1) break;
        else printf("%3d",a[i][j]);
        
    }
if(f[i]!=1)printf("\n");
}
 
printf("\npress any key to continue");
getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2009, 12:50
Привет! Вот еще темы с ответами:

Нужно из массива удалить нулевые элементы - C++
Нужно из массива удалить нулевые элементы на примере 1 0 2 0 3 0 4 0 5 0 -&gt; выдает правильно 1 2 3 4 5 а если я ввожу 0 0 0 0 0 0 0...

Удалить нулевые элементы из одномерного массива - C++
Подкиньте программу удаляющую из одномерного массива все 0 элементы. Заранее благодарен!

Удалить из массива все нулевые элементы - C++
Помогите кто знает. Пожалуйста. Сформировать и распечатать динамический одномерный массив( число элементов запросить у пользователя)....

В одномерном массиве удалить нулевые элементы - C++
Помогите пожалуйста в задании. Одномерный массив: 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.02.2009, 12:50
Ответ Создать тему
Опции темы

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