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

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

Войти
Регистрация
Восстановить пароль
 
senderlender
5 / 5 / 1
Регистрация: 03.12.2013
Сообщений: 50
#1

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

03.12.2013, 02:49. Просмотров 219. Ответов 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];


Пожалуйста помогите разобраться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 02:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос помогите найти ошибку. Поиск строк в массиве. (C++):

Максимальный элемент ромба элементов в квадратном массиве. Помогите найти ошибку. - C++
Задание: Создать функцию, определяющую максимальный элемент k-го слоя среднего наибольшего ромба элементов в квадратном массиве matrix ...

Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве. - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt; #include...

Поиск в массиве строк - C++
Добрый день Возник глупый вопрос. Пытаюсь сделать поис в строковом массиве не как не получается подскажите что не такк. Сам массив...

Поиск элементов строк и столбцов в двумерном массиве - C++
Добрый вечер, дорогие форумчане! Имеется такая проблема. Мне необходима функция поиска элементов в двумерном массиве по строкам и...

Помогите найти ошибку: По двум сторонам и углу найти все остальное - C++
Доброго времени суток. В универе дали задание написать программу &quot;По двум сторонам и углу между ними в треугольнике АВС найти два остальных...

Помогите найти ошибку - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main () {int i,j,s; int ** b=new int*(4) for (i=0;i&lt;4;i++) b=new int for...

1
igor921
Заблокирован
03.12.2013, 03:49 #2
что пишет в ошибке?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 03:49
Привет! Вот еще темы с ответами:

помогите найти ошибку - C++
#pragma argsused #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; const float con={{1,1,2},{3,4,5},{6,7,8}}; class...

помогите найти ошибку - C++
#include &quot;../../header.h&quot; int main() { vector &lt;int&gt; nums(0); int num = 0; while (cin&gt;&gt;num, nums.size()&lt;2) ...

Помогите найти ошибку - C++
Задание: Написать программу, которая считывает текст из файла и выводит в другой файл и на экран предложения, содержащие максимальное...

помогите найти ошибку - C++
доброе время суток Столкнулся с такой проблемой, надо сделать прогу которая: Вводим текст, и из этого текста удаляем слова которые...


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

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

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