Студопедия
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция
|
Использование одномерных массивов
Цель работы
Целью лабораторной работы является получение практических навыков при работе с массивами на языке С.
Темы для предварительной проработки
- Операторы цикла языка C.
- Условный оператор языка C.
- Массивы в языке C.
Задание
Выполнить индивидуальное задание в соответствии с вариантом.
Пример программы
№ варианта
| Тип элементов массива
| Размер-ность массива
| Способ инициализа-ции
| Задание
| 21
| символы
| 20
| строковый литерал
| Определить количество введенных заглавных букв латинского алфавита (коды 65-90) и количество остальных символов отдельно.
|
#include <iostream.h>
int main(void) {
int i, kol_char, kol_ost;
char c;
kol_char=0;
kol_ost=0;
char mas_char[20]={'f','F','.','>','9','=','T','3','@','O','E','^','v','M','H','a','R','[','-','Q'};
for (i=0; i<=19; i++)
{ c=mas_char[i];
cout<<mas_char[i]<<' ';
if ((c>=65)&&(c<=90))
kol_char++;
else kol_ost++;
}
cout<<"\n";
cout<<"kol_char="<<kol_char<<"\n";
cout<<"kol_ost="<<kol_ost<<"\n";
return 0;
}
Варианты индивидуальных заданий
№ варианта
| Тип элементов массива
| Размер-ность массива
| Способ инициализа-ции
| Задание
| 1
| символы
| задается пользователем
| с клавиатуры
| Заполнить массив. Вывести позицию первого и последнего вхождения символа «а» в нем.
| 2
| символы
| 15
| строковый литерал
| Подсчитать количество букв «а», «b», «c», «d» и «f». Результаты записать в другой массив и вывести его на экран.
| 3
| символы
| 30
| генератор случайных чисел
| Заполнить массив. Определить количество введенных строчных букв латинского алфавита (коды 97-122) и количество остальных символов отдельно.
| 4
| целые числа
| 10
| с клавиатуры
| Определить количество одинаковых элементов массива.
| 5
| символы
| 25
| генератор случайных чисел
| Заполнить массив. Определить, имеются ли среди его элементов символы «;», «.», «?» и «,».
| 6
| целые числа
| 30
| генератор случайных чисел
| Поменять местами максимальный и минимальный элементы и напечатать все элементы, расположенные между ними
| 7
| веществен-ные числа
| 20
| в тексте программы
| Переписать в другой массив все числа, меньшие 5.
| 8
| символы
| 12
| с клавиатуры
| Удалить из массива все пробелы. Результат записать в другой массив и вывести его на экран.
| 9
| целые числа
| 10
| с клавиатуры
| Найти среднее арифметическое всех элементов
| 10
| вещественные числа
| 15
| в тексте программы
| Найти 3 наименьших элемента массива
| 11
| символы
| задается пользователем
| генератор случайных чисел
| Заполнить массив. Поменять местами максимальный и минимальный по коду символы.
| 12
| целые числа
| задается пользователем
| с клавиатуры
| Удалить из массива все числа, большие 3. Результат записать в другой массив и вывести его на экран.
| 13
| символы
| задается пользователем
| с клавиатуры
| Записать все символы массива в другой массив в обратном порядке
| 14
| вещественные числа
| 10
| с клавиатуры
| После каждого положительного числа вставить 100. Результат записать в другой массив и вывести его на экран.
| 15
| целые числа
| 25
| в тексте программы
| Скопировать из массива несколько чисел. Начальную и конечную позицию копируемых символов задает пользователь. Результат записать в другой массив и вывести его на экран.
| 15
| вещественные числа
| задается пользователем
| с клавиатуры
| В середину массива вставить число, являющееся суммой всех элементов массива.
| 16
| символы
| 20
| строковый литерал
| После каждого символа «а» вставить пробел. Результат записать в другой массив и вывести его на экран.
| 17
| вещественные числа
| 15
| в тексте программы
| Округлить все элементы массива до наименьшего ближайшего целого.
| 18
| символы
| 25
| строковый литерал
| Скопировать из массива символы с 10-го по 20-й. Результат записать в другой массив и вывести его на экран.
| 19
| целые числа
| 20
| в тексте программы
| Найти сумму всех отрицательных элементов
| 20
| целые числа
| 30
| генератор случайных чисел
| После каждого четного числа вставить 0. Результат записать в другой массив и вывести его на экран.
|
Лабораторная работа №9
Работа со строками
Цель работы
Целью лабораторной работы является получение практических навыков при работе со строками на языке С.
Темы для предварительной проработки
- Операторы цикла языка C.
- Условный оператор языка C.
- Массивы в языке C.
- Строки символов в языке C.
Задания для выполнения
Разработать функцию, которая выполняет ту обработку символьной строки, которая определена в Вашем индивидуальном задании. При реализации функции запрещается пользоваться функциями библиотек языка C.
Примечания:
1. В большинстве заданий необходимо предусмотреть работу функции при некорректном задании ее параметров.
2. В тех заданиях, где применен термин "слово", под ним понимается любая последовательность символов, ограниченная любым числом пробелов и/или началом/концом строки.
Пример программы
№ варианта
| Задание
| 21
| Функция выделяет из заданной строки подстроку заданной длины, начиная с заданной позиции.
|
#include <stdio.h>
#include <iostream.h>
int substr(char[], char[], int, int); //функция выделения подстроки
int main(void) {
char str1[100], str2[100]; //исходная строка и строка-результат
int p,l,r;
/* Ввод исходных данных */
printf("Input string\n");
scanf("%s", str1);
printf("Input position\n");
cin>>p; //позиция символа, с которой копировать
printf("Input length\n");
cin>>l; //количество копируемых символов
r=substr(str1,str2,p,l); //вызов функции r=0 – успешное выполнение,
//r=1 – ошибка
if(r==0)
{ cout<<"Result string"<<endl;
cout<<str2<<endl;}
else cout<<"Data error"<<endl;
return 0;
}
int substr(char s1[], char s2[], int pos, int len)
{ int l1=0, l2=0, i=0;
char c;
do {
c=s1[i];
i++;
}while ((int)c!='\0');
l1=i-1;
l2=len;
if ((pos+len>l1)||(pos<0)||(len<=0))
return 1;
else
{ for (i=pos; i<=pos+len-1; i++)
{ s2[i-pos]=s1[i];
cout<<s1[i]<<endl;}
s2[l2]='\0';
return 0;}
}
Варианты индивидуальных заданий
№ варианта
| Задание
| 1
| Функция подсчитывает количество слов в строке.
| 2
| Функция дописывает одну строку в конец другой.
| 3
| Функция выделяет первое слово из строки.
| 4
| Функция сравнивает две строки, игнорируя различия в регистрах.
| 5
| Функция разбивает строку на две части: до первого вхождения заданного символа и после него.
| 6
| Функция выравнивает строку по левому краю до заданной длины.
| 7
| Функция удаляет из строки заданное количество символов, начиная с заданной позиции.
| 8
| Функция доводит длину строки до заданной, вставляя пробелы между словами
| 9
| Функция находит в строке первый символ, который входит в другую заданную строку.
| 10
| Функция сравнивает две строки, игнорируя количество пробелов между словами
| 11
| Функция удаляет из начала и из конца строки заданный символ.
| 12
| Функция выравнивает строку по правому краю до заданной длины
| 13
| Функция находит в строке первый символ, который не входит в другую заданную строку.
| 14
| Функция вставляет в строку другую строку, начиная с заданной позиции.
| 15
| Функция дописывает одну строку в начало другой
| 16
| Функция переписывает все символы строки в обратном порядке.
| 17
| Функция определяет длину слова с заданным номером
| 18
| Функция копирует строку в другую строку заданное количество раз
| 19
| Функция находит первое вхождение в строку заданной подстроки
| 20
| Функция выделяет из строки заданное количество слов, начиная со слова с заданным номером
|
Лабораторная работа №10
Использование многомерных массивов
Цель работы
Целью лабораторной работы является получение практических навыков при работе с многомерными массивами на языке С.
Темы для предварительной проработки
- Операторы цикла языка C.
- Условный оператор языка C.
- Массивы в языке C.
Задание
Выполнить индивидуальное задание в соответствии с вариантом.
Пример программы
№ вари-анта
| Тип элементов массива
| Размер-ность массива
| Способ инициализа-ции
| Задание
| 21
| целые числа
| 3х3х3
| генератор случайных чисел
| Преобразовать многомерный массив в одномерный
|
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, j, k; /* индексы многомерного массива */
int i1; /* индекс одномерного массива */
const n=3, m=3, l=3;
int mas_3D[n][m][l]; /* многомерный массив */
int mas_1D[n*m*l]; /* одномерный массив */
int firs_value=-10;
int last_value=10*2;
/* заполнение массива случайными числами */
for (i=0; i<=n-1; i++)
for (j=0; j<=m-1; j++)
for (k=0; k<=l-1; k++)
mas_3D[i][j][k]=firs_value + rand() % last_value;
/* вывод на экран начального массива */
printf("Begining mas:\n");
for (i=0; i<=n-1; i++)
{ printf("i=%i",i);
printf("\n");
for (j=0; j<=m-1; j++)
{ for (k=0; k<=l-1; k++)
printf("%5i",mas_3D[i][j][k]);
printf("\n");}
}
/* заполнение одномерного массива */
for (i=0; i<=n-1; i++)
for (j=0; j<=m-1; j++)
for (k=0; k<=l-1; k++)
{ i1=i*m*l+j*l+k;
mas_1D[i1]=mas_3D[i][j][k]; }
/* вывод результатов */
printf("Ending mas:\n");
for (i1=0; i1<=n*m*l-1; i1++)
printf("%5i",mas_1D[i1]);
printf("\n");
return 0;
}
Варианты индивидуальных заданий
№ варианта
| Тип элементов массива
| Размер-ность массива
| Способ инициализа-ции
| Задание
| 1
| целые числа
| 15
| в тексте программы
| Преобразовать одномерный массив в двумерный
| 2
| веществен-ные числа
| задается пользователем (mxn)
| с клавиатуры
| Преобразовать двумерный массив в одномерный
| 3
| целые числа
| 4х4
| с клавиатуры
| Заполнить массив. Отобразить элементы массива симметрично относительно главной диагонали
| 4
| символы
| задается пользователем (mxnхl)
| генератор случайных чисел
| Определить количество управляющих символов в массиве (коды 1-32).
| 5
| веществен-ные числа
| 3х5
| в тексте программы
| Ограничить все элементы сверху до 10 и снизу – до 0.
| 6
| символы
| 5х10
| строковый литерал
| Определить количество знаков препинания среди символов («;», «.», «:» и «,»). Результат записать в одномерный массив.
| 7
| символы
| 5х5
| с клавиатуры
| Заменить все строчные буквы латинского алфавита на заглавные.
| 8
| веществен-ные числа
| в массив заносятся координаты х и у для 10 точек (2х10)
| Х-равно-отстоят друг от друга (1,2,…), а У-задается пользовате-лем
| Сгладить экстремумы функции ( ).
| 9
| символы
| 3х3х3
| строковый литерал
| Найти позицию максимального и минимального по коду символа и поменять их местами.
| 10
| веществен-ные числа
| задается пользователем (n)
| с клавиатуры
| Преобразовать одномерный массив в трехмерный. Недостающие элементы заполнить нулями.
| 11
| целые числа
| 3х3х5
| в тексте программы
| Найти и вывести на экран все делители числа 24, которые есть среди элементов массива.
| 12
| веществен-ные числа
| в массив заносятся координаты х, у и z для n точек (3хn), n задается пользователем
| x=0,1,2,…,
z=0, 0.5, 1, 1.5,…
y=
| Округлить все у-координаты до наибольшего ближайшего целого.
| 13
| целые числа
| 7х7
| генератор случайных чисел
| Изменить порядок следования элементов массива на противоположный.
| 14
| символы
| 5х5
| строковый литерал
| Отобразить элементы массива симметрично относительно побочной диагонали
| 15
| вещественные числа
| 6х2
| с клавиатуры
| Поменять местами элементы с четным первым индексом на соседний (с нечетным первым индексом)
| 15
| символы
| 3х3х5
| генератор случайных чисел
| Все символы латинского алфавита заменить на «*».
| 16
| вещественные числа
| задается пользователем (mxn)
| с клавиатуры
| В каждом столбце найти наибольший элемент. Результат записать в одномерный массив и вывести его на экран.
| 17
| символы
| задается пользователем (mxnхl)
| с клавиатуры
| Все цифры заменить на «0».
| 18
| целые числа
| Два массива 5х5
| генератор случайных чисел
| Найти все одинаковые элементы в двух массивах. Результат записать в одномерный ой массив и вывести его на экран.
| 19
| вещественные числа
| 5х2
| с клавиатуры
| Найти позицию максимального и минимального элемента и подсчитать количество элементов между ними.
| 20
| целые числа
| Два массива 5х5
| генератор случайных чисел
| Найти все несовпадающие элементы в двух массивах. Результат записать в одномерный ой массив и вывести его на экран.
|
Лабораторная работа №11
Сортировка массивов
Цель работы
Целью лабораторной работы является получение практических навыков при работе с сортировкой массивов на языке С.
|