50140

Программирование задач с использованием массивов. Ввод и вывод элементов. Упорядочивание. Нахождение максимального (max) элемента

Лабораторная работа

Информатика, кибернетика и программирование

Элементы массива нумеруются с нуля. Доступ к элементу массива осуществляется путем указания индекса номера элемента. Доступ к элементам массива можно осуществлять при помощи указателя. В инструкции объявления массива удобно использовать именованную константу объявленную в директиве define.

Русский

2014-01-16

51.5 KB

13 чел.

Лабораторная Работа № 11

Тема:  Программирование задач с использованием массивов. Ввод и вывод элементов. Упорядочивание. Нахождение максимального (max) элемента.

Цель: Получение практических навыков  в использовании одномерных массивов.

Теоретические сведения:

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

  •  Массив – это фиксированное количество упорядоченных компонент одного типа, снабжённых индексами.
  •  Чтобы описать массив, надо сообщить компилятору: сколько в нем элементов, какого типа эти элементы, как они нумеруются.
  •  Элементы массива нумеруются с нуля.
  •  Доступ к элементу массива осуществляется путем указания индекса (номера) элемента.
  •  Доступ к элементам массива можно осуществлять при помощи указателя.
  •  В инструкции объявления массива удобно использовать именованную константу, объявленную в директиве #define.
  •  Для ввода, вывода и обработки массивов удобно использовать инструкции циклов (for, while).
  •  Типичной ошибкой при использовании массивов является обращение к несуществующему элементу, то есть выход индекса за допустимое значение.

Пример: Написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел. Для доступа к элементам массива используйте указатель.

Текст программы:

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

#include<stdio.h>

#include<conio.h>

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

void main()

{

int a[HB]; //массив

int min;  //номер минимального элемента

int i; //индекс массива

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

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

scanf(“%i”,&a[i]);

min=0; //предположим, что первый элемент минимальный, сравним оставшиеся с ним

for (i=1;i<HB;i++)

if(a[i]<a[min]) min=i;

printf(“Минимальный элемент массива: a[%i]=%i”,min+1,a[min]);

getch();

}

// поиск минимального элемента массива с использованием механизма указателей

#include<stdio.h>

#include<conio.h>

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

void main()

{

int a[HB]; //массив

int *min; //номер минимального элемента

int *p;  //указатель на элемент массива

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

p=a;

for (i=1;i<=HB;i++)

scanf(“%i”,p++);

min=a;  //пусть первый элемент минимальный

p=a+1;

// теперь p содержит адрес второго элемента

// Сравним оставшиеся элементы с минимальным

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

{

if(*p<*min) min=p;

p++; //к следующему элементу

}

printf(“Минимальный элемент массива: %i\n”,*min);

getch();

}

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

Вариант

Массив

Задание

Условия

1

X(100)

Вычислить сумму и количество элементов массива X, удовлетворяющих условию

0≤Xi≤1

2

A(80)

Вычислить среднее арифметическое значение элемента массива А

Аi>0

3

X(70)

Переписать элементы массива Х, удовлетворяющие условию в массив Y и подсчитать их количество

-1≤Xi≤1

4

B(50)

Определить максимальный элемент массива В и его номер

Xi>0

5

C(40)

Определить минимальный элемент массива С и его номер

Xi<0

6

D(80)

Найти максимальный и минимальный элементы массива D и поменять их местами

-

7

Y(20)

Вычислить среднее геометрическое элемента массива Y

Yi>0

8

Z(30)

Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z 

-

9

N(50)

Определить сумму элементов массива N кратных трем

Ni/3*3=Ni

10

X(N)

Вычислить сумму и количество элементов массива X, удовлетворяющих условию

Xi>0, N≤30

11

A(N)

Найти среднее геометрическое элементов массива A

Ai>0, N≤50

12

X(N)

Переписать в массив Y подряд положительные элементы массива X 

Xi>0, N≤40

13

X(N)

Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива X

N≤40

14

B(K)

Определить максимальный элемент массива B, удовлетворяющий условию, и его номер

Xi<0, K≤40

15

C(K)

Определить минимальный элемент массива С, удовлетворяющий условию, и его номер

-1≤Xi≤1, K≤20

Контрольные вопросы:

  1.  Что понимается под массивом?
  2.  Как описываются массивы в разделе переменных?
  3.  Как организуется ввод массива в программе?
  4.  Как организуется вывод массива в программе?
  5.  Какие операции разрешены над элементами массива?

Содержание отчета:

  1.  Краткие теоретические сведения.
  2.  Схемы алгоритмов.
  3.  Тексты составленных программ.
  4.  Протоколы к составленным программам.
  5.  Вывод о проделанной работе.


 

А также другие работы, которые могут Вас заинтересовать

69299. Особливості архітектури: UNIX і Linux 70 KB
  UNIX є прикладом досить простої архітектури ОС. Більша частина функціональності цієї системи міститься в ядрі, ядро спілкується із прикладними програмами за допомогою системних викликів. Базова структура класичного ядра UNIX зображена на...
69300. Базові поняття процесів і потоків 39.5 KB
  Однозначна відповідність між програмою і процесом встановлюється тільки в конкретний момент часу: один процес у різний час може виконувати код декількох програм код однієї програми можуть виконувати декілька процесів одночасно.
69301. Багатопотоковість та її реалізація 50 KB
  Багатопотокове застосування може реалізувати цей вид паралелізму через створення нових потоків які виконуватимуться коли поточний потік очікує операції введеннявиведення. При цьому використання потоків дає можливість організувати паралельне обслуговування запитів...
69302. Стани процесів та потоків 35.5 KB
  Перехід потоків між станами очікування і готовності реалізовано на основі планування задач або планування потоків. Під час планування потоків визначають який з потоків треба відновити після завершення операції введення-виведення як організувати очікування подій у системі.
69303. Створення і завершення процесів і потоків 50.5 KB
  Створення процесів Базові принципи створення процесів Процеси можуть створюватися ядром системи під час її ініціалізації. Таке створення процесів однак є винятком а не правилом. Найчастіше процеси створюються під час виконання інших процесів.
69304. Керування процесами у Windows XP 98.5 KB
  Поняття процесу й потоку у Windows XP чітко розмежовані. Процеси в даній системі визначають «поле діяльності» для потоків, які виконуються в їхньому адресному просторі. Серед ресурсів, з якими процес може працювати прямо, відсутній процесор - він доступний тільки потокам цього процесу.
69305. Загальні принципи планування процесів та потоків 47.5 KB
  Можливість паралельного виконання потоків залежить від кількості доступних процесорів. Якщо процесор один, паралельне виконання неможливе принципово (у кожен момент часу може виконуватися тільки один потік).
69306. Види міжпроцесової взаємодії 33 KB
  Для потоків різних процесів питання забезпечення синхронізації теж є актуальними, але вони в більшості випадків не ґрунтуються на понятті спільно використовуваних даних (такі дані за замовчуванням для процесів відсутні).
69307. Базові механізми міжпроцесової взаємодії 67 KB
  Технології передавання повідомлень У цьому розділі розглянемо особливості організації взаємодії між потоками різних процесів. Основи передавання повідомлень Усі методи взаємодії які було розглянуто дотепер ґрунтуються на читанні й записуванні...