Возврат из функции переменой и массива для дальнейшего использования в main. Язык Си

Файл Header.h:

#pragma once
#include <stdlib.h>  
#include <stdio.h>

float masRR(); //Заполнение массива mas (как автоматически, так вручную), n - кол-во эл в массиве



float masRR () {
   float mas[100];
   int n;

   printf("Vvedite kol-vo elemtntov ");
   if (scanf_s("%d", &n) != 1) {
       printf("Error"); return 0;
   }


   int fl;
   printf("Ecli vi hotite vveti massiv vrythnyu - vvedite 0, esli hotite avto vvod - 1\n ");
   scanf_s("%d", &fl);
   if (fl == 0) {
       for (int i = 0; i < n; i++) {
           printf("%d element = ", i + 1);
           scanf_s("%f", &mas[i]);
       }
   }
   else {
       for (int i = 0, flZnak = 0; i < n; i++) {
           float znah_i = 0;
           znah_i = rand() % 200;
           flZnak = rand() % 2;
           if (flZnak == 0)
               mas[i] = znah_i;
           else
               mas[i] = 0 - znah_i;
       }
   }
   int nn = &n;
   return nn;   //Хочу использовать в main n, mas
}

Файл Лаба 3.1

#include "Header.h"


int main() {
    
    float masRR (); 
    int n = *nn;   //Без понятия как... Нужно чтобы из функции жил как и массив, так и n (кол-во эл массива)
//Дальше идет само задание, если тело функции float masRR () описывать вместо строчек выше - работает корректно 

    for (int i = 0; i < n; i++) {
        printf("%d elemetn = %2.f\n", i+1, mas[i]);
    }

    int min = mas[0];
    for (int i = 0; i < n; i++) {
        if (min > mas[i])
            min = mas[i];
    }
    printf("\nMin element = %d\n", min);

    int firstElPol;
    for (int i = 0; i < n; i++) {
        if (mas[i] > 0) { firstElPol = i; break; }
    }

    int lastElPol;
    for (int i = n; i > 0; i--) {
        if (mas[i] > 0) { lastElPol = i; break; }
    }

    int sum = 0;
    if (n > 2) {
        for (int i = firstElPol + 1; i <= lastElPol - 1; i++) {
            sum += mas[i];
        }
        printf("Sum megdy ferst and last pologitelnimi elementsmi = %d\n", sum);
    }

return 0;
}

Ответы (1 шт):

Автор решения: AlexGlebe

Создаёте для удобства структуру в main и передаёте указателем в функцию.

struct Mass {
  float mas [ 100 ] ;
  int n ;
} ;

void masRR ( struct Mass * const m ) {
  // m -> mas [ i ] - элемент массива
  // m -> n - количество
}

int main ( ) {
  struct Mass m ;
  masRR ( & m ) ;
  // m . mas [ i ] - элемент массива
  // m . n - количество
}
→ Ссылка