Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Обработка массивов информации




Цель работы: изучение основных приемов и алгоритмов, используемых при обработке массивов информации, а также особенностей их программной реализации на языке С++.

 

Задание к лабораторной работе

1 Ознакомиться с особенностями описания и использования массивов на языке С;

2 Выполнить последовательно все пункты, указанные в разделе «Ход работы»;

3 Написать программу в соответствии с выданным вариантом задания (см. раздел «Варианты заданий»);

4 Оформить отчет.

Ход работы

1. Объявить массив из нескольких целых чисел, проинициализировать массив и вывести его на экран.

2. Изменить программу таким образом, чтобы ввод и вывод был сделан с использованием цикла «for». Например:

for (i=0;i<10;i++) {

printf(“\nВведите m[%d]:”,i);

scanf(“%d”,m[i]);

}

3. Объявить матрицу (двумерный массив). Заполнить ее целыми числами с помощью функции рандомизации и вывести построчно на экран.

 

Варианты заданий

1. Для двух введенных с клавиатуры слов определить являются ли они рифмой. Слова считаются рифмующимися, если их концовки, включающие последнюю гласную и хотя бы одну согласную, совпадают.

Например крюч ок - червяч ок,

зем ля - по ля и т. д.

2. Имеется два массива, содержащие упорядоченные последовательности целых чисел. Необходимо слить исходные массивы в один. Результирующая последовательность должна быть упорядочена по тому же закону, что и исходные.

3. Имеется два массива, содержащие последовательности целых чисел. В первом из указанных массивов числа упорядочены. Необходимо включить в него числа из второго массива, не нарушив упорядоченности.

а) для включения очередного числа просматривать всю последовательность с начала;

б) для включения очередного числа осуществлять деление последовательности пополам, определяя в какую из двух половин должно быть включено число. Далее выбранная половина снова делится пополам и т.д. до тех пор, пока ни будет найдено место для включаемого числа.

Например в последовательность {18, 20, 37, 46, 54} необходимо включить число 40. Центральным элементом последовательности является число 37.

Т.к. 40>37, далее рассматриваем вторую половину исходной последовательности {37, 46, 54}. 40<46 - рассматриваем первую часть последовательности {37}.

40<37 и поскольку дальнейшее деление невозможно, включаемое число должно быть записано в последовательность после элемента 37.

Результат - {18, 20, 37, 40, 46, 54}.

4. Для введенного с клавиатуры наименования сформировать аббревиатуру. Например

исх. текст - Автоматизированные Системы Управления,

результат - АСУ.

5. Имеется массив, содержащий следующую информацию о сотрудниках некоторой организации:

фамилия, образование, шифр подразделения.

Кроме того, имеется массив, содержащий информацию о подразделениях данной организации:

шифр подразделения, наименование.

Необходимо объединить эту информацию и вывести на экран в виде таблицы:

 

Фамилия Образование Наименование подразделения
... ... ...

 

6. Имеется массив, содержащий информацию о сотрудниках некоторого предприятия:

фамилия, возраст, стаж, пол.

Необходимо определить, сколько процентов от общего числа сотрудников занимают

молодые специалисты (возраст < 35 лет, стаж < 4 лет),

работающие пенсионеры (возраст: женщины > 55 лет, мужчины > 60 лет),

прочие сотрудники.

7. Имеется матрица. Переставить строки матрицы в порядке возрастания сумм элементов.

8. Имеется матрица. Переставить столбцы матрицы в порядке убывания сумм элементов.

9. Имеется массив, содержащий данные о силе и направлении ветра на различных высотах. Произведена выброска парашютного десанта. Задана высота раскрытия парашюта. Скорость снижения парашютиста 5 м/с. Необходимо рассчитать величину и направление относа парашютиста, относительно точки десантирования.

10. Имеется массив, содержащий расписания отправления поездов из пункта А в пункт В. Известно расстояние между пунктами А и В и скорость поезда. Необходимо вычислить время прибытия поезда в пункт назначения. Результат оформить в виде таблицы:

 

N поезда Время отправления Время прибытия
  8.45 13.30
  9.15 15.00
... ... ...

 

11. Имеется массив, содержащий множество интервалов числовой прямой (а1,а2), (а3,а4),... Определить

а) какие из заданных интервалов пересекаются;

б) какие интервалы полностью поглощают другие;

в) объединения каких интервалов являются непрерывными интервалами.

12. Имеется массив, содержащий координаты точек на плоскости. Осуществить перевод данных координат из декартовой системы в полярную и определить количество точек, попавших в каждый квадрант.

13. Имеется массив, содержащий координаты вершин прямоугольников (каждый прямоугольник задан координатами левого верхнего и правого нижнего углов). Определить какие прямоугольники не пересекают оси координат, какие пересекают ось Х, какие - Y

14. В одномерном массиве вычислить сумму элементов, стоящих между максимальным и минимальным элементом. Преобразовать массив, удалив из него нулевые элементы.

15. В массиве, все элементы которого различны, найти и удалить n наименьших элементов, сохраняя порядок следования остальных элементов.

16. Задан массив неотрицательных чисел. Найти в нем индекс элемента для которого сумма элементов, стоящих до него, наименее отличается от суммы элементов, стоящих после.

17. Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нем.

18. Массив состоит из нулей и единиц. Найти в нем самую длинную цепочку подряд стоящих нулей.

19. Матрица состоит из 0 и 1. Найти в ней самую длинную цепочку подряд стоящих 0 по горизонтали или вертикали.

20. В массиве найти минимальный и максимальный элементы (Xmin и Xmax). На интервале от Xmin до Хmax найти все числа, которые не встречаются в массиве.

 


 

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

ФУНКЦИИ

Цель работы: изучение основных концепций функционально-ориентированного подхода, знакомство с основными приемами реализации пользовательских функций на языке Си.

 

Задание к лабораторной работе

1 Ознакомиться с основными принципами и особенностями разработки пользовательских функций на языке Си, способами передачи параметров;

2 Выполнить последовательно все пункты, указанные в разделе «Ход работы»;

3 Написать программу в соответствии с выданным вариантом задания (см. раздел «Варианты заданий»);

4 Оформить отчет.

 

Ход работы

1. Написать функцию с параметрами, передаваемыми по ссылке, например:

void swap (int& a, int& b) {

int t;

t = a; a = b; b = t;

}

2. Исследовать программу нахождения максимума из двух чисел, приведенную ниже, понять, как она работает.

#include <stdio.h>

int max(int a,b) {

return (a>b)?a:b;

}

void main() {

int m,n;

scanf(“%d”, m);

scanf(“%d”, n);

printf(“%d”,max(m,n));

}

3. Переделать программу, полученную в п.3 лабораторной работы №3 таким образом, чтобы для ввода и вывода данных, а так же заполнения матрицы использовались функции, не возвращающие значения.

4. Переделать программу, полученную в п.4 таким образом, чтобы для ввода данных и вычислений использовались функции, возвращающие значения.

5. Написать функцию, возвращающую разные значения, в зависимости от условия. Написать программу, использующую эту функцию. Пример:

int f(int p) {

if (p==1) return 1;

if (p==2) return 4;

if (p>2) return p+5;

if (p==0) return 666;

return p-1000;

}

6. Переделать программу, полученную в лабораторной работе №2 п.3. таким образом, чтобы вместо вложенных ветвлений использовались функции. Пример:

int siro (int p) {

if (p== “Y”) { //тепло?

return 1; // весна

} else return 3; // осень

}

int syxo (int p) {

if (p== “Y”) { //тепло?

return 2; // лето

} else return 0; // зима

}

int check (char a, char b) {

if (b == “Y”) { //сыро? - весна или осень

return siro(a);

} else return suxo(a);

}

void main () {

char a,b;

int vg[4] = {“Зима”, “Весна”, “Лето”, “Осень”};

printf(“Тепло? (Y/N)”); scanf(“%c”,&a);

printf(“Сыро? (Y/N)”); scanf(“%c”,&b);

printf(“%s”,vg[check(a,b)]);

}

 

Варианты заданий

 

Для варианта задания, выполненного в ходе предыдущей лабораторной работы, разработать и реализовать программу с использованием функций.


 

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

СТРУКТУРЫ

Цель работы: научиться работать со структурами данных, укрепить навыки работы с функциями.

 

Задание к лабораторной работе

1 Ознакомиться с особенностями такого типа данных как структура;

2 Выполнить последовательно все пункты, указанные в разделе «Ход работы»;

3 Оформить отчет.

 

Ход работы

 

1. Объявить структуру данных и две переменных такого типа. Записать значения в переменные, вывести их на экран.

2. Объявить объединение (union), разобраться, чем отличается структура от объединения.

3. Объявить объединение из двух структур и структуру из двух объединений. Заполнить значениями, вывести на экран.

4. Объявить массив из структур. Записать значения в массив с помощью цикла, вывести на экран.

5. Написать функцию вывода структуры на экран. Переделать программу, полученную в п.4, с использованием этой функции.

6. Написать функцию, выводящую весь массив структур, используя функцию из п.5 в цикле.

7. Написать функцию заполнения структуры случайными данными.

8. Написать функцию заполнения всего массива структур, использующую функцию из п.7 в цикле.

9. Написать функцию перестановки данных в двух структурах, передаваемых по ссылке. Проверить ее работоспособность.

10. Отсортировать массив из структур по одному из полей структуры любым способом.

 


 

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

ФАЙЛЫ

Цель работы: изучение основных приемов и алгоритмов, используемых при обмене информацией с внешней памятью, а также особенностей их программной реализации на зыке Си.

 

Задание к лабораторной работе

1 Изучить основные принципы и особенности организации обмена с внешней памятью на языке Си;

2 Ознакомиться с особенностями динамического распределения памяти средствами языка Си, использованием динамического распределения памяти в программах, реализующих алгоритмы обработки массивов информации.

3 Выполнить последовательно все пункты, указанные в разделе «Ход работы»;

4 Написать программу в соответствии с выданным вариантом задания (см. раздел «Варианты заданий»), при выполнении любого из заданий массивы, используемые для промежуточного хранения данных, должны размещаться в памяти динамически;

5 Оформить отчет.

 

Ход работы

1. Написать программу, читающую значения переменных из файла, и выводящую их на экран. Ниже приведена программа чтения информации из файла, содержащего целые числа.

 

#include <stdio.h>

#include <stdlib.h>

 

void main()

{

FILE *f;

int i,size,*array;

 

f=fopen("lab1.dat","rb"); /* открыть файл */

if (f) { /* если операция открытия успешна */

/* определить размер файла */

fseek(f,0L,SEEK_END);

size=ftell(f)/sizeof(int);

fseek(f,0L,SEEK_SET);

 

array=(int *)malloc(size); /* выделить память под размещение */

/* массива */

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

fread(&array[i],sizeof(int),1,f); /* читать из файла целое число */

printf("%d\n",array[i]); /* вывести число на экран */

} } }

2. Используя программу, полученную в ходе выполнения лабораторной работы №5, осуществить сохранение массива структур в бинарный файл.

3. Написать отдельную программу чтения массива из структур из файла и вывода на экран, используя функции, написанные в лабораторной работе №5.

Варианты заданий

Изменить программу, разработанную в ходе лабораторной работы №3, таким образом чтобы ввод исходных данных осуществлялся из файла, результат также должен выводиться в файл.


 

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

УКАЗАТЕЛИ И СПИСКИ

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

 

Задание к лабораторной работе

1 Изучить основные принципы построения связанных списков и алгоритмы их обработки;

2 Выполнить последовательно все пункты, указанные в разделе «Ход работы»;

3 Написать программу (функцию) в соответствии с выданным вариантом задания (см. раздел «Варианты заданий»);

4 Оформить отчет.

 

Ход работы

1. Объявить две переменные и один указатель. Ввести значения переменных. Вывести значения переменных, используя указатель.

2. Объявить указатель на структуру данных. Заполнить структуру данными, предварительно выделив память. Прочесть структуру из памяти, вывести на экран. Очистить память.

3. Объявить массив из указателей на структуры. Выделить память, заполнить структуры случайными данными. Вывести массив на экран, используя функцию. Очистить память.

Варианты заданий

1. Организовать связанный список структур в динамической памяти. Связанный список формируется путем добавления в структуру указателя на следующую структуру в цепочке. Указатель конечного элемента цепочки имеет значение NULL. Написать функцию для добавления элемента в начало списка и удаления всего списка из памяти.

2. Написать функцию вывода списка на экран, принимающую указатель на первый элемент списка.

3. Написать функцию удаления произвольного элемента списка. Функция принимает два параметра – указатель на начало списка и указатель на удаляемый элемент.

4. Написать функцию для вставки элемента в произвольное место списка. Функция принимает два параметра – указатель на элемент, после которого нужно вставить новый элемент и указатель на новый элемент.

5. Написать функцию, меняющую местами два элемента списка. Принимаемые параметры – указатель на начало списка, указатель на первый и второй элемент, которые требуется поменять местами.

6. Организовать двусвязный (двунаправленный) список. Написать функцию для удаления списка из памяти.

7. Написать функцию для создания, заполнения элемента списка и включения его в цепочку.

8. Написать функцию для вывода списка на экран с начала и с конца.

9. Написать функцию для удаления произвольного элемента двусвязного списка. Функция должна принимать только указатель на удаляемый элемент.

10. Написать функцию для добавления элемента в произвольное место списка.

11. Организовать кольцевой (циклический) список. Написать функцию для удаления списка из памяти.

12. Написать функцию для создания, заполнения элемента списка и включения его в цепочку.

13. Написать функцию для вывода списка на экран с начала и с конца.

14. Написать функцию для удаления произвольного элемента кольцевого списка. Функция должна принимать только указатель на удаляемый элемент.

15. Написать функцию для добавления элемента в произвольное место списка.


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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...