С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
overlord754
59 / 21 / 9
Регистрация: 24.10.2009
Сообщений: 198
1

массивы.

01.12.2010, 19:53. Просмотров 327. Ответов 9
Метки нет (Все метки)

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

Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100)
Доброго дня, уважаемые форумчане, помогите пожалуйста решить задание....

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц)
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой...

Структуры, массивы, указатели, динамические массивы структур
Помогите с решением задачи (прикрепляю условие). Заранее спасибо.

Многомерные массивы, как перебирать внутренние массивы
Здравствуйте. Такой учебный код и плохо понимаю как перебираются внутренние...

Попадание точки. Массивы чисел. Массивы записей.
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не...

9
panicwassano
594 / 562 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
01.12.2010, 20:02 2
перебираешь столбцы и ищешь в столбце нулевой элемент, если найден записываешь номер столбца и останавливаешь цикл. В матрице может быть несколько столбцов с нулевыми элементами, тебе нужно записать номер первого из них. Со строками аналогично
0
overlord754
59 / 21 / 9
Регистрация: 24.10.2009
Сообщений: 198
01.12.2010, 20:19  [ТС] 3
panicwassano, напиши как выглядеть должно
0
snakext
6 / 6 / 2
Регистрация: 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 меняешь местами, перебирая элементы.
0
overlord754
59 / 21 / 9
Регистрация: 24.10.2009
Сообщений: 198
01.12.2010, 20:46  [ТС] 5
snakext, я такое пробовал. Мне нужно это сделать в начале кода, т.к. дальше идет перестановка строк и столбцов по условию задачи. У меня break отключает и все дальнейшие циклы. В итоге выводятся только нули.
0
panicwassano
594 / 562 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
01.12.2010, 20:49 6
так и сделай это вначале кода,а для сортировки далее ниже сделай отдельный цикл
0
overlord754
59 / 21 / 9
Регистрация: 24.10.2009
Сообщений: 198
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';
 
}
вот полный код.
0
MILAN
888 / 782 / 186
Регистрация: 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;
}
1
lemegeton
2935 / 1364 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
01.12.2010, 21:35 9
Цитата Сообщение от overlord754 Посмотреть сообщение
я так и делаю, нули выводит
Дык, еще бы. На 21 строке вы все обнуляете
C++
1
if (a[i][j]=0)
(а удачно ли мы присвоили элементу значение 0?!)
0
overlord754
59 / 21 / 9
Регистрация: 24.10.2009
Сообщений: 198
01.12.2010, 21:50  [ТС] 10
lemegeton, ошибочка была) я уже поправил
0
01.12.2010, 21:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2010, 21:50

Массивы структур и массивы строк
Студенты, у которых рейтинг меньше 3 что не верно делаю?! #include...

массивы указателей,указатели на массивы
Понимаю что тема эта изжевана, но я ещё жую.Хочу, чтобы усвоилось. допустим...

массивы указателей,указатели на массивы
Понимаю что тема эта изжевана, но я ещё жую.Хочу, чтобы усвоилось. допустим...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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