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

массивы. - C++

Восстановить пароль Регистрация
 
overlord754
54 / 16 / 5
Регистрация: 24.10.2009
Сообщений: 181
01.12.2010, 19:53     массивы. #1
с клавиатуры задана матрица MxN. найти номер первого столбца в котором есть хотя бы 1 нулевой элемент. Найти номер первой строки, в которой есть хотя бы 1 отрицательный элемент.
Какой алгоритм поиска этих номеров?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2010, 19:53     массивы.
Посмотрите здесь:

C++ Массивы
C++ Массивы 2
Массивы C++
C++ массивы
массивы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
01.12.2010, 20:02     массивы. #2
перебираешь столбцы и ищешь в столбце нулевой элемент, если найден записываешь номер столбца и останавливаешь цикл. В матрице может быть несколько столбцов с нулевыми элементами, тебе нужно записать номер первого из них. Со строками аналогично
overlord754
54 / 16 / 5
Регистрация: 24.10.2009
Сообщений: 181
01.12.2010, 20:19  [ТС]     массивы. #3
panicwassano, напиши как выглядеть должно
snakext
 Аватар для snakext
6 / 6 / 1
Регистрация: 08.06.2010
Сообщений: 35
01.12.2010, 20:37     массивы. #4
C++
1
2
3
4
5
6
7
for (i=0;i<m;i++){
    for (j=0;j<n;j++){
             if (arr[i][j]<0){ int temp = i;break;}
    }
}
// потом выводишь это дело 
cout<<"В строке"<< temp+1 << " первый раз встретился отрицательный элемент";
Тоже самое делаешь со столбцами, только i и j в циклах for меняешь местами, перебирая элементы.
overlord754
54 / 16 / 5
Регистрация: 24.10.2009
Сообщений: 181
01.12.2010, 20:46  [ТС]     массивы. #5
snakext, я такое пробовал. Мне нужно это сделать в начале кода, т.к. дальше идет перестановка строк и столбцов по условию задачи. У меня break отключает и все дальнейшие циклы. В итоге выводятся только нули.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
01.12.2010, 20:49     массивы. #6
так и сделай это вначале кода,а для сортировки далее ниже сделай отдельный цикл
overlord754
54 / 16 / 5
Регистрация: 24.10.2009
Сообщений: 181
01.12.2010, 20:58  [ТС]     массивы. #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
60
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
void main()
{int i,j,k;
int n=0,m=0,x=0,y=0,index=0;
int a[100][100];
int b[100];
cout<<"Enter the array dimension NxM"<<'\n';
cout<<"N= ";cin>>n;
cout<<"M= ";cin>>m;
cout<<"Enter the array"<<n<<"x"<<m<<'\n';
for ( i=0;i<n;i++)
for ( j=0;j<m;j++)
cin>>a[i][j];
for ( i=0;i<n;i++)
b[i]=0;
{for ( i=0;i<n;i++){
    for ( j=0;j<m;j++){
        if (a[i][j]=0){
            index=j;
            break;
}
}
}
}
for ( i=0;i<n;i++)
for ( j=0;j<m;j++)
if ((a[i][j]<0)&&((i+1)%2==0))
b[j]=abs(a[i][j])+b[j];
for ( i=0;i<n;i++)
{
  for ( j=0;j<n;j++)
  {
    if (b[j]<b[i]) 
    {
    x = b[i];
    b[i] = b[j];
    b[j] = x;   
    for ( k=0;k<m;k++)
    {
     x=a[k][j];
     a[k][j]=a[k][i];
     a[k][i]=x; 
    }
    }
  } 
}
cout<<"Complete array"<<n<<"x"<<m<<'\n';   
for ( i=0;i<n;i++)
{
for ( j=0;j<m;j++)
cout<<a[i][j]<<" "<<'\t';
cout<<'\n';
}
for ( i=0;i<n;i++)
cout<<b[i]<<" ";
cout<<index<<'\n';
 
}
вот полный код.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
01.12.2010, 21:02     массивы. #8
Проверяйте

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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(static_cast<int>(time(NULL)));
    setlocale(LC_ALL,"Russian");
    int **arr;
    int m,n,st_nul=0,str_nul=0;
    cout<<"Введите количество строк: ";
    cin>>m;
    arr = new int*[m];
    cout<<"Введите количество столбцов: ";
    cin>>n;
    cout<<endl<<"Матрица: "<<endl;
    for(int i=0; i<m; i++)
    {
        arr[i]=new int[n];
         for(int j=0; j<n; j++)
            {
                arr[i][j]=rand()%5-1;
                cout<<arr[i][j]<<"  ";
            }
        cout<<endl;
    }
    for(int i=0; i<m; i++)
    {
         for(int j=0; j<n; j++)
            {
                if(arr[i][j]==0 && st_nul==0)
                {
                    st_nul=j+1;
                }
                if(arr[i][j]<0 && str_nul==0)
                {
                    str_nul=i+1;
                }
                
            }
    }
    cout<<endl<<"Номер первого столбца в котором есть хотя бы 1 нулевой элемент -> "<<st_nul<<endl;
    cout<<endl<<"Номер первой строки, в которой есть хотя бы 1 отрицательный элемент -> "<<str_nul<<endl;
    for(int i=0; i<m; i++)
        delete arr[i];
         delete [] arr;
     system("pause");
     return 0;
}
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
01.12.2010, 21:35     массивы. #9
Цитата Сообщение от overlord754 Посмотреть сообщение
я так и делаю, нули выводит
Дык, еще бы. На 21 строке вы все обнуляете
C++
1
if (a[i][j]=0)
(а удачно ли мы присвоили элементу значение 0?!)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2010, 21:50     массивы.
Еще ссылки по теме:

C++ Массивы в С++
массивы C++
Массивы C++

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

Или воспользуйтесь поиском по форуму:
overlord754
54 / 16 / 5
Регистрация: 24.10.2009
Сообщений: 181
01.12.2010, 21:50  [ТС]     массивы. #10
lemegeton, ошибочка была) я уже поправил
Yandex
Объявления
01.12.2010, 21:50     массивы.
Ответ Создать тему
Опции темы

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