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

Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер - C++

Восстановить пароль Регистрация
 
stereodamage
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 3
09.12.2011, 13:33     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер #1
Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер. Все элементы столбца с таким же номером уменьшить вдвое.
Какой-то ступор пошел.
заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2011, 13:33     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер
Посмотрите здесь:

Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его номер C++
C++ Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его номер.
Проверить, есть ли в матрице хотя бы одна строка, содержащая положительный элемент, и найти ее номер C++
Найти номер второй из строк,содержащих хотя бы один отрицательный элемент C++
C++ В квадратной матрице найти сумму модулей элементов в строках, содержащих хотя бы один отрицательный элемент; определить номер 1ой строки с 0-ым элем-о
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kidasov
76 / 76 / 12
Регистрация: 02.12.2011
Сообщений: 966
Записей в блоге: 3
09.12.2011, 13:50     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
73
74
75
76
77
78
79
80
81
#include <iostream>
using namespace std;
 
const int M = 3;
const int N = 3;
 
void input(double **a)
{
  cout<<"input data : \n";
  for (int i=0; i<M; i++)
  {
    for (int j=0; j<N; j++)
      cin>>a[i][j];
  }
  cout<<"\n";
}
 
void output(double **a)
{
  cout<<"output data: \n";
  for (int i=0; i<M; i++)
  {
    for (int j=0; j<N; j++)
      cout<<a[i][j]<<"\t";
    cout<<"\n";
  }
}
 
void del(double **a)
{  
  for (int i=0; i<M; i++)
  {
    delete []a[i];
  }
  delete []a;
}
 
int findRow(double **a)
{
  int numbRow;
  for (int i=0; i<M; i++)
  {
    for (int j=0; j<N; j++)
    {
      if (a[i][j] < 0) {numbRow = i; return numbRow;}
    }
  }
  return -1;
}
 
void change(double **a, int *numbRow)
{
  for (int i=0; i<M; i++)
  {
    if (i == *numbRow)
    {  
      for (int j=0; j<N; j++)
      {
    a[i][j] = a[i][j]/2;
      }
      return;
    }
  }
}
 
int main()
{
  double **a = new double *[M];
  for (int i=0; i<M; i++)
  {
    a[i] = new double[N];
  }
  input(a);
  output(a);
  int numbRow = findRow(a); 
  cout<<"Row with value < 0: "<<numbRow<<"\n";
  change(a, &numbRow);
  cout<<"\nAfter change: \n";
  output(a);
  return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.12.2011, 13:51     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер #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
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define M 5
#define N 10
 
void Init(int a[][N], int i)
{
   if (i >= 0)
   {
      *(*a + i) = rand()%100 - 50;
      Init(a, i-1);
   }
}
 
void Print(int a[][N], int m, int n)
{
    int i, j;
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
            printf("%5d", a[i][j]);
        printf("\n");
    }
}
 
int Check(int a[][N], int i)
{
   return i >= 0 ? (*(*a + i) < 0 ? i : Check(a, i-1)) : -1;
}
 
void Change(int a[][N], int i)
{
   if (i >= 0)
   {
       *(*a + i) >>= 1;
       Change(a, i - N);
   }
}
 
int main()
{
    int a[M][N], i, row, st;
    srand(time(NULL));
    Init(a, M*N - 1);
    Print(a, M, N);
    row = (i = Check(a, M*N-1))/N;
    st = i % N;
    printf("row = %d\n", st);
    if (st >= 0)
    {
        Change(a, M*N - N + st);
        Print(a, M, N);
    }
    return 0;
}
Lawlietb32
 Аватар для Lawlietb32
14 / 14 / 2
Регистрация: 31.03.2011
Сообщений: 118
09.12.2011, 13:52     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как-то так... компилировал в BC 3.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
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <time.h>
 
void main()
{
    clrscr();
    double **A;
    int i, j, k, n, m, find=0;
    
    cout << "Input n, m:  ";
    cin >> n >> m;
    A = new double*[n];
    for (i=0; i<n; i++)
        A[i] = new double[m];
    srand(time(NULL));
    for (i=0; i<n; i++)
    {
        cout << "\n";
        for (j=0; j<m; j++)
        {
            A[i][j] = rand() % 100 - 10; 
            cout << A[i][j] << " ";
        }
    }
            
    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
        {
            if (A[i][j] < 0)
            {
                cout << "\nRow = " << i+1 << " Colum = " << j+1 << " Number = " << A[i][j] << "\n";
                find=j;
                break;
            }
            if (find)
                break;
        }
    
    for (k=0; k<n; k++)
    {
        if (find)
            A[k][find] /= 2;
    }
    
    cout << "New matrix:\n";
    for (i=0; i<n; i++)
    {
        cout << "\n";
        for (j=0; j<m; j++)
            cout << A[i][j] << " ";
    }
    getch();
    
    for (i=0; i<20; i++)
        delete[]A[i];
    delete[]A;
}
stereodamage
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 3
10.12.2011, 22:03  [ТС]     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер #5
Спасибо все. от души
P.S. Lawlietb , могу ошибаться, но если ставить нумерацию эл-тов матрицы от 0 до его размерности, то ,если отриц. элемент будет находится в первом столбце, эл-ты столбца не будут делиться пополам.
Lawlietb32
 Аватар для Lawlietb32
14 / 14 / 2
Регистрация: 31.03.2011
Сообщений: 118
11.12.2011, 00:23     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер #6
stereodamage, Да, прав) мой косяк) Легко исправить... find = -1; и потом проверять, если >=0, то... делить пополам)
Yandex
Объявления
11.12.2011, 00:23     Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент, и найти ее номер
Ответ Создать тему
Опции темы

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