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

помогите найти ошибку. Поиск строк в массиве. - C++

Восстановить пароль Регистрация
 
senderlender
5 / 5 / 1
Регистрация: 03.12.2013
Сообщений: 50
03.12.2013, 02:49     помогите найти ошибку. Поиск строк в массиве. #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
61
62
63
64
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int N=25;
    int a[N][N], b[N][N], m, n, l=0, c=0;
    int min=0, max=0, p=0, z=0;
    do
    {
        cout<<"Enter size mass"<<endl;
        cout<<"Gorizont=";
        cin>>m;
        cout<<"Vertikal=";
        cin>>n;
    }while(m<1||n<1||m>25||n>25);
 
    for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
                cin>>a[i][j];
        }
    cout<<endl;
 
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            for(int k=j+1; k<m; k++)
            {
                if(a[i][j]==a[i][k])
                    l++;
                if(a[i][j]!=a[i][k])
                    z++;
            }
        }
        if(z>c)
            min=i;
        c=z;
        z=0;
        if(l>p)
            max=i;
        p=l;
        l=0;
    }
 
    for(int j=0; j<m; j++)
    {
        b[0][j]=a[max][j];
        a[max][j]=a[min][j];
        a[min][j]=b[0][j];
    }
 
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
    system("pause");
    return 0;
}


Программа делает вот что: В двух мерном массиве ищет строку с наиболее различным количеством элементов и с наиболее одинаковым при этом меняя их местами.
В этом коде необходимо задать функцию которая и будет искать эти строки. То есть вот этот участок кода:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            for(int k=j+1; k<m; k++)
            {
                if(a[i][j]==a[i][k])
                    l++;
                if(a[i][j]!=a[i][k])
                    z++;
            }
        }
        if(z>c)
            min=i;
        c=z;
        z=0;
        if(l>p)
            max=i;
        p=l;
        l=0;
    }



Но как вы ведите необходимы в главной функции две перемененных мин и макс. Возникла вот такая идея:

Кликните здесь для просмотра всего текста
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
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int *pr_str(int **a, int m, int n);
int _tmain(int argc, _TCHAR* argv[])
{
    const int N=25;
    int m, n, l=0, c=0;
    int min=0, max=0, p=0, z=0;
    int **a=new int *[N];
    int **b= new int *[N];
    for (int i=0; i<N; i++)
    {
        a[i]=new int [N];
        b[i]=new int [N];
        for (int j=0; j<N; j++)
        {
            a[i][j]=0;
            b[i][j]=0;
        }
 
    }
 
    do
    {
        cout<<"Enter size mass"<<endl;
        cout<<"Gorizont=";
        cin>>m;
        cout<<"Vertikal=";
        cin>>n;
    }while(m<1||n<1||m>25||n>25);
 
    for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
                cin>>a[i][j];
        }
    cout<<endl;
 
    int *p=pr_str(a, m, n);
    min=p[0];
    max=p[1];
 
    for(int j=0; j<m; j++)
    {
        b[0][j]=a[max][j];
        a[max][j]=a[min][j];
        a[min][j]=b[0][j];
    }
 
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
    system("pause");
    return 0;
}
 
int *pr_str(int **a, int m, int n)
{
    int z=0, c=0, l=0, p=0, min, max;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            for(int k=j+1; k<m; k++)
            {
                if(a[i][j]==a[i][k])
                    l++;
                if(a[i][j]!=a[i][k])
                    z++;
            }
        }
        if(z>c)
            min=i;
        c=z;
        z=0;
        if(l>p)
            max=i;
        p=l;
        l=0;
    }
    int *g = new int [2];
    g[0]=min;
    g[1]=max;
    return g;
}


И здесь выбивает ошибку на этом участке кода:

Кликните здесь для просмотра всего текста
C++
1
2
3
int *p=pr_str(a, m, n);
    min=p[0];
    max=p[1];


Пожалуйста помогите разобраться...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 02:49     помогите найти ошибку. Поиск строк в массиве.
Посмотрите здесь:

Максимальный элемент ромба элементов в квадратном массиве. Помогите найти ошибку. C++
C++ Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве.
найти ошибку(в одномерном массиве найти количество различных элементов) C++
Помогите найти ошибку C++
C++ Поиск в массиве строк
C++ Помогите найти ошибку: По двум сторонам и углу найти все остальное
C++ Поиск элементов строк и столбцов в двумерном массиве

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igor921
Заблокирован
03.12.2013, 03:49     помогите найти ошибку. Поиск строк в массиве. #2
что пишет в ошибке?
Yandex
Объявления
03.12.2013, 03:49     помогите найти ошибку. Поиск строк в массиве.
Ответ Создать тему
Опции темы

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