- •Т.В. Панова программирования на языке высокого уровня си Лабораторный практикум
- •Лабораторная работа №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. Выполнение индивидуального задания.
3. Блок-схема алгоритма:
4. Текст программы:
#include <stdio.h>
#include <conio.h>
void main()
{
const n=80; // максимальная длина строки (предложения)
char s=' ',ss,a[n];
int i=0,k=0,p=0; /* k –счетчик символов в слове; p – счетчик лишних пробелов */
printf("\nInput a sentence and a point: ");
while(i<n-1 && s!= '.')
{
ss=s;
s=getchar(); // получение символа
if (s==' ' || s== '.') // если конец слова или конец предложения, то
{
if (ss==' ') /* если предыдущий символ перед пробелом или точкой – пробел, то */
p++; // увеличение счетчика пробелов
if (ss!='.') // если не конец предложения, то
k=0; // обнуление счетчика символов в слове
}
else
{
a[k]=s; // формирование строки как массива символов
k++; // увеличение счетчика символов в слове
i++;
}
}
if (p>0 || i>=n-1)
printf("\nwrong sentence");
else
{
a[k]='\0'; // конец строки
printf("\nlast word: %s",a);
}
getch();
return;
}
5. Тестирование:
Теоретически рассчитанное выходное значение |
Практически полученное выходное значение |
Тест 1: входная строка - предложение:”very long string.” | |
last word: string |
last word: string |
Тест 2: входная строка - предложение:”very long string.” | |
wrong sentence |
wrong sentence |
Тест 3: входная строка - предложение:”very long string .” | |
wrong sentence |
wrong sentence |
Задача 3
1. Постановка задачи: ввести и вывести две строки; подсчитать в одной строке количество одинаковых сочетаний символов другой строки.
2. Блок-схема алгоритма:
3. Текст программы:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define n 80
int main()
{
char str1[n],str2[n],*p1,*p2;
int i=0,m=0,lstr,lsym,k=0;
printf(“\nInput string_1: “);
gets(str1);
printf(“\nInput string_2: “);
gets(str2);
printf(“\nOutput string_1: “);
puts(str1);
printf(“\nOutput string_2: “);
puts(str2);
lstr=strlen(str1);
lsym=strlen(str2);
p1=str1;
p2=str2;
while(i<=lstr)
{
if (*p1==*p2)
{
m++;
p2++;
if (m==lsym)
{
k++;
m=0;
p2=str2;
}
}
else
{
m=0;
p2=str2;
}
p1++;
i++;
}
printf(“\n%d”,k);
getch();
return 0;
}
4. Тестирование:
Теоретически рассчитанное выходное значение |
Практически полученное выходное значение |
Тест: входная строка 1: my kitchen, your kitten, our kite, her kittens, his cat входная строка 2: kit | |
количество сочетаний символов =4 |
количество сочетаний символов =4 |
Задача 4
1. Постановка задачи: ввести и вывести строку; подсчитать и вывести количество слов в строке.
2. Блок-схема алгоритма:
3. Текст программы:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
const n=80; // ограничение символов в строке
char str[n]; // массив для хранения строки
char sym;
int k=0,count=1,length;
printf("\nInput string of symbols with a point in the end: ");
for (int i=0;i<=n;i++)
{
sym=getchar();
if (sym=='.')
break;
str[k]=sym;
k++;
}
str[k]='\0';
printf(“\nOutput string: “);
printf("\n%s",str);
length=strlen(str);
for (i=0;i<length;i++)
if (str[i]==' ')
count++;
printf(“\n%d”,count);
getch();
return;
}
4. Тестирование:
Теоретически рассчитанное выходное значение |
Практически полученное выходное значение |
Тест: входная строка: I like dogs very much. | |
количество слов =5 |
количество слов =5 |
2. Выполнение индивидуального задания.
1. Постановка задачи.
Разработать алгоритм и написать программу, согласно индивидуальному заданию.
2. Входные и выходные данные.
Все действующие в программе переменные должны быть объявлены.
Ввод данных с клавиатуры должен предваряться выводом соответствующего сообщения.
3. Блок-схема алгоритма.
Представить алгоритм задачи в виде блок-схемы.
4. Текст программы.
Разработанный алгоритм реализуется на языке программирования высокого уровня Cи.
5. Тестирование.
Результаты тестирования представить в виде таблицы.
IV. Требования к разработке программы.
Программа должна содержать следующие три составные части:
ввод исходных данных;
обработку данных;
вывод результатов.
Произвести отладку и тестирование разработанной программы.
V. Требования к защите индивидуальных заданий.
ИМЕТЬ отчет, который включает:
постановку задачи;
блок-схему алгоритма;
текст программы;
результаты тестирования.
ЗНАТЬ ответы на контрольные вопросы.
VI. Варианты индивидуальных заданий.
Разработать алгоритмы решения задач, написать программы, реализующие соответствующие алгоритмы, и выполнить их тестирование. Входная строка вводится с клавиатуры; входная и выходная строки выводятся на экран.
Вариант №1
Подсчитать количество идущих подряд одинаковых символов в строке.
Преобразовать строчные буквы строки в прописные (верхний регистр).
Вариант №2
Подсчитать максимальное количество одинаковых, идущих подряд, символов в строке.
Сделать переворот строки.
Вариант №3
Подсчитать число вхождений введенного символа в строку.
Удалить все, кроме одного, идущие подряд одинаковые символы в строке.
Вариант №4
Подсчитать количество слов в строке.
Преобразовать прописные буквы строки в строчные (нижний регистр).
Вариант №5
Подсчитать количество букв латинского алфавита в строке.
Объединить две введенные строки в одну.
Вариант №6
Подсчитать количество цифр в строке.
Вывести первое слово введенного предложения, заканчивающегося точкой.
Вариант №7
Подсчитать количество прописных букв в строке.
Удалить из строки самое длинное слово.
Вариант №8
Подсчитать количество строчных букв в строке.
Из двух введенных строк найти ту, которая содержит наибольшее количество слов.
Вариант №9
Подсчитать, сколько раз в строке повторяется введенное с клавиатуры сочетание символов.
Удалить из строки самое короткое слово.
Вариант №10
Подсчитать количество пробелов в строке.
Преобразовать прописные буквы строки в строчные (нижний регистр).
Вариант №11
Подсчитать минимальное, большее одного, количество идущих подряд символов в строке.
Сделать переворот строки.
Вариант №12
Подсчитать число вхождений введенной подстроки в строку.
Удалить все идущие подряд одинаковые символы в строке.
Вариант №13
Подсчитать количество запятых в строке.
Преобразовать строчные буквы строки в прописные (верхний регистр).
Вариант №14
Подсчитать количество букв в строке.
Объединить две введенные строки в одну.
Вариант №15
Подсчитать количество разделительных знаков в строке.
Вывести самое длинное слово введенного предложения, заканчивающегося точкой.
Вариант №16
Подсчитать количество букв и цифр в строке.
Удалить из строки самое короткое слово.
Вариант №17
Подсчитать количество символов в строке.
Из двух введенных строк найти ту, которая содержит самое длинное слово.
Вариант №18
Подсчитать в строке количество пробелов и запятых.
Удалить из строки предпоследнее слово.
Вариант №19
Подсчитать количество одинаковых слов в строке.
Преобразовать строчные буквы строки в прописные (верхний регистр).
Вариант №20
Удалить из строки одинаковые, идущие подряд, символы.
Сделать переворот строки.
Вариант №21*
Подсчитать число вхождений в строку введенного с клавиатуры символа и удалить из строки все его вхождения.
Удалить из строки повторяющиеся пробелы между словами.
Вариант №22*
Подсчитать в строке количество слов одинаковой длины.
Поменять местами первое и последнее слово в строке.
Вариант №23*
Подсчитать количество цифр в строке и удалить их.
Объединить две введенные строки в одну и удалить из полученной строки все слова, начинающиеся с буквы r.
Вариант №24*
Подсчитать количество разделительных знаков в строке и заменить их на пробелы.
Вывести через слово введенное предложение, заканчивающееся точкой.
Вариант №25*
Перевернуть первое слово в строке.
Удалить из строки все слова, перед которыми стоит более одного пробела.