Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 14.01.2019
Сообщений: 2
1

Поиск максимума в массиве через отдельную функцию

14.01.2019, 13:13. Показов 5639. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Нужно сделать поиск максимального элемента в массиве отдельной функцией. Вроде сделал, но всегда вместо максимума выдаёт 0. Подскажите, что не так?(поиск максимума с 34 по 44 строки)
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{
    float A[4], B[4][4], B1[4], B2[4], A1[4];
    float MaxB;
    int i, j, k;
    printf("Enter A[4]:\n");
    for(i=0; i<4; i++)
        scanf("%f", &A[i]);
    printf("\nArray A:\n");
    for(i=0; i<4; i++)
        printf("%5.2f", A[i]);
    printf("\n\nArray B:\n");
    for(i=0; i<4; i++)
    {
        for(j=0; j<4; j++)
        {
                if(i == j)
                {
                    B[i][j] = A[i] - j;
                }
                else
                {
                    B[i][j] = i - A[j];
                }
                printf("%5.2f", B[i][j]);
        }
        printf("\n");
    }
    printf("\nMax B:\n");
    MaxB = B[0][0];
    for(i=0; i<4; i++)
    {
        for(j=0; j<4; j++)
        {
            if(B[i][j] > MaxB)
            {
                MaxB = B[i][j];
            }
        }
    }
    printf("%5.2f", MaxB);
    if(MaxB > 5.2)
    {
        printf("\n\nB1 (Second line of Array B):\n");
        for(j=0; j<4; j++)
        {
            B1[j] = B[1][j];
            printf("%5.2f", B1[j]);
        }
        for(i=3; i<4; i++)
        {
            int temp = B1[i - 3];
            B1[i - 3] = B1[i];
            B1[i] = temp;
        }
        printf("\n\nB2:\n");
        for(i=0; i<4; i++)
        {
            B2[i] = B1[i];
            printf("%5.2f", B2[i]);
        }
    }
    else
    {
        printf("\n\nA1:\n");
        for(i=3; i<4; i++)
        {
            int temp = A[i - 3];
            A[i - 3] = A[i];
            A[i] = temp;
        }
        for(i=0; i<4; i++)
        {
            A1[i] = A[i];
            printf("%5.2f", A1[i]);
        }
    }
    return(0);
    getch();
}
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
91
92
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
float Max();
int main()
{
    float A[4], B[4][4], B1[4], B2[4], A1[4];
    float MaxB;
    int i, j, k;
    printf("Enter A[4]:\n");
    for(i=0; i<4; i++)
        scanf("%f", &A[i]);
    printf("\nArray A:\n");
    for(i=0; i<4; i++)
        printf("%5.2f", A[i]);
    printf("\n\nArray B:\n");
    for(i=0; i<4; i++)
    {
        for(j=0; j<4; j++)
        {
                if(i == j)
                {
                    B[i][j] = A[i] - j;
                }
                else
                {
                    B[i][j] = i - A[j];
                }
                printf("%5.2f", B[i][j]);
        }
        printf("\n");
    }
    Max();
    if(MaxB > 5.2)
    {
        printf("\n\nB1 (Second line of Array B):\n");
        for(j=0; j<4; j++)
        {
            B1[j] = B[1][j];
            printf("%5.2f", B1[j]);
        }
        for(i=3; i<4; i++)
        {
            int temp = B1[i - 3];
            B1[i - 3] = B1[i];
            B1[i] = temp;
        }
        printf("\n\nB2:\n");
        for(i=0; i<4; i++)
        {
            B2[i] = B1[i];
            printf("%5.2f", B2[i]);
        }
    }
    else
    {
        printf("\n\nA1:\n");
        for(i=3; i<4; i++)
        {
            int temp = A[i - 3];
            A[i - 3] = A[i];
            A[i] = temp;
        }
        for(i=0; i<4; i++)
        {
            A1[i] = A[i];
            printf("%5.2f", A1[i]);
        }
    }
    return(0);
    getch();
}
float Max()
{
    float MaxB, B[4][4];
    int i, j;
    printf("\nMax B:\n");
    MaxB = B[0][0];
    for(i=0; i<4; i++)
    {
        for(j=0; j<4; j++)
        {
            if(B[i][j] > MaxB)
            {
                MaxB = B[i][j];
            }
        }
    }
    printf("%5.2f", MaxB);
    return(MaxB);
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2019, 13:13
Ответы с готовыми решениями:

Поиск максимума в массиве
Всем доброго времени суток! Прошу помощи у форумчан, возникла проблема, не могу понять, как...

Поиск максимума в массиве
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class...

Поиск максимума и минимума в массиве
Помогите пожалуйста написать программу через класс Array using System; using...

Поиск максимума в двумерном массиве
Рандомом задается двумерный целочисленный массив. Требуется: Найти максимальный элемент из тех,...

3
2305 / 1131 / 702
Регистрация: 25.04.2016
Сообщений: 3,220
14.01.2019, 16:05 2
Лучший ответ Сообщение было отмечено Casija как решение

Решение

Casija, вот в этой теме рассказано как написать функцию для поиска минимального элемента, прочитайте и поменяйте 1 символ в программе... Успехов.
1
0 / 0 / 0
Регистрация: 14.01.2019
Сообщений: 2
14.01.2019, 16:34  [ТС] 3
Премного благодарен
0
2305 / 1131 / 702
Регистрация: 25.04.2016
Сообщений: 3,220
17.01.2019, 20:10 4
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DOERROR fprintf(stderr, "Error allocate memory!\n"); exit(EXIT_FAILURE)
double maximum (double **, int, int);       // максимум в двумерном массиве
int max_in (double *, int);                 // максимум в одномерном массиве
 
int main (void)
{
    /* ********* узнаем размеры двумерного массива ********* */
    int i, k, n, m;
    printf("input the array[][] sizes:\n");
    printf("rows = ");      scanf("%d", &n);
    printf("columns = ");   scanf("%d", &m);
    if (n < 1 || m < 1)
    {
        fprintf(stderr, "Error! Wrong size of array!\n");
        exit(EXIT_FAILURE);
    }
 
    /* ****** запрашиваем память под двумерный массив ****** */
    double ** array = NULL;
    if ((array = (double **) malloc(n * sizeof(double*))) == NULL) { DOERROR; }
    if ((array[0] = (double*) malloc(n*m*sizeof(double))) == NULL) { free(array); DOERROR; }
    for (i=1; i<n; i++)
        array[i] = array[i-1] + m;
 
    /* *** заполняем двумерный массив случайными числами *** */
    srand((unsigned int)time(NULL)/2);
    for (i=0; i<n; i++)
        for (k=0; k<m; k++)
            array[i][k] = (double)(rand())/RAND_MAX*(n*m);
 
    /* ******** выводим получившийся массив на экран ******* */
    if (m < 11 )
        for (i=0,printf("\n"); i<n; i++)
        {
            for (k=0; k<m; k++)
                printf("%8.2lf", array[i][k]);
            printf("\n");
        }
 
    /* ****************** находим максимум ***************** */
    printf("\nmaximum: %.2lf\n", maximum(array, n-1, m));
 
    /* ************ освобождаем память и выходим *********** */
    free(array[0]);
    free(array);
    exit(EXIT_SUCCESS);
}
// ----------------------------------------------------------------
// ----------------- максимум в двумерном массиве -----------------
double maximum (double ** arr, int n, int m)
{
    double current = arr[ n ][ max_in(arr[n], m) ];
    if (n == 0) return current;
    double next = maximum(arr, n-1, m);
    return (current > next)? current : next;
}
// ----------------------------------------------------------------
// ---------------- максимум в одномерном массиве -----------------
int max_in (double * a, int size)
{
    int i, max = 0;
    for (i=1; i<size; i++)
        if (a[i] > a[max]) max = i;
    return max;
}
// ----------------------------------------------------------------
0
17.01.2019, 20:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2019, 20:10
Помогаю со студенческими работами здесь

Поиск минимума/максимума в массиве
Доброго времени суток. Проблема просто смешная, но я не могу понять, почему программа не работает....

Поиск максимума в двумерном массиве
Написать подпрограмму (на языке СИ), для поиска максимума в двумерном массиве. В головной программе...

Как вынести из программы линейный поиск в отдельную функцию?
Добрый день всем, я для саморазвития решил изучить основы Си, сам я очень далек от...

Поиск минимума и максимума в двумерном массиве
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() { int n; cin &gt;&gt;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru