Вывод массивов также целесообразно оформлять в виде отдельной функции. Так как функция вывода не изменяет значения элементов массива, то в качестве одного из параметров такой функции выступает сам массив или указатель на массив. Одномерные массивы удобно выводить в строку или в столбец в зависимости от задачи ( Пример 3 и 4 ). Для организации вывода также используют цикл по индексам элементов или арифметические операции с указателем на массив.
Пример 3.
/*Генерация целочисленного массива числами с клавиатуры и вывод массива в строку*/
#include "stdafx.h"
#include <iostream>
using namespace std;
#define max 20
void gen (int k,int *pp);//прототип функции генерации массива
void out (int k,int x[max]);//прототип функции вывода массива
int _tmain(int argc, _TCHAR* argv[]){
int a[max],n,*p;
do {
printf("\nВведите количество элементов массива n (n<=20):");
scanf ("%d",&n);
}
while (n>max); //проверка выхода за границы массива
p=a;
gen(n,p);
out(n,a);
system("pause");
return 0;
}
//Описание функции генерации массива с клавиатуры
void gen(int k,int *pp){
/*передача указателя как параметра позволяет вернуть
сформированный массив в основную программу*/
int i;
printf("\nВведите значения %d элементов массива: \n",k);
for (i=0;i<k;i++){
printf("x[%d]= ",i);
scanf("%d",pp++);
}
}
//Описание функции вывода массива в строку
void out (int k,int x[max]){
int i;
printf("\nВывод значений %d элементов массива в строку: \n",k);
for (i=0;i<k;i++)
printf("%d\t",x[i]);
}
Пример 4.
/*Описание функции генерации массива значениями элементов арифметической прогрессии*/
void gen(int k,int x[max]) {
int i,d;
printf ("\nВведите нулевой элемент прогрессии: ");
scanf("%d",&x[0]);
printf ("\nВведите разность прогрессии: ");
scanf("%d",&d);
for (i=1;i<k;i++)
x[i]=x[i-1]+d;
}
Пример 5.
//Описание функции вывода массива в столбец
void out (int k,int x[max]){
int i;
printf("\nВывод значений %d элементов массива в столбец: \n",k);
for (i=0;i<k;i++)
printf("x[%i]= %d\n",i,x[i]);
}
Для использования функции генерации случайных чисел необходимо подключить библиотеку <time.h>.
Для написания кода генерации массива случайными целыми числами используется:
1. Функция srand(). Синтаксис:
void srand(unsigned seed);
– функция устанавливает свой аргумент как основу ( seed ) для новой последовательности псевдослучайных целых чисел, возвращаемых функцией rand(). Сформированную последовательность можно воспроизвести. Для этого необходимо вызвать srand() с соответствующей величиной seed.
Для использования данной функции необходимо подключить библиотечный файл <stdlib.h>.
2. Функция rand(). Синтаксис:
int rand(void);
– функция возвращает псевдослучайное число в диапазоне от нуля до RAND_MAX. Для использования данной функции необходимо подключить библиотечный файл <stdlib.h>.
3. Константа RAND_MAX определяет максимальное значение случайного числа, которое может быть возвращено функцией rand(). Значение RAND_MAX – это максимальное положительное целое число.
4. Часто в задачах требуется выполнить генерацию массива на произвольном промежутке [a,b). Для этого используются следующие выражения:
5. //генерация случайных целых чисел на [a,b)
6. x[i]=rand()%(b-a)+a;
7. //генерация случайных вещественных чисел на [a,b)
y[i]= rand()*1.0/(RAND_MAX)*(b-a)+a;
Пример 6.
/*Описание функции генерации массива случайными вещественными числами на[a,b)*/
void gen(int k,int a, int b, float x[max]){
int i;
srand(time(NULL)*1000);
//устанавливает начальную точку генерации случайных чисел