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

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

Войти
Регистрация
Восстановить пароль
 
kolob
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 3
#1

Рекурсия: возвести минимальный элемент массива в степень, равную количеству его вхождений в массив - C++

10.12.2013, 20:58. Просмотров 255. Ответов 3
Метки нет (Все метки)

Есть функция, в нее передается массив из n элементов. Функция находит минимальный элемент и считает сколько раз он встречается в массиве, затем возводит минимальный элемент в эту степень. Проблема в том, что она не возвращает значение pow (min, ct), а вместо этого возвращает ноль. Что я делаю не так? Не судите строго если что.

C++ (Qt)
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
double minelem (double* mas, int n, int i, double min, int ct, double flag)
{
    if (i == n)
        return pow (min, ct);
    else
    {
        if (min > mas[i])
        {
            min = mas[i];
        }
        if (flag == min && min == mas[i])
            ct = ct + 1;
        if(flag != min)
        {
            flag = min;
            ct = 1;
        }
        i = i + 1;
        return minelem(mas, n, i, min, ct, flag);
    }
}
 
int main()
{
    int N;
    printf ("Vvedite kol-vo elementov: ");
    scanf ("%d", &N);
    double* mas = new double [N];
    printf ("vvedite %d elementov: ", N);
    for (int k = 0; k < N; k++)
    {
        scanf ("%f", &mas[k]);
    }
    double t = minelem(mas, N, 0, mas[0], 0, mas[0]);
    printf ("Rezyltat = %f\n", t);
    delete (mas);                                                                                                                                                                                                                                                                                                                                                                       
    mas = NULL;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 20:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсия: возвести минимальный элемент массива в степень, равную количеству его вхождений в массив (C++):

Элементы массива возвести в степень равную индексу массива - C++
Необходимо реализовать программу, которая будет елементы массива возводить в степень порядка следования елементов. Размерность массива 10....

Если введенное число отрицательное и четное, то возвести его в 3 степень, иначе возвести в квадрат - C++
Ввести целое число В. Если В отрицательное и четное, то возвести его в 3 степень, иначе возвести в квадрат

Дан массив. Уменьшить все его элементы на минимальный элемент массива - C++
Дан массив А(n). Уменьшить все его элементы на минимальный элемент массива. Помогите сделать лабораторную работу.

Сформировать одномерный массив Х из положительных элементов матрицы А, найти минимальный элемент массива Х и его номер - C++
Доброго всем времени суток) никак не могу создать массив из матрицы( кто поумнее меня , помогите плиз) Вот задание: ...

Как возвести дробное число в целую степень? К примеру 2,7 возвести в степень 2 на C++. - C++
Как возвести дробное число в целую степень? К примеру 2,7 возвести в степень 2 на C++.

Выведите на экран массив, его минимальный элемент и его индекс в массиве - C++
Сгенерируйте массив из n=10 случайных целых чисел в диапазоне от 0 до 10. Выведите на экран массив, его минимальный элемент и его индекс в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.12.2013, 22:49 #2
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
#include "math.h"
double minelem (double* mas, int n, int i, double min, int ct, double flag)
{
    if (i == n)
        return pow (min, ct);
    else
    {
        if (min > mas[i])
        {
            min = mas[i];
        }
        if (flag == min && min == mas[i])
            ct = ct + 1;
        if(flag != min)
        {
            flag = min;
            ct = 1;
        }
        i = i + 1;
        return minelem(mas, n, i, min, ct, flag);
    }
}
 
int main()
{
    int N;
    printf ("Vvedite kol-vo elementov: ");
    scanf ("%d", &N);
    double* mas = new double [N];
    printf ("vvedite %d elementov: ", N);
    for (int k = 0; k < N; k++)
    {
        scanf ("%lf", &mas[k]);
    }   
    double t = minelem(mas, N, 0, mas[0], 0, mas[0]);
    printf ("Rezyltat = %lf\n", t);
    delete (mas);                                                                                                                                                                                                                                                                                                                                                                       
    mas = NULL;
}
1
kolob
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 3
11.12.2013, 19:42  [ТС] #3
Спасибо, но все-равно не работает. Вот результат работы программы. И как мне избавиться от нулей после запятой?Рекурсия: возвести минимальный элемент массива в степень, равную количеству его вхождений в массив
0
kolob
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 3
11.12.2013, 19:42  [ТС] #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
#include "stdafx.h"
#include "math.h"
 
double minelem (double* mas, int n, int i, double min, int ct, double flag)
{
    if (i == n)
    {
        printf ("\nmin = %lf ctepen = %d pow (min, ct) =%lf\n",min, ct, pow (min, ct));
        return pow (min, ct);
    }
    else
    {
        if (min > mas[i])
        {
            min = mas[i];
        }
        if (flag == min && min == mas[i])
            ct = ct + 1;
        if(flag != min)
        {
            flag = min;
            ct = 1;
        }
        i = i + 1;
        return minelem (mas, n, i, min, ct, flag);
    }
}
 
int main()
{
    int N;
    printf ("Vvedite kol-vo elementov: ");
    scanf_s ("%d", &N);
    double* mas = new double [N];
    printf ("vvedite %d elementov: ", N);
    for (int k = 0; k < N; k++)
    {
        scanf_s ("%lf", &mas[k]);;
    }
    double t = minelem(mas, N, 0, mas[0], 0, mas[0]);
    printf ("Rezyltat = %lf\n", &t);
    delete (mas);                                                                                                                                                                                                                                                                                                                                                                       
    mas = NULL;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 19:42
Привет! Вот еще темы с ответами:

Вычислить минимальный элемент массива и заменить его - C++
Найти сумму положительных элементов массива из N элементов, расположенных до первого нулевого элемента.(используя ссылочную переменную) ...

Минимальный элемент массива и его порядковый номер - C++
16. Дан массив А(6). Найти минимальный элемент массива и его порядковый номер. (с использованием только библиотеки math.h)

Найти минимальный элемент массива и его индексы - C++
Динамический массив. Задание Найти минимальный элемент массива и его индексы. Минимальный я нашел. Не могу найти индекс ,если находит...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.12.2013, 19:42
Ответ Создать тему
Опции темы

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