Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Генерация одномерных массивовСодержание книги Поиск на нашем сайте Задачи по программированию с использованием массивов решаются, как правило, по следующему алгоритму: объявление массива, генерация или инициализация, обработка значений элементов, вывод. При этом, если в процессе обработки значения элементов массива изменяются, то вывод осуществляется дважды: до и после обработки. Перед использованием значений элементов массива их необходимо сформировать. Задать значения элементам массива можно на этапе объявления, т.е. выполнить инициализацию, а также непосредственным выполнением присваивания. В большинстве задач с использованием массивов целесообразно выполнять генерацию массивов – автоматическое формирование значений элементов. Генерацию массива (массивов) в программе оформляют в виде отдельной функции. Стандартными способами генерация массивов являются: · ввод данных с клавиатуры, · формирование значений через генератор случайных чисел, · вычисление значений по формуле, · ввод данных из файла. При этом при формировании значений элементов используют цикл по индексам элементов или арифметические операции с указателем на массив. В данной работе рассмотрим первые три способа генерации массивов (Примеры 3, 4, 6). Вывод одномерных массивов Вывод массивов также целесообразно оформлять в виде отдельной функции. Так как функция вывода не изменяет значения элементов массива, то в качестве одного из параметров такой функции выступает сам массив или указатель на массив. Одномерные массивы удобно выводить в строку или в столбец в зависимости от задачи (Пример 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); //устанавливает начальную точку генерации случайных чисел for (i=0;i<k;i++){ x[i]=(rand()*1.0/(RAND_MAX)*(b-a)+a); //функция генерации случайных чисел на [a,b) }}
|
||
|
Последнее изменение этой страницы: 2021-07-18; просмотров: 113; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.005 с.) |