- •Т.В. Панова программирования на языке высокого уровня си Лабораторный практикум
- •Лабораторная работа №1. Обработка двумерных массивов данных………...…………….3
- •Лабораторная работа №1
- •Обработка двумерных массивов данных
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •Лабораторная работа №2
- •Работа со строками
- •I. Теоретические сведения.
- •1. Некоторые стандартные функции обработки строк и их использование
- •II. Контрольные вопросы.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа № 3
- •Функции
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •2. Описание подхода к решению задачи.
- •2. Блок-схемы алгоритмов функций:
- •3. Текст программы:
- •4. Тестирование:
- •2. Блок-схемы алгоритмов функций обработки строки:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа №4
- •Работа с файлами
- •I. Теоретические сведения.
- •Определение типов символов
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Выполнение индивидуального задания.
2. Текст программы:
#include <stdio.h>
#include <conio.h>
#define num 20
int nrec,size;
FILE *fd; int Create(char *name, int sz) // Создание пустого файла {
if ((fd=fopen(name,"wb"))!=NULL) // Создание нового файла для записи
{
size=sz; nrec=0;
fwrite((void*)&nrec,sizeof(int),1,fd); // Запись в файл nrec и size
fwrite((void*)&size,sizeof(int),1,fd);
fclose(fd);
return 1;
}
else
return 0; // файл не создан } int Open(char *name) // Открытие файла {
if ((fd=fopen(name,"rb+wb"))!=NULL) /* открытие существующего для чтения и записи */
{
fwrite((void*)&nrec,sizeof(int),1,fd); // читать из файла nrec и size
fwrite((void*)&size,sizeof(int),1,fd);
fseek(fd,0L,SEEK_ END);
if (ftell(fd)==2*sizeof(int)+(long)nrec*size) /* проверка на соответствие длины файла значениям nrec и size */
return 1; // файл открыт
fclose(fd);
}
return 0; // файл не открыт }
void *Get(int n) /* Загрузка из файла записи в динамическую переменную (n – номер записи)
{
void *pp;
if ((fd!=NULL) && (n<nrec)) // Файл открыт и номер записи корректен
{
pp=(void*)new char[size]; // Создание динамической переменной
if ((fseek(fd,2*sizeof(int)+n*size,SEEK_SET)!=EOF)&&(fread(pp,size,1,fd)==1))
return pp;
else
delete pp;
}
return NULL; // Файл не открыт или номер записи некорректен
} int Append(void *pp) // Добавление записи {
if (fd!=NULL)
{
fseek(fd,0L,SEEK_ END); // Установить на конец файла
if (fwrite(pp,size,1,fd)==1)
{
nrec++;
fseek(fd,0L,SEEK_ SET); // Обновить переменную nrec в файле
if (fwrite((void*)&nrec,sizeof(int),1,fd)==1)
return 1;
}
}
return 0; // Файл не открыт
}
void main()
{
double a,*pd [20];
if (Create("a.dat",sizeof(double))&&Open("a.dat"))
{
for (int i=0; i<num; i++) // Добавить num переменных
{
a=i;
Append((void*)&a);
}
/* Чтение в обратном порядке в динамические переменные и формирование массива указателей */
for (int i=0; i<num; i++)
pd[i]=(double*)Get(num-1-i);
printf(“\n”);
for (i=0; i<num;i++)
printf(“%f “,*pd[i]);
}
else
printf(“\nФайл не создан или не открыт!”);
getch();
return;
}
2. Выполнение индивидуального задания.
1. Постановка задачи.
Разработать алгоритм и написать программу, соглано индивидуальному заданию.
2. Входные и выходные данные.
Все действующие в программе переменные должны быть объявлены.
Недопустимо задавать исходные (входные) данные с помощью операторов присваивания. Ввод данных с клавиатуры должен предваряться выводом соответствующего сообщения.
3. Блок-схема алгоритма.
Представить алгоритм решения задачи в виде блок-схемы.
4. Текст программы.
Разработанный алгоритм реализуется на языке программирования высокого уровня Cи.
5. Тестирование.
Результаты тестирования представить в виде таблицы.
IV. Требования к разработке программы.
Программа должна содержать следующие три составные части:
ввод исходных данных;
обработку данных;
вывод результатов.
Произвести отладку и тестирование разработанной программы.
V. Требования к защите индивидуальных заданий.
ИМЕТЬ отчет, который включает:
постановку задачи;
блок-схему алгоритма;
текст программы;
результаты тестирования.
ЗНАТЬ ответы на контрольные вопросы.
VI. Варианты индивидуальных заданий.
Разработать алгоритмы решения задач, написать программы, реализующие соответствующие алгоритмы, и выполнить их тестирование.
Вариант №1
Подсчитать количество строк в существующем текстовом файле.
Создать пустой двоичный файл, открыть существующий файл, добавить в него 10 целых чисел.
Вариант №2
В текстовом файле записаны предложения, заканчивающиеся точками, слова в предложениях отделены друг от друга пробелами; удалить из файла слова, состоящие более, чем из n символов.
Создать пустой бинарный файл, открыть существующий бинарный файл, добавить в него n вещественных чисел, подсчитать отдельно количество отрицательных и положительных чисел.
Вариант №3
Считать числа, записанные в текстовом файле, каждое на новой строке, в одномерный массив.
Создать пустой двоичный файл, открыть существующий файл, записать в файл целое число, начиная с 10-й позиции.
Вариант №4
В текстовом файле записаны фразы, который отделены друг от друга точками, слова – пробелами и знаками препинаниями; удалить из файла лишние пробелы, оставив по одному между словами.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 20 вещественных чисел, записать последнее число между 5-м и 6-м числом.
Вариант №5
Подсчитать количество слов в существующем текстовом файле (слова – любые связные группы символов, разделенные пробелами, табуляциями или разделителями строк).
Создать пустой бинарный файл, открыть существующий файл, добавить в него значения элементов одномерного массива.
Вариант №6
В текстовом файле записаны предложения, заканчивающиеся точками, слова в предложениях отделены друг от друга пробелами; записать в скобках после каждого слова количество, содержащихся в нем символов.
Создать пустой бинарный файл, открыть существующий файл, добавить в него n массивов, состоящих из 5 целых чисел каждый; вывести тот массив, в котором содержится наибольшее максимальное число.
Вариант №7
Просмотреть текстовый файл по абзацам (абзац - любая последовательность строк, ограниченная пустой строкой).
Создать пустой бинарный файл, открыть существующий файл, добавить в него 7 вещественных чисел.
Вариант №8
В текстовом файле записаны фразы, который отделены друг от друга точками, слова – пробелами и знаками препинаниями; заменить все пробелы запятыми.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 10 вещественных чисел, записать после каждого числа нуль.
Вариант №9
Подсчитать количество точек в существующем текстовом файле.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 16 вещественных чисел, считать их в одномерный массив.
Вариант №10
В текстовом файле записаны предложения, заканчивающиеся точками, слова в предложениях отделены друг от друга пробелами; удалить самое короткое слово.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 4 массива, состоящих из 7 целых чисел каждый; удалить тот массив, в котором содержится наименьшее число.
Вариант №11
Подсчитать количество абзацев в существующем текстовом файле (абзац – любая последовательность строк, ограниченная пустой строкой).
Создать пустой бинарный файл, открыть существующий файл, добавить в него 11 вещественных чисел и прочитать из файла 2 последние значения.
Вариант №12
В текстовом файле записаны целые числа в виде матрицы (элементы в строках разделены пробелами), заменить в матрице все отрицательные значения на максимальное значение.
Создать пустой бинарный файл, открыть существующий файл, добавить в него n вещественных чисел, изменить значения чисел на их абсолютное значение.
Вариант №13
Подсчитать количество цифр в существующем текстовом файле.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 40 целых чисел, сохранить в новом бинарном файле четные числа из первого файла.
Вариант №14
В текстовом файле записаны фразы, который отделены друг от друга точками, слова – пробелами и знаками препинаниями; удалить все знаки препинания.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 15 вещественных чисел, удалить все нулевые значения.
Вариант №15
В текстовом файле записана целочисленная матрица (элементы в строках разделены пробелами), заменить в ней все положительные элементы минимальным элементом матрицы.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 18 целых чисел; создать другой бинарный файл, в который записать максимальное и минимальное значение чисел из первого файла.
Вариант №16
Подсчитать количество символов в существующем текстовом файле.
Создать пустой двоичный файл, открыть существующий файл, добавить в него 25 целых чисел и считать их в одномерный массив.
Вариант №17
В текстовом файле записана матрица вещественных чисел (элементы в строках разделены пробелами), записать ее в другой файл, заменив минимальный элемент матрицы максимальным.
Создать пустой бинарный файл, открыть существующий файл, добавить в него n целых чисел; удалить все нулевые по значению компоненты.
Вариант №18
Подсчитать количество пробелов в существующем текстовом файле.
Создать пустой двоичный файл, открыть существующий файл, добавить в него 9 целых чисел и прочитать из файла 5 последних.
Вариант №19
В текстовом файле записана матрица целых чисел (элементы в строках разделены пробелами), добавить в матрицу столбец, состоящий из максимальных элементов каждой строки.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 25 целых чисел; удалить из него все минимальные значения.
Вариант №20
Считать числа, записанные в текстовом файле через пробел, в одномерный массив.
Создать пустой двоичный файл, открыть существующий файл, добавить в него 25 целых чисел и прочитать значения, начиная с 5-й позиции.
Вариант №21
В текстовом файле записана матрица вещественных чисел (элементы в строках разделены пробелами), добавить в матрицу строку, состоящую из суммы элементов каждого столбца.
Создать пустой бинарный файл, открыть существующий файл, добавить в него n целых чисел; удалить из него каждое третье число.
Вариант №22
Подсчитать количество полных страниц в существующем текстовом файле.
Открыть существующий бинарный файл, добавить в него 17 целых чисел, считать их в обратном порядке в конец текстового файла.
Вариант №23
В текстовом файле записана целочисленная матрица (элементы в строках разделены пробелами), удалить из матрицы строку, содержащую только отрицательные элементы.
Создать пустой бинарный файл, открыть существующий файл, добавить в него n целых чисел; удалить все четные числа.
Вариант №24
Просмотреть постранично существующий текстовый файл.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 15 вещественных чисел и прочитать их из файла в обратном порядке.
Вариант №25
В текстовом файле записано предложение, заканчивающееся точками, слова отделены друг от друга пробелами; поменять местами первое слово с последним.
Создать пустой бинарный файл, открыть существующий файл, добавить в него 7 массива, состоящих из 4 целых чисел каждый; вывести тот массив, в котором содержатся только неотрицательные числа.