Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 31
1

Поиск количества отрицательных и положительных элементов над главной диагональю матрицы

25.04.2017, 18:33. Показов 918. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте помогите пожалуйста с написание программы, всю голову сломал не знаю как сделать.

Задан числовой массив А[1:m, 1:n]. Составить программу поиска количества отрицательных и положительных элементов массива расположенных над главной диагональю и обнуления тех, количество которых минимально.

Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2017, 18:33
Ответы с готовыми решениями:

Вычислить сумму положительных элементов матрицы, находящихся над главной диагональю
Помогите пожалуйста решить задание и построить блок-схему. Задание: Вычислить сумму ...

Вычислить сумму положительных элементов матрицы, находящихся над главной диагональю
Bсем привет. Помогите пожалуйста решить задание и построить блок-схему в С (си). Задание:...

Вычислить количество положительных и отрицательных элементов над главной диагональю матрицы
Необходимо решить задачу: Дана целочисленная матрица N*N где N<=20 Вычислить количество...

Найти и сравнить количества отрицательных элементов, расположенных над и под главной диагональю матрицы
Найти и сравнить количества отрицательных элементов, расположенных над и под главной диагональю...

11
131 / 131 / 157
Регистрация: 11.04.2015
Сообщений: 343
25.04.2017, 18:49 2
вот так находятся элементы выше главной диалонали
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int negative_count = 0;
int positive count = 0;
 
for (int i = 0; i < k - 1; i++){
   for (int j = i + 1; j < k; j++){
      if(Array[i][j] >0) positive_count++;
      else if(Array[i][j]) < 0) negative_count++;    
      printf("%d", Array[i][j])
   }
}
if(negative_count < positive_count){
     // проходим опять по предыдущим for циклам и используем в циклах if(Array[i][j] < 0) Array[i][j] = 0;
}
else if(positive_count < negative_count) if(Array[i][j] > 0) Array[i][j] = 0;
else // тут ты должен придумать что делать если колличество одинаково
1
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 31
27.04.2017, 19:48  [ТС] 3
Цитата Сообщение от andreyka93 Посмотреть сообщение
int negative_count = 0;
int positive count = 0;
можете пояснить что это значит?
0
131 / 131 / 157
Регистрация: 11.04.2015
Сообщений: 343
27.04.2017, 21:07 4
Цитата Сообщение от fax0nat Посмотреть сообщение
можете пояснить что это значит?
инициализация переменных куда запишется количество отрицательных и положительных элементов.
0
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 31
29.04.2017, 02:39  [ТС] 5
В начале дает мне ввести массив потом вылетает.

Задача была следующая: Задан числовой массив А[1:m, 1:n]. Составить программу поиска количества отрицательных и положительных элементов массива расположенных над главной диагональю и обнуления тех, количество которых минимально.

ПОМОГИТЕ! Трубы горят!

Код:
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
 
#include <stdio.h> 
#include <conio.h>
#include "string.h"
#include "stdafx.h"
 
int main()
{
    int negative_count = 0;
    int positive_count = 0;
    int Array[3][3];
    int i=0, j=0, k=5;
 
    for (i = 0; i<3; i++)   
    {
        for (j = 0; j<3; j++)  
        {
            printf("Array[%d][%d] = ", i, j);
            scanf_s("%d", &Array[i][j]);
        }
    }
    
    for (int i = 0; i < k - 1; i++) 
    {
        for (int j = i + 1; j < k; j++) 
        {
            if (Array[i][j] >0) positive_count++;
            else if (Array[i][j] < 0) negative_count++;
            printf("%d", Array[i][j]);
        }
    }
 
    if (positive_count > negative_count);
    for (int i = 0; i < k - 1; i++)
    {
        for (int j = i + 1; j < k; j++)
        {
            if (Array[i][j] < 0) Array[i][j] = 0;
        }
    }
    
    if (positive_count < negative_count);
    for (int i = 0; i < k - 1; i++)
    {
        for (int j = i + 1; j < k; j++)
        {
            if (Array[i][j] > 0) Array[i][j] = 0;
        }
    }
 
    printf("%d", Array[i][j]);
 
     return 0;
}
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
29.04.2017, 03:10 6
Цитата Сообщение от fax0nat Посмотреть сообщение
C
1
2
3
4
5
6
7
k=5;
 
for (int i = 0; i < k - 1; i++) 
{
   for (int j = i + 1; j < k; j++) 
  {
    if (Array[i][j] >0) positive_count++;
если k=5, то i доходит до 3, j до 4. Получается ты пытаешься прочитать данные из Array[3][4], хотя у Array максимальный индекс [2][2]
0
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 31
29.04.2017, 03:17  [ТС] 7
oldnewyear, я уже нашел несколько маленьких ошибок типо этого и исправил, но все равно не работает((( вот исправленный код
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
#include "stdio.h"
#include "stdafx.h"
 
int main()
{
    int negative_count = 0;
    int positive_count = 0;
    int Array[5][5];
    int i = 0, j = 0, k = 5;
 
    for (i = 0; i<5; i++)
    {
        for ( j = 0; j<5; j++)
        {
            printf("Array[%d][%d] = ", i, j);
            scanf_s("%d", &Array[i][j]);
        }
    }
 
    for ( i = 0; i < k - 1; i++)
    {
        for ( j = i + 1; j < k; j++)
        {
            if (Array[i][j] >0) positive_count++;
            else if (Array[i][j] < 0) negative_count++;
            printf("%d", Array[i][j]);
        }
    }
 
    if (positive_count > negative_count)
    for ( i = 0; i < k - 1; i++)
    {
        for ( j = i + 1; j < k; j++)
        {
            if (Array[i][j] < 0) 
                Array[i][j] = 0;
        }
    }
 
    if (positive_count < negative_count)
    for ( i = 0; i < k - 1; i++)
    {
        for ( j = i + 1; j < k; j++)
        {
            if (Array[i][j] > 0) Array[i][j] = 0;
        }
    }
 
    if (positive_count = negative_count)
        printf("Klichestvo otric i polojit odinakovo");
 
        printf("%d", Array[i][j]);
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 31
29.04.2017, 03:41  [ТС] 8
Цитата Сообщение от andreyka93 Посмотреть сообщение
for (int i = 0; i < k - 1; i++){
* *for (int j = i + 1; j < k; j++){
Можете пояснить пожалуйста за k, не совсем понимаю как оно здесь работает и чему должно ровняться(я понял что это для того чтобы брать значения выше главной диагонали, не понимаю как работает).

И еще нам не нужно считать отрицательные и положительный элементы нужно их найти и обнулить, не понимаю зачем нужны
Цитата Сообщение от andreyka93 Посмотреть сообщение
negative_count = 0; positive count = 0;
.
0
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
29.04.2017, 13:08 9
нам не нужно считать отрицательные и положительный элементы
А как же условие задачи?
Составить программу поиска количества отрицательных и положительных элементов
C
1
if (positive_count = negative_count)
positive_count присваивается значение negative_count. Чтобы сравнить их значения делают так
C
1
if (positive_count == negative_count)
Строка 52 - это зачем?
В остальном вроде все правильно. Чтобы лишний раз не гонять циклы можно объединить их в один (строки 30 - 47), и в конце добавить вывод массива
C
1
2
3
4
5
6
7
8
for (i = 0; i<5; i++)                             //  Где там наши нолики?
    {
        for ( j = 0; j<5; j++)
        {
            printf("%2d ", Array[i][j]);
        }
        printf("\n");
    }
Ну, это так, пожелание.
1
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 31
30.04.2017, 13:14  [ТС] 10
qwarta, про счет количества пропустил, сори, но программа так как не работала так и не работает...
0
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
01.05.2017, 09:33 11
Не верю!
Может я чего-то не понимаю или числа не те ввожу?
Поиск количества отрицательных и положительных элементов над главной диагональю матрицы
1
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 31
01.05.2017, 11:07  [ТС] 12
qwarta, спасибо за подсказки но я худо бедно еще раз написал код(не без подсказок выше), все начало работать. Спасибо всем.

Вот код, который у меня работает.

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 <iostream>
using namespace std;
 
 
int main()
{
    int negative_count = 0;
    int positive_count = 0;
    int Array[3][4];
    int i = 0, j = 0, k = 4;
 
    for (i = 0; i<4; i++)
    {
        for ( j = 0; j<3; j++)
        {
            cout<<"Array["<<i<<"]["<<j<<"]= ";
            cin>>Array[i][j];
        }
    }
 
    for ( i = 0; i < k - 1; i++)
    {
        for ( j = i + 1; j < k; j++)
        {
            if (Array[i][j] >0) positive_count++;
            else if (Array[i][j] < 0) negative_count++;
        }
    }
 
    if (positive_count > negative_count)
    for ( i = 0; i < k - 1; i++)
    {
        for ( j = i + 1; j < k; j++)
        {
            if (Array[i][j] < 0) 
                Array[i][j] = 0;
        }
    }
 
    if (positive_count < negative_count)
    for ( i = 0; i < k - 1; i++)
    {
        for ( j = i + 1; j < k; j++)
        {
            if (Array[i][j] > 0) Array[i][j] = 0;
        }
    }
 
    
    for (i = 0; i<4; i++)  
   {
        for (j = 0; j<3; j++) 
        {
            cout << Array[i][j];
            cout << "   ";
        }
        cout<<endl; 
   }
   
    
    
    return 0;
}
0
01.05.2017, 11:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2017, 11:07
Помогаю со студенческими работами здесь

Сумма положительных элементов над главной диагональю матрицы
Посчитать и вывести сумму положительных элементов, расположенных над главной диагональю матрицы....

Найти произведение отрицательных элементов над главной диагональю матрицы
Массив B задан по формуле B=sin(i+j+0,5).Найти произведение отрицательных элементов над главной...

Найти сумму положительных элементов над главной диагональю матрицы
Дана матрица А(5,5) 1. Найти сумму положительных элементов над главной диагональю матрицы 2....

Найти количество положительных элементов над главной диагональю матрицы
Здравствуйте, уважаемы форумчане. Не понял как сделать подобную задачу: Составить программу на VBA...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru