Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
работа с массивами.doc
Скачиваний:
9
Добавлен:
05.11.2018
Размер:
358.91 Кб
Скачать
    1. Поиск в массиве элемента с заданным значением

Рассматриваемый алгоритм находит только первое вхождение элемента с заданным значением. Результат поиска может быть как удовлетворительным, так и не удовлетворительным, например, при отсутствии в массиве элемента с искомым значением. Цикл поиска искомого элемента кодируется структурой УНИВЕРСАЛЬНОГО ЦИКЛА ДО. Наглядный тест:

Рассмотрим текст готовой программы.

#include "stdafx.h"

#include <conio.h>

#include <locale.h>

#define k_Max 100 // Предельный размер массива

int _tmain(int argc, _TCHAR* argv[])

{

//Программа поиска заданного значения в одномерном массиве

typedef int Type_Elements_a; //Тип элементов массива a

typedef Type_Elements_a Type_a[k_Max]; //Тип массива a

Type_a a; //Сам массив a, котором идет поиск

int k; //Текущий предельный размер массива

int s; //Искомое значение в массиве

int is; //Индекс найденного элемента массива

bool Done; //= True, если поиск успешен

int i; //Переменная цикла поиска

setlocale( LC_ALL, "russian" ); //установка русского режима

printf("Программа поиска заданного значения в ");

printf("одномерном массиве\n");

printf("\nВведите количество элементов вводимого массива\n");

scanf("%d",&k); //k теперь определено

printf("\n");

// Задание i - номера вводимого элемента массива

for (int i = 0; i < k; i++)

{

printf("Введите значение элемента номер %d) ",i);

scanf("%d",&a[i]);

}

printf("\nВведите значение искомого элемента\n");

scanf("%d",&s);

// Поиск значения s в массиве a */

Done = false; //Искомый элемент пока не найден

i = 1; //Инициализация переменной цикла

//Цикл поиска вхождения значения в массив

do {

if (a[i] == s)

{

is = i; //Запоминание индекса найденного элемента

Done = true; //Выработка признака - элемент найден

}

i++; //Индекс следующего элемента i = i + 1;

} while (!(((i > k) || (Done))));

//Вывод на экран результатов поиска

if (Done)

{

printf("\nВ массиве найдено искомое значение, равное: ");

printf("%d", s);

printf("\nискомое значение имеет номер %d", is);

}

else

printf("В массиве нет искомого значения, равного: %d", s);

//Завершение выполнения программы

printf("\nНажмите любую клавишу\n");

_getch();

return 0;

}

    1. Алгоритм инициализации элементов одномерного массива значениями ряда целых нечетных чисел

Далее показан алгоритм инициализации элементов одномерного массива значениями ряда целых нечетных чисел a[0] = 1, a[1] = 3, a[2] = 5, . . . . Ряд нечетных чисел представляет собой арифметическую прогрессию с начальным значение 0 и шагом 2

int k = 20; //Текущее количество элементов массива a

//Инициализация всех элементов массива a значениеми

//ряда целых нечетных чисел a[0] = 1, a[1] = 3, a[2] = 5,. . }

int ix = 1.0; //{Начальное значение арифметической прогрессии}

//Задание i – номера инициализируемого элемента массива

for (int i = 0; i<k; i++)

{

//Инициализация очередного i-го элемента

a[i] = ix;

//Расчет значения следущего члена арифметической прогрессии

ix = ix + 2; //Расчет следующего члена

}

Обратим внимание на то, что для инициализации элементов одномерного массива значениями ряда целых четных чисел a[0]=2, a[1]=4,a[2]=6,…требуется лишь исправить отдельные комментарии и заменить 1 на 2 в операторе определения начального значения арифметической прогрессии.