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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
16.03.2012, 17:41     Удаление заданого элемента матрицы,двумерные массивы #1
МОДИФИКАЦИЯ ДВУМЕРНЫХ МАССИВОВ
Дана прямоугольная матрица (NxM, где 1<=N<=10, 1<=M<=10).
Удалить строчку с максимальным количеством ненулевых элементов. Ввод, вывод и удаление реализовать в виде отдельных функций.
помогите с кодом
я просто не представляю даже с чего мне начинать=((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2012, 17:41     Удаление заданого элемента матрицы,двумерные массивы
Посмотрите здесь:

Двумерные массивы (матрицы) C++
Двумерные массивы 1. Характеристикой столбца целочисленной матрицы ... C++
Двумерные массивы- матрицы C++
C++ Двумерные массивы(матрицы),работа с элементами главной диагонали C++
Двумерные массивы. Определить, есть ли в заданных матрицах столбцы, содержащие по два отрицательных элемента C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 00:05  [ТС]     Удаление заданого элемента матрицы,двумерные массивы #21
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
#include <stdio.h>
 
int output_arr(int arr[25][25],int nl, int nc) //Вывод массива на экран
{ int i,j;
 
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
return 0;}
 
}
int input_arr(int arr[25][25],int nl, int nc) //Ввод массива с клавиатуры
{ int i,j;
for(i=0;i<nl;i++)
{for(j=0;j<nc;j++)
{ printf("a[%d][%d]=",i+1,j+1);scanf("%d",&arr[i][j]);}
printf("\n");
} return 0;}
 
int del(int arr[25][25],int *nl, int nc)//Удаление строки
{int i,j,max,temp,count[25];
 
for(i=0;i<*nl;i++)
count[i]=0;
 
for ( i=0; i<*nl; i++)
{
for ( j=0; j<nc; j++)
{
if (arr[i][j] != 0)
{
count[i] = count[i] + 1;
}
}
}
 
for ( i=0; i<*nl; i++) // Ищем строку с максимальным элементом
{
if (count[i] > max)
{
max = count[i];
temp = i; //Сохраняем номер строки
 
}
}
 
 //if (*nl!=i)
 //for (i=temp;i<*nl;i++) //Удаляем эту строку
 //for (j=0;j<nc;j++)
 //arr[i][j]=arr[i+1][j];
 for (  i=temp; i<nl; ++i)
                for (  j=0; j<nc; ++j)
                        arr[i][j]=arr[i+1][j];
 
 *nl--;
 //return 0;
}
 
int main()
{
int nl, nc, arr[25][25];
scanf("%d %d",&nl,&nc);
input_arr(arr,nl,nc);
del(arr, &nl, nc);
output_arr(arr,nl,nc);
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raikerian
9 / 9 / 1
Регистрация: 10.05.2011
Сообщений: 101
25.03.2012, 00:20     Удаление заданого элемента матрицы,двумерные массивы #22
Исправил:
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
#include <stdio.h>
using namespace std;
void output_arr(int arr[25][25],int nl, int nc) //Вывод массива на экран
{
    int i,j;
    for(i=0;i<nl;i++)
    {
        for(j=0;j<nc;j++)
        {
            printf("%d\t",arr[i][j]);
        }
        printf("\n");
    }
}
void input_arr(int arr[25][25],int nl, int nc) //Ввод массива с клавиатуры
{
    int i,j;
    for(i=0;i<nl;i++)
    {
        for(j=0;j<nc;j++)
        {
            printf("a[%d][%d]=",i+1,j+1);scanf("%d",&arr[i][j]);}
        printf("\n");
    }
}
void del(int arr[25][25],int nl, int nc)//Удаление строки
{
    int i,j,max=0,temp,count[25];
    for(i=0;i<nl;i++)
        count[i]=0;
    for (i=0; i<nl; i++)
    {
        for ( j=0; j<nc; j++)
        {
            if (arr[i][j] != 0)
            {
                count[i] = count[i] + 1;
            }
        }
    }
 
    for ( i=0; i<nl; i++) // Ищем строку с максимальным элементом
    {
        if (count[i] > max)
        {
            max = count[i];
            temp = i; //Сохраняем номер строки
        }
    }
    for (i=temp; i<nl; ++i)
        for (j=0; j<nc; ++j)
            arr[i][j]=arr[i+1][j];
}
int main()
{
    int nl, nc, arr[25][25];
    scanf("%d %d",&nl,&nc);
    input_arr(arr,nl,nc);
    del(arr, nl, nc);
    nl--;
    output_arr(arr,nl,nc);
    return 0;
}
Собственно зачем вовсе использовался указатель а затем ссылка на него? Убрал. Затем, max надо было инициализировать при объявлении (приравнять нулю).
Так же никчему использовать функции типа int, ведь нам ничего возвращать не надо (никаких значений). Изменил на void.
Ну всё вроде, проверяйте.
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 00:33  [ТС]     Удаление заданого элемента матрицы,двумерные массивы #23
Raikerian, воуу,заработало,cпасибо огромное)
Raikerian
9 / 9 / 1
Регистрация: 10.05.2011
Сообщений: 101
25.03.2012, 00:40     Удаление заданого элемента матрицы,двумерные массивы #24
И еще выше не указал, nl--; я засунул в тело самой программы (функция main) т.к. все что выполняется в функциях выше (void) остается в их пределах.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 00:42     Удаление заданого элемента матрицы,двумерные массивы
Еще ссылки по теме:

C++ Двумерные массивы. Подсчитать число элементов матрицы
C++ Двумерные динамические массивы-матрицы (выделение памяти)
C++ Двумерные массивы матрицы

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

Или воспользуйтесь поиском по форуму:
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.03.2012, 00:42  [ТС]     Удаление заданого элемента матрицы,двумерные массивы #25
Raikerian, я уже заметила что nl там)) спасибо огромное))
Yandex
Объявления
25.03.2012, 00:42     Удаление заданого элемента матрицы,двумерные массивы
Ответ Создать тему
Опции темы

Текущее время: 05:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru