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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
#1

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

16.03.2012, 17:41. Просмотров 1296. Ответов 24
Метки нет (Все метки)

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

Двумерные массивы (матрицы) - C++
Добрый день!!!!!! Помогите решить такую задачу: Характеристикой столбца целочисленной матрицы назовём сумму модулей его отрицательных...

Двумерные массивы- матрицы - C++
Помогите, пожалуйста, разобраться и написать программу для задачи: Найти произведение матрицы А на вектор B, полученный из элементов...

Двумерные массивы матрицы - C++
Что не так в программе помогите пожалуйста!! #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { ...

Двумерные массивы 1. Характеристикой столбца целочисленной матрицы ... - C++
подскажите пожалуста, есть задание: &quot;Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных...

Двумерные массивы. Подсчитать число элементов матрицы - C++
помогите пожалуйста написать программы 2.Подсчитать число элементов матрицы Q(9x11), остаток от деления которых на пять равен единице.

Двумерные динамические массивы-матрицы (выделение памяти) - C++
Помогите пожалуйста,разобраться. В динамической памяти сначала выделяется память для указателей на соответствующие двумерные массивы(строки...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
23.03.2012, 20:16  [ТС] #2
очень нужна помощь(
0
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
23.03.2012, 20:41 #3
вот ход решение с комментариями, но для того чтобы ввести в него свой вклад, осталось переписать его в функции. Домашняя работа, она и в Африке домашняя работа.

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
#include <iostream>
using namespace std;
int main()
{
    const int n = 10; // initializing of our const line number
    const int m = 10; // initializing of our const row number
    int count[n]; // counting number which larger than 0
    int mas[n][m]; // two dimensional array
    int min = -1; // variable for find the maximum line
    int temp; // temporary variable
 
    cout << "Enter two dimensional array 10x10\n";
 
    for (int i=0; i<n; i++) // there are we get default value for our counting
    {
        count[i] = 0;
    }
 
    for (int i=0; i<n; i++) // there are we get the value for two dimensional array
    {
        for (int j=0; j<m; j++)
        {
            cin >> mas[i][j];
        }
    }
 
    for (int i=0; i<n; i++) // there are we counting the sum of every line in two dimensional array
    {
        for (int j=0; j<m; j++)
        {
            if (mas[i][j] > 0)
            {
                count[i] = count[i] + mas[i][j];
            }
        }
    }
 
    for (int i=0; i<n; i++) // there are we looking for the lmaximum line 
    {
        if (count[i] > min)
        {
            min = count[i];
            temp = i; //and save it in temporary variable
        }
    }
 
    // that's all
 
    for (int i=0; i<temp; i++) 
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << "\n";
    }
 
    for (int i=temp+1; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << "\n";
    }
}
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 03:39  [ТС] #4
Цитата Сообщение от jambas92 Посмотреть сообщение
вот ход решение с комментариями, но для того чтобы ввести в него свой вклад, осталось переписать его в функции. Домашняя работа, она и в Африке домашняя работа.

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
#include <iostream>
using namespace std;
int main()
{
    const int n = 10; // initializing of our const line number
    const int m = 10; // initializing of our const row number
    int count[n]; // counting number which larger than 0
    int mas[n][m]; // two dimensional array
    int min = -1; // variable for find the maximum line
    int temp; // temporary variable
 
    cout << "Enter two dimensional array 10x10\n";
 
    for (int i=0; i<n; i++) // there are we get default value for our counting
    {
        count[i] = 0;
    }
 
    for (int i=0; i<n; i++) // there are we get the value for two dimensional array
    {
        for (int j=0; j<m; j++)
        {
            cin >> mas[i][j];
        }
    }
 
    for (int i=0; i<n; i++) // there are we counting the sum of every line in two dimensional array
    {
        for (int j=0; j<m; j++)
        {
            if (mas[i][j] > 0)
            {
                count[i] = count[i] + mas[i][j];
            }
        }
    }
 
    for (int i=0; i<n; i++) // there are we looking for the lmaximum line 
    {
        if (count[i] > min)
        {
            min = count[i];
            temp = i; //and save it in temporary variable
        }
    }
 
    // that's all
 
    for (int i=0; i<temp; i++) 
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << "\n";
    }
 
    for (int i=temp+1; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << "\n";
    }
}
ну с функциями я разберусь)
спасибо большое)
только у меня вопрос что такое cout <<
ни разу не пользовалась этим
и в учебнике и на лекции не встречала=(
0
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
24.03.2012, 09:12 #5
Цитата Сообщение от лизи Посмотреть сообщение
только у меня вопрос что такое cout <<
оператор вывода в поток, описывается в любом учебники по с++
0
silent_1991
24.03.2012, 10:56
  #6

Не по теме:

panicwassano, строго говоря, библиотечный объект cout типа ostream и перегруженный оператор сдвига влево для него. Оператора вывода как такового в С++ нет.

0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 12:56  [ТС] #7
silent_1991, вот в чем дело это си++
а в си получается мне подойдет ptintf??
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.03.2012, 12:56 #8
лизи, нет.
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 13:13  [ТС] #9
silent_1991, я просто не совсем понимаю что такое перегруженный оператор сдвига
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.03.2012, 13:15 #10
лизи, не заморачивайтесь особо. Конструкция вида cout << something; позволяет вывести something на экран, если, конечно, возможно это something вывести вообще.
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 13:18  [ТС] #11
silent_1991, а почему тогда вместо него нельзя использовать printf? он же тоже выводит на экран?
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.03.2012, 13:35 #12
лизи, мне кажется, или вы отредактировали сообщение 7 уже после моего ответа? Ответ "нет" был на вопрос "можно ли cout использовать в Си?" Либо я ошибся, либо первоначальный ваш вопрос был таким. Во всяком случае, в Си можно и даже нужно использовать printf для тех же целей.
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 22:27  [ТС] #13
silent_1991, я редактировала сообщение можно ли использовать в си,но тогда еще не было ответа,cпасибо)))

Добавлено через 8 часов 33 минуты
jambas92,
silent_1991,
тут этот код
он удаляет строчку с просто максимальной суммой
уже битый час не могу переделать программу так чтобы удаляла строчку с максимальным количесвом не нулевых эементов(
0
Raikerian
9 / 9 / 1
Регистрация: 10.05.2011
Сообщений: 101
24.03.2012, 22:55 #14
В чем сложность?
Найти строчку получается? Просто нужно реализовать сдвиг на кол-во элементов в строке, ведь в памяти компилятора массив написан в одну строчку (а кол-во строк заданных при вводе соответственно уменьшить на 1). И тогда при повторном выводе строки не будет.
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
24.03.2012, 23:19  [ТС] #15
Цитата Сообщение от Raikerian Посмотреть сообщение
В чем сложность?
Найти строчку получается? Просто нужно реализовать сдвиг на кол-во элементов в строке, ведь в памяти компилятора массив написан в одну строчку (а кол-во строк заданных при вводе соответственно уменьшить на 1). И тогда при повторном выводе строки не будет.
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
void 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-1!=i)
for (i=temp;i<*nl-1;i++) //Удаляем эту строку
for (j=0;j<nc;j++)
arr[i][j]=arr[i+1][j];
--*nl;
}
вот так выглядет мой код
в этом случае он просто удаляет первую строчку

а если код выглядит вот так
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
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-1!=i)
 for (i=temp;i<*nl-1;i++) //Удаляем эту строку
 for (j=0;j<nc;j++)
 arr[i][j]=arr[i+1][j];
 *nl--; return 0;
}
то он удаляет все строки кроме второй

сижу меняю коды
и прихожу либо к этому либо к этому
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 23:19
Привет! Вот еще темы с ответами:

Двумерные массивы. Определить, есть ли в заданных матрицах столбцы, содержащие по два отрицательных элемента - C++
Прошу помощи в создании данной программы: Даны матрицы В (m,n) и С (n,m), заполненные случайным образом. Определить, есть ли в заданных...

C++ Двумерные массивы(матрицы),работа с элементами главной диагонали - C++
Уважаемые коллеги, прошу помощи в решении парочки задачек,уж мозг в Си не &quot;варит&quot;,не клеится с его структурой... 1.В каждой строке...

Двумерные массивы. Четные строки матрицы сдвинуть на К элементов вправо. - C++
Используя функции сформировать двумерный массив. Все четные строки матрицы сдвинуть циклически на К элементов вправо. Первую часть...

Обработка отдельных строк (столбцов) матрицы и работа с диагоналями. Двумерные массивы - C++
Ввести целочисленный двумерный массив ANxM, вывести его. Найти сумму положительных угловых элементов. Найденной суммой заменить строку...


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

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

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