Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
27.11.2024
Размер:
537 Кб
Скачать
☆

4. Запустить программу нажатием кнопки Start или F5. Если в про-

граммном коде не обнаружено ошибок, будет получен результат.

Рассмотрим типовые задачи работы с массивами.

Задача 1. З а п о лн е н и е м а с с и в а м е то д о м в во д а ч и с е л с к ла ви а т у -

р ы

Блок-схема заполнения массива методом ввода чисел с клавиатуры при-

ведена на рисунке 1.

1

начало

2

i=0;size;1

3 a[i]

4

конец

Рис. 1. Блок-схема заполнения массива методом

ввода чисел с клавиатуры

Составим программный код:

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

#include <stdio.h> #include <conio.h>

#define size 5 //размер массива void main ()

{

int a[size]; //массив int i; //индекс

printf (“Введите массив целых чисел.\n”); printf ("После ввода каждого числа”); printf (“нажимайте <Enter>\n);

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

{

12

printf (“a[%i]->”,i+1); scanf (“%i”, &a[i]);

}

geth();

}

После запуска программы на выполнение, получим следующий резуль-

тат:

Введите массив целых чисел.

После ввода каждого числа нажимайте <Enter>

a[1]->2

a[2]->4

a[3]->6

a[4]->8

a[5]->5

Задача 2 З а п о лн е н и е м а с с и ва м е то д о м с л уч а й н ы х ч и с е л

Блок-схема заполнения массива методом случайных чисел приведена на

рисунке 2.

Составим программный код:

//Заполнение массива методом генерирования случайных чисел

#include <stdio.h> #include <conio.h>

#include <stdlib.h> //для доступа к strad #include <time.h>

#define size 5 //размер массива void main ()

{

int a[size]; //массив int i; //индекс

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

{

a[i]=rand()%100+1; //генерируются числа от 1 до 100 printf (“\ta[%i]=%a[i]”,i,a[i]);

}

getch();

13

}

1

начало

2

i=0;size;1

3

a[i]=rand()%100+1

4 a[i]

5 конец

Рис. 2. Блок-схема заполнения массива методом случайных чисел

После запуска программы на выполнение, получим следующий резуль-

тат:

 

 

 

 

a[1]=2

a[2]=4

a[3]=6

a[4]=8

a[5]=5

Задача 3 На х о ж д е н и е с ум м ы ( п

р ои зве д е н и я ) э ле м е н то в м а с с и в а

Блок-схема нахождения суммы (произведения) элементов массива пред-

ставлена на рисунке 3.

Составим программный код, здесь следует отметить, что в данной про-

грамме применяется заполнение массива методом случайных чисел:

#include <stdio.h> #include <conio.h>

#include <stdlib.h> //для доступа к strad #include <time.h>

#define size 5 //размер массива void main ()

{

int a[size]; //массив int i; //индекс

int S (P); //сумма (произведение)

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

{

a[i]=rand()%100+1; //генерируются числа от 1 до 100

14

printf (“\ta[%i]=%a[i]”,i,a[i]);

S+=a[i] (P*=a[i]);

}

printf (“\nS=%i”,S) (“\nP=%i”,P); getch();

}

1 начало

2

S=0 (P=1)

3 i=0;size;1

4 a[i]=rand()%100+1

5

a[i]

6 S=S+a[i] (P=P*a[i])

7

S (P)

8 конец

Рис. 3. Блок-схема нахождения суммы (произведения) элементов массива После запуска программы на выполнение, получим следующий резуль-

тат:

 

 

 

 

a[1]=2

a[2]=4

a[3]=6

a[4]=8

a[5]=5

S=25 (P=1920)

 

 

 

 

Задача 4 На х о ж д е н и е

м а к с и м а л ьн о г о ( м и н и м а л ьн о г о ) э ле м е н та

м а с с и ва .

Блок-схема нахождения максимального (минимального) элемента масси-

ва приведена на рисунке 4.

15

Составим программный код:

//Нахождение максимального (минимального) элемента массива

#include <stdio.h> #include <conio.h>

#define size 5 //размер массива void main ()

{

int a[size]; //массив int i; //индекс

int max (min); //максимальный (минимальный) элемент int k; //номер максимального (минимального) элемента printf (“Введите массив целых чисел.\n”);

printf ("После ввода каждого числа”); printf (“нажимайте <Enter>\n);

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

{

printf (“a[%i]->”,i+1); scanf (“%i”, &a[i]);

}

max (min)=a[1]; k=1;

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

{

if a[i]>max (a[i]<min) {max(min)=a[i]

k=i; }

printf (“max(min)=%i”,max(min)); printf (“k=%i”,k);

geth();}

После запуска программы на выполнение, получим следующий резуль-

тат:

a[1]->2 a[2]->4 a[3]->6 a[4]->8 a[5]->5

max=8 (min=2)

16

1

начало

 

2

i=0;size;1

3

a[i]

4

max=a[1] (min=a[1])

5 k=1

6

i=2;size;1

 

 

да

 

7

a[i]>max

 

 

 

 

 

 

 

 

 

 

 

 

 

(a[i]<min

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

max=a[i]

 

 

 

 

(min=a[i])

 

 

нет

 

k=i

 

 

 

 

 

 

 

 

 

 

 

 

9 max (min) k

10

конец

 

Рис. 4. Блок-схема нахождения максимального (минимального)

элемента массива

Задача 5 С о р ти р ов к а э ле м е н то в м а с с и в а м е то д о м п узы р ьк а Блок-схема сортировки элементов массива приведена на рисунке 5.

17

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=0;size;1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a[i]=rand()%100+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

a[i]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=0;size-1;1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

j=i;size;1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

7

 

 

a[i]>a[j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c=a[i]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

a[i]=a[j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a[j]=c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

i=0;size;1

10

a[i]

 

11

конец

Рис. 5. Блок-схема сортировки элементов массива методом пузырька

Составим программный код:

#include <stdio.h> #include <conio.h>

#include <stdlib.h> //для доступа к strad #include <time.h>

#define size 5 //размер массива

18

void main ()

{

int a[size]; //массив int i; //индекс

printf (“\tИсходный массив”); for (i=0; i<size; i++)

{

a[i]=rand()%100+1; //генерируются числа от 1 до 100 printf (“\ta[%i]=%a[i]”,i,a[i]);

}

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

{

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

{

if a[i]>a[j]

{

c=a[i];

a[i]=a[j];

a[j]=c;

}

}

}

printf (“\nОтсортированный по возрастанию массив”); for (i=0; i<size; i++)

{

printf (“\ta[%i]=%a[i]”,i,a[i]);

}

getch();

}

После запуска программы на выполнение получим следующий результат:

Исходный массив

a[1]=2

a[2]=4

a[3]=6

a[4]=8

a[5]=5

Отсортированный по возрастанию массив:

 

a[1]=2

a[2]=4

a[3]=5

a[4]=6

a[5]=8

Задача 6 С о р ти р ов к а

м а с с и ва м е то д о м п р я м о г о вы б о р а э ле м е н -

то в

 

 

 

 

Блок-схема сортировки массива по возрастанию методом прямого выбора

приведена на рисунке 6.

19

Составим программный код:

//Сортировка массива методом прямого выбора

#include <stdio.h> #include <conio.h>

#define SZ 5 //размер массива void main ()

{

int a[SZ]; //массив of integer

int i; //номер элемента, от которого ведется поиск минимального //элемента

int min; //номер минимального элемента в части массива от i до верхней границы массива

int j; //номер элемента, сравниваемого с минимальным int b; //используется при обмене элементов массива int k; //индекс для ввода и вывода

printf (“\nСортировка массива\n”);

printf (“Введите массив (в одной строке %i”,SZ); printf (“целых чисел) и нажмите <Enter>\n”); printf (“->”);

for (k=0; k<SZ; k++) scanf (“%i”, &a[k]);

printf (“Сортировка …\n”); for (i=0; i<SZ-1; i++)

{

min=i;

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

if (a[j]<a[min] min=j; //поменяем местами a[min] и a[i] b=a[i];

a[i]=a[min];

a[min]=b;

//цикл сортировки закончен //отладочная печать

//выведем промежуточное состояние массива for (k=0; k<SZ; k++)

printf (“%i”, a[k]);

20

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

k=0;k<SZ;k++

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

a[k]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=0;i<SZ-1;i++

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

min=i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

j=i+1;j<SZ-1;j++

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

7

 

 

 

a[j]<a[min]

 

 

 

 

 

 

 

 

 

 

 

да

8

min=j

9

b=a[i]

a[i]=a[min]

a[min]=b

10

k=0;k<SZ;k++

11 a[k]

12

конец

Рис.5. Блок-схема сортировки массива по возрастанию методом прямого выбора

printf (“\n”);

}

//выведем отсортированный массив

21

Соседние файлы в папке 2к3с Языки программирования