Страница 1 из 1

подскажите как тут рандом занести в функцию?

Добавлено: 30 апр 2017, 13:56
АлександрБеккер

Код: Выделить всё

#include <malloc.h>
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
    
main ()
{
    int n,m, i, j, x, y, min, max;
    setlocale(LC_ALL,"Russian");
    printf("Введите нижний диапазон:");
    scanf("%i",&x);
    printf("Введите верхний диапазон:");
    scanf("%i",&y);
    printf ("Ввод размерности двумерного массива:\n");
    printf("Введите количество строк:");
    printf("n=");
    scanf("%i",&n);
    printf("Введите количество столбцов:");
    printf("m=");
    scanf("%i",&m);
    min=-1*x;
    max=y;
    srand(time(NULL));
    int **a = (int**)malloc(m * sizeof(int*));
    for (i = 0; i < n; i++)  // цикл по строкам
    {
        a[i] = (int*)malloc(n * sizeof(int));
        for (j = 0; j < m; j++)
        {
            a[i][j] = rand() % (max-min + 1)+min;
        }
    }
        
    printf ("Вывод двумерного массива:\n");
    for (i=0;i<n;i++)
    {
    for (j=0;j<m;j++)
    {
    printf (" %d ", a[i][j]);
    }
    printf ("\n");}
    for (i=0;i<n;i++)
    {
    free(a[i][j]);}
    free(a);
        
    _getch();
    return 0;
}

Re: подскажите как тут рандом занести в функцию?

Добавлено: 02 май 2017, 08:58
Сионист
В каком смысле "занести в функцию"?

Re: подскажите как тут рандом занести в функцию?

Добавлено: 02 май 2017, 12:17
Din666
например так:

Код: Выделить всё


#include <malloc.h>
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>

int ** generateArrayOf(
	  int n
	, int m
	, int min
	, int max
) {

    int **array = NULL;

    if ( NULL != (array = (int**)malloc(m * sizeof(int*)) ) ) // обязательно проверить что память была выделена
    {
        int i = 0, j = 0;
        srand(time(NULL));

        for (i = 0; i < n; i++)  // цикл по строкам
        {
            if ( NULL != ( array[i] = (int*)malloc(n * sizeof(int)) ) ) // тоже самое
            {
                for (j = 0; j < m; j++)
                {
                    array[i][j] = rand() % (max - min + 1) + min;
                }
            }
        }
    }

    return array;
}
   
int main () // тип возвращаемого значения (int) должен присутствовать
{
    int n=0, m=0, x=0, y=0, min=0, max=0; // необходимо инициализировать все создаваемые переменные

    setlocale(LC_ALL,"Russian");

    printf("Введите нижний диапазон:");
    scanf("%i",&x);
    min=-1*x; //  для улучшения читаемости кода, показываем сразу где используется вводимое значение

    printf("Введите верхний диапазон:");
    scanf("%i",&y);
    max=y;

    printf ("Ввод размерности двумерного массива:\n");
    printf("Введите количество строк:");
    printf("n=");
    scanf("%i",&n);

    printf("Введите количество столбцов:");
    printf("m=");
    scanf("%i",&m);

    {
        int **a = generateArrayOf(n, m, min, max);
        if ( NULL != a )
        {
            int i=0, j=0; // заводим переменные в начале блока, непосредственно перед использованием
            printf ("Вывод двумерного массива:\n");
            for (i=0;i<n;i++)
            {
                for (j=0;j<m;j++)
                {
                    printf (" %d ", a[i][j]);
                }
                printf ("\n");
            }

            // в изначальном коде ошибки: free( a[i][j])  - во первых не верный тип, 
            // а во вторых чему будет равен j ))))
            // надо так:
            for (i=0;i<n;i++) { if (NULL != a[i]) free(a[i]); }
            free(a);
        }
    }
       
    getchar();
    return 0;
}

Re: подскажите как тут рандом занести в функцию?

Добавлено: 09 май 2017, 12:07
ASNOKE
#include <ctime>
#include <iostream>
#include <cstdlib>

using namespace std;

int main() {
srand(time(NULL));

for(int i = 0; i < 10; i++) {
cout << rand() << endl;
}

return 0;
}