Задачи поиска в массивах
Решение таких задач сводится к установлению того, как обрабатывается каждый элемент или указанные элементы. Затем подбирается подходящая схема перебора, в которую вставляются операторы обработки элементов массива.
Пример 1. Найдем минимальный элемент в одномерном целочисленном массиве, заданном случайными числами на промежутке [-100; 100).
Один из алгоритмов поиска минимального элемента в массиве таков. Будем формировать значение минимального элемента в переменной min. Предположим, что минимальный элемент массива равен нулевому (min=x[0]). Затем выполним просмотр массива с первого элемента до последнего (for (i=1;i<k;i++)). Каждый элемент массива сравниваем со значением переменной min. Если значение очередного i-го элемента массива меньше min, то выполняем присваивание min=x[i].
//Поиск наименьшего элемента в массиве
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//подключение модуля для генератора случайных чисел
#define max 100
void gen (int k,int a, int b,int x[max]);
//прототип функции генерации массива
void out (int k,int x[max]);
//прототип функции вывода массива
int minimum (int k,int x[max]);
//прототип функции поиска минимального элемента
void main (){
int mas[max],n;
do {
printf("\nВведите количество элементов массива n
(n<=100): ");
scanf ("%d",&n);
}
while (n>max);
gen(n,-100,100,mas);
out(n,mas);
printf ("\nНаименьший элемент в массиве равен %d",
minimum(n,mas));
}
//Описание функции генерации массива
void gen(int k,int a, int b, int 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)
}
}
//Описание функции вывода массива в строку
void out (int k,int x[max]){
int i;
printf("\nВывод значений %d элементов массива в строку:
\n",k);
for (i=0;i<k;i++)
printf("%-6d",x[i]);
}
//Описание функции поиска минимального элемента
int minimum (int k,int x[max]) {
int i,min=x[0];
for (i=1;i<k;i++)
if (min>x[i]) min=x[i];
return min;
}
Пример 2. Найдем среднее арифметическое элементов одномерного вещественного массива, заданного с клавиатуры.
//Поиск среднего арифметического элементов массива
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//подключение модуля для генератора случайных чисел
#define max 100
void gen (int k, float x[max]);
//прототип функции генерации массива
float sred_arifm (int k, float x[max]);
/*прототип функции поиска среднего арифметического элементов массива*/
void main (){
float mas[max];
int n;
do {
printf("\nВведите количество элементов массива n
(n<=100): ");
scanf ("%d",&n);
}
while (n>max);
gen(n,mas);
printf ("\nСреднее арифметическое массива равно %f",
sred_arifm(n,mas));
}
//Описание функции генерации массива с клавиатуры
void gen(int k, float x[max]){
int i;
printf("\nВведите значения %d элементов массива: \n",k);
for (i=0;i<k;i++){
printf("x[%d]= ",i);
scanf("%f",&x[i]);
}
}
//Описание функции поиска среднего арифметического элементов массива
float sred_arifm (int k, float x[max]) {
int i;
float sum=0.0;
for (i=0;i<k;i++)
sum+=x[i]; //вычисление суммы элементов массива
return sum/k;
}
Дата добавления: 2015-02-16; просмотров: 628;