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

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

Войти
Регистрация
Восстановить пароль
 
overlord754
59 / 21 / 7
Регистрация: 24.10.2009
Сообщений: 198
#1

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

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

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

Даны массивы A(8), F(8),Q(8). Сформировать массивы С(8), каждый элемент которого вычисляется по формуле - Pascal ABC
uses crt; type mas=array of integer; var A,F,Q,C:mas; i,s:integer; begin clrscr; writeln('Массив первый:'); for i:=1...

Даны массивы а и b. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi= -ai - Pascal
Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi=...

Упорядочить массивы по по убыванию, потом соединить массивы в один упорядоченный массив - C (СИ)
Начала писать, запуталась Даны два одномерных массива состоящие из 10 целых чисел. Упорядочить массивы по по убыванию, потом соединить...

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы - C#
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил "Запрещено создавать темы с множеством...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
01.12.2010, 20:02     массивы. #2
перебираешь столбцы и ищешь в столбце нулевой элемент, если найден записываешь номер столбца и останавливаешь цикл. В матрице может быть несколько столбцов с нулевыми элементами, тебе нужно записать номер первого из них. Со строками аналогично
overlord754
59 / 21 / 7
Регистрация: 24.10.2009
Сообщений: 198
01.12.2010, 20:19  [ТС]     массивы. #3
panicwassano, напиши как выглядеть должно
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
59 / 21 / 7
Регистрация: 24.10.2009
Сообщений: 198
01.12.2010, 20:46  [ТС]     массивы. #5
snakext, я такое пробовал. Мне нужно это сделать в начале кода, т.к. дальше идет перестановка строк и столбцов по условию задачи. У меня break отключает и все дальнейшие циклы. В итоге выводятся только нули.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
01.12.2010, 20:49     массивы. #6
так и сделай это вначале кода,а для сортировки далее ниже сделай отдельный цикл
overlord754
59 / 21 / 7
Регистрация: 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';
 
}
вот полный код.
MILAN
885 / 779 / 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
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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     массивы.
Еще ссылки по теме:

Файлы. Компоненты - массивы чисел. Переформировать файл, где сначала идут массивы с положительными макс. элементами - Turbo Pascal
Здравствуйте!! я пишу такую задачу: нужно написать две программы, одна из них создает файл, где компоненты - массивы вещ. чисел; ...

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

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


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

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

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