Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2021, 18:41   #1
Аннализа
Новичок
Джуниор
 
Регистрация: 09.05.2021
Сообщений: 1
По умолчанию Задали сделать с рекурсивными функциями c++( за раннее спасибо )

в)Определить : кол-во четных эл-тов последней строки и сумму положительных элементов
как пример есть данная программа
Код:
#include<stdio.h>
#include<stdlib.h>

void input1(int** m, int i, int n)
{
    static int j = 0;
    if (n!=0)
    {
        printf("[%i][%i] => ",i,j);
        scanf("%i",&m[i][j]);
        if (j != n - 1)
        {
            j++;
            input1(m, i, n);
        }
        else
        {
            j = 0;
            return;
        }
    }
}

void input2(int** m, int n)
{
    static int i = 0;
    if (n != 0)
    {
        input1(m, i, n);
        if (i != n - 1)
        {
            i++;
            input2(m, n);
        }
        else
        {
            i = 0;
            return;
        }
    }
}

void print1(int** m, int i, int n)
{
    static int j = 0;
    if (n!=0)
    {
        printf("%6i",m[i][j]);
        if (j != n - 1)
        {
            j++;
            print1(m, i, n);
        }
        else
        {
            j = 0;
            return;
        }
    }
}

void print2(int** m, int n)
{
    static int i = 0;
    if (n!=0)
    {
        print1(m, i, n);
        puts("");
        if (i != n-1)
        {
            i++;
            print2(m, n);
        }
        else
        {
            i = 0;
            return;
        }
    }
}
int sumf(int **m, int n)
{
    static int i = 0;
    static int sum = 0;
    if(n<4) printf("The matrix needs to be at least 4*4!");
    if (i < n)
    {
        sum += m[3][i];
        i++;
        sumf(m, n);
    }
    i = 0;
    return sum;
}

/*int sumf(int **m, int n)
{
    double sum = 0;
    if(n >= 4)
    {
        for (int i = 0; i < n; i++)
        {
            sum += matrix[3][i];
        }
    }
    return sum;
}
*/
double sr(int **m, int n)
{
    static int i = 0;
    static double aver = 0;
    if (i < n)
    {
        aver += m[n - 2][i];
        i++;
        sr(m, n);
    }
    i = 0;
    return aver/n;
}

/*double sr(int **m, int n)
{
    double average = 0;
        for (int i = 0; i < n; i++)
        {
            aver += matrix[n-2][i];
        }
        aver = aver / n;
    }
    return average;
}
*/
int main()
     {
        int n; printf("Enter the size: ");scanf("%i",&n);
        int** ar = new int* [n];
    for (int i = 0; i < n; i++)
    {
        ar[i] = new int[n];
    }
       input2(ar,n);
       printf("\n");
       print2(ar,n);
       puts("");
      printf("Suma elementov 4 stroki: %i",sumf(ar,n));
      puts("");
      printf("Srednee arifm: %.2f",sr(ar,n));
      puts("");
      float res=float(sumf(ar,n))*(sr(ar,n)/n);
      printf("Result: %.2f",res);
      return 0;
}

Последний раз редактировалось BDA; 11.05.2021 в 00:43.
Аннализа вне форума Ответить с цитированием
Старый 10.05.2021, 00:49   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Задание не принято, перездача через неделю.
Рекомендуемая литература:
Правила форума
Обратите особое внимание на пункты 3, 4 и Настоятельно рекомендуем

Дальше пойдет как по маслу пулеметом...
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 11.05.2021, 00:55   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

По поводу текущего кода - функции sumf и sr нельзя вызывать повторно, так как не все их статические переменные обнуляются после получения результата функции. По поводу вашего задания - а что именно не получается? Напишите для простоты сначала нерекурсивную функцию, которая ищет нужное, а потом уже переделывайте в рекурсивную.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из университета задали сделать электронный дневник школы у кого есть готовые варианты ? Zana Помощь студентам 3 14.04.2019 19:38
примитивно-рекурсивными описаниями операторов суммирования и перемножения GSPD Фриланс 0 11.05.2018 07:25
Этапы процесса программирования. задали в университете сделать слайд шоу на эту тему. veracires Помощь студентам 10 05.05.2012 01:12