Страница 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;
}