Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral


Одномерные массивы Пример решения простой задачи

Задача:

Заполнить массив a[N] случайным образом вещественными числами, заданными на отрезке [A, B].

Решение:

#include <stdio. h>

#include <time. h>

#include <stdlib. h>

// определение константы числа элементов массива

#define N 10

// определение левой границы изменения значений элементов

#define A -1.0f

// определение правой границы изменения значений элементов

#define B  1.0f

// определение функции заполнения массива вещественными

// значениями в интервале (lb, rb)

void fill(float a[], int size, float lb, float rb);

// определение функции печати элементов массива

void print(float a[], int size);

int main()

{

  // создание массива вещественных чисел из N элементов

  float a[N];

  // вызов функции заполнения массива

  fill(a, N, A, B);

  // вызов функции печати элементов массива

  print(a, N);

  // выход из основной функции

  return 0;

}

// реализация функции заполнения массива вещественными

// значениями в интервале (lb, rb)

void fill(float a[], int size, float lb, float rb)

{

  // определение переменной счетчика цикла

  int i;

  // инициализация генератора случайных чисел

  srand((unsigned int) time(0));

  // цикл по всем элементам массива

  // индексация от 0 дл size-1, с шагом 1

  for (i = 0; i < size; i++)

  {

  // rand() генерирует целое число в отрезке [0, RAND_MAX]

  // ((float)rand()) / RAND_MAX переводит в отрезок [0, 1]

НЕ нашли? Не то? Что вы ищете?

  // линейное преобразование в [lb, rb]

  a[i] = (rb - lb) * ((float)rand()) / RAND_MAX + lb;

  }

}

// реализация функции печати элементов массива

void print(float a[], int size)

{

  // определение переменной счетчика цикла

  int i = 0;

  // цикл по всем элементам массива

  // индексация от 0 до size-1, с шагом 1

  for (; i < size; i++)

  {

  // печать i-ого элемента массива, 3 знака после запятой

  printf("%.3f\n", a[i]);

  }

}

Комментарий

В приведенном примере:

Подключаются библиотеки стандартного ввода/вывода stdio. h, функций работы с датой и временем time. h, функций выделения памяти, контроля процесса выполнения программы, преобразования типов stdlib. h. Объявляются необходимые константы для задания количества элементов массива и интервала изменения значений элементов. Объявляются функции заполнения массива fill и печати его элементов print. Описывается функция main, в которой:
    Создается массив. Выполняется заполнения массива с помощью объявленной функции fill. Выполняется печать массива с использованием объявленной функции print.
Реализуются функции заполнения массива fill и печати его элементов print.
Пример решения задачи средней сложности

Задача:

Пусть задан массив целых чисел x, элементы которого удовлетворяют условию  x[0]≤x[1]≤⋯x[n-1], n – число элементов массива x. Определить количество различных элементов в массиве.

Решение:

#include <stdio. h>

#include <time. h>

#include <stdlib. h>

// определение константы числа элементов массива

#define N 10

// определение левой границы изменения значений элементов

#define A -10

// определение правой границы изменения значений элементов

#define B  10

// определение функции заполнения массива целыми

// значениями в интервале (lb, rb)

void fill(int a[], int size, int lb, int rb);

// определение функции упорядочивания элементов по возрастанию

void sort(int a[], int size);

// определение функции печати элементов массива

void print(int a[], int size);

// определение функции числа различных элементов в упорядоченном массиве

int diff(int a[], int size);

int main()

{

  int a[N], kDiffNumbers;

  // вызов функции заполнения массива

  fill(a, N, A, B);

  // вызов функции сортировки элементов массива

  sort(a, N);

  // вызов функции печати элементов массива

  print(a, N);

  // вызов функции определения числа различных элементов

  kDiffNumbers = diff(a, N);

  // вывод числа различных элементов массива

  printf("kDiffNumbers = %d\n", kDiffNumbers);

  // выход из основной функции

  return 0;

}

// реализация функции заполнения массива целыми

// значениями в интервале (lb, rb)

void fill(int a[], int size, int lb, int rb)

{

  // определение переменной счетчика цикла

  int i;

  // инициализация генератора случайных чисел

  srand((unsigned int) time(0));

  // цикл по всем элементам массива

  // индексация от 0 дл size-1, с шагом 1

  for (i = 0; i < size; i++)

  {

  // rand() генерирует целое число в отрезке [0, RAND_MAX]

  // ((float)rand()) / RAND_MAX переводит в отрезок [0, 1]

  // линейное преобразование в [lb, rb]

  a[i] = (rb - lb) * ((float)rand()) / RAND_MAX + lb;

  }

}

// реализация функции упорядочивания элементов по возрастанию

void sort(int a[], int size)

{

  int i, j, buf;

  // цикл по всем элементам массива

  // индексация от 0 дл size-1, с шагом 1

  for (i = 0; i < size; i++)

  {

  // цикл по всем элементам массива, следующим за i-ым

  // индексация от i+1 дл size-1, с шагом 1

  for (j = i + 1; j < size; j++)

  {

  // если i-ый элемент больше, чем j-ый

  if (a[i] > a[j])

  {

  // то выполняется обмен i-ого и j-ого элемента

  buf = a[i];

  a[i] = a[j];

  a[j] = buf;

  }

  }

  }

}

// реализация функции печати элементов массива

void print(int a[], int size)

{

  // определение переменной счетчика цикла

  int i = 0;

  // цикл по всем элементам массива

  // индексация от 0 до size-1, с шагом 1

  for (; i < size; i++)

  {

  // печать i-ого элемента массива

  printf("%d\n", a[i]);

  }

}

// реализация функции числа различных элементов в упорядоченном массиве

int diff(int a[], int size)

{

  int i = 0, kDiffNumbers = 1;

  // цикл по всем элементам массива

  // индексация от 0 до size-2, с шагом 1

  for (; i < size - 1; i++)

  {

  // сравнение текущего i-ого элемента и следующего (i+1)

  // если они не совпали

  if (a[i] != a[i + 1])

  {

  // то увеличивается количество различных элементов

  kDiffNumbers++;

  }

  }

  // возврат числа различных элементов

  return kDiffNumbers;

}

Комментарий

В приведенном примере:

Подключаются библиотеки стандартного ввода/вывода stdio. h, функций работы с датой и временем time. h, функций выделения памяти, контроля процесса выполнения программы, преобразования типов stdlib. h. Объявляются необходимые константы для задания количества элементов массива и интервала изменения значений элементов. Объявляются функции заполнения массива fill, печати его элементов print, а также функции упорядочивания массива sort и вычисления количества различных элементов diff. Описывается функция main, в которой:
    Создается массив. Выполняется заполнения массива с помощью объявленной функции fill. Массив упорядочивается функцией sort. Выполняется печать массива с использованием объявленной функции print. Определяется количество различных элементов с помощью функции diff. Осуществляется печать полученного количества различных элементов.
Реализуются функции заполнения массива fill, печати его элементов print, а также функции упорядочивания массива sort и вычисления количества различных элементов diff.
Пример решения задачи повышенной сложности

Задача:

Задан массив Y[n], элементами которого являются целые числа. Преобразовать массив так, чтобы все его нечетные элементы оказались в конце. Порядок элементов в четной и нечетной частях может измениться.

Решение:

#include <stdio. h>

#include <time. h>

#include <stdlib. h>

// определение константы числа элементов массива

#define N 10

// определение левой границы изменения значений элементов

#define A -10

// определение правой границы изменения значений элементов

#define B  10

// определение функции заполнения массива целыми

// значения в интервале (lb, rb)

void fill(int *a, int size, int lb, int rb);

// определение функции печати элементов массива

void print(int *a, int size);

// определение функции преобразования массива таким образом,

// чтобы все его нечетные элементы оказались в конце

void convert(int a[], int size);

int main()

{

  // создание массива целых чисел из N элементов

  int a[N];

  // вызов функции заполнения массива

  fill(a, N, A, B);

  // вызов функции печати элементов массива

  print(a, N);

  // перенос курсора на следующую строку

  printf("\n");

  // вызов функции преобразования массива

  convert(a, N);

  // вызов функции печати элементов массива

  print(a, N);

  // выход из основной функции

  return 0;

}

// реализация функции заполнения массива целыми

// значения в интервале (lb, rb)

void fill(int a[], int size, int lb, int rb)

{

  // определение переменной счетчика цикла

  int i;

  // инициализация генератора случайных чисел

  srand((unsigned int) time(0));

  // цикл по всем элементам массива

  // индексация от 0 дл size-1, с шагом 1

  for (i = 0; i < size; i++)

  {

  // rand() генерирует целое число в отрезке [0, RAND_MAX]

  // ((float)rand()) / RAND_MAX переводит в отрезок [0, 1]

  // линейное преобразование в [lb, rb]

  a[i] = (rb - lb) * ((float)rand()) / RAND_MAX + lb;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5