номер конечного пробела:4
Выходные данные:
-l sb3>
Вариант 10
Задание 1
В заданной строке, состоящей из нескольких слов, разделенных пробелами, оставить по одному пробелу между словами. Предусмотреть случай, когда в строке пробелов нет.
Входные данные:
a*bc -&19 -l sb3> 4-5 z%x
Выходные данные:
a*bc -&19 -l sb3> 4-5 z%x
Задание 2
Вывести все 4-х символьные сочетания, состоящие из символов заданной строки, удовлетворяющие заданным правилам их формирования. Правила задать с терминала для каждого i -го символа (i=1,…,4):
й символ – это буква или цифра?
Если буква, то гласная или согласная?
Если цифра, то четная или нечетная?
й символ – это буква или цифра?
И так далее.
Ответы: 1 – да, 0 – нет.
Использованный символ строки далее в новые сочетания не входит.
Входные данные:
Ab1e2c03ik5
й символ – буква:1
гласная:1
й символ – буква:0
четная:1
й символ – буква:1
гласная:0
й символ – буква:0
четная:0
Выходные данные:
A2b1
E0c3
Вариант 11
Задание 1
Строка состоит из нескольких слов, разделенных пробелом. Определить минимальное количество первых символов слов, по которым можно различить слова в строке.
Входные данные:
Abc5 abc0 abcde abcfg
Выходные данные:
Задание 2
В заданной строке переставить слова по возрастанию их длины.
Входные данные:
a*bcd -&19 –l sb3> 4-5 z
Выходные данные:
z -1 4-5 -&19 sb3> a*bcd
Вариант 12
Задание 1
Строка состоит из натуральных чисел, разделенных пробелом, и диапазонов чисел (начальное число-тире-конечное число). Удалить из строки все числа, входящие в эти диапазоны. Оставшиеся числа вывести на экран по возрастанию (диапазоны не выводить).
|
Входные данные:
15 9 2 5 3-6 1 3 7-10
Выходные данные:
1 2 15
Задание 2
Удалить из строки все повторения символов. Рабочие строки не использовать.
Входные данные:
a*b*cd -dc&19a –l sb3> 3-5 z
Выходные данные:
a*bcd -&19s3>5z
Вариант 13
Задание 1
Задана строка, в которой имеются цифры. Вывести на экран названия встретившихся цифр словами в порядке их следования.
Входные данные:
a*b0cd -dc&19a –l sb3> 3-5 z
Выходные данные:
ноль
один
девять
один
три
три
пять
Задание 2
Строка состоит из натуральных чисел, разделенных пробелом. Определить цифру, встречающуюся в этих числах наибольшее количество раз.
Входные данные:
512 256 32 1024 128 16
Выходные данные:
count=5
Вариант 14
Задание 1
Задана строка, в которой имеются наименования цифр. Вывести на экран эти цифры в порядке их следования.
Входные данные:
a*twob0fivecd -onedc&tnine19a –sixl sb3> 3-5 z
Выходные данные:
Задание 2
Строка состоит из натуральных чисел, разделенных пробелом. Определить цифры, не входящие ни в одно их этих чисел.
Входные данные:
512 256 32 1024 128 16
Выходные данные:
Вариант 15
Задание 1
Задана строка, представляющая собой уравнение с одним неизвестным в следующем формате:
ax+b=c
где a, b и с – целые числа, положительные или отрицательные. Определить значение неизвестного x.
Входные данные:
5x-3=7
Выходные данные:
x=2
Задание 2
Строка состоит только из букв. Переставить их так, чтобы гласные и согласные чередовались. Оставшиеся лишними гласные или согласные переместить в конец строки. Рабочие строки не использовать.
|
Входные данные:
Abcdefghiokl
Выходные данные:
Abecidofghkl
Лабораторная работа № 6
Массивы
Тема: Программирование алгоритмов работы с массивами.
Цель работы: Освоить основные алгоритмы работы с одномерными и многомерными массивами.Освоить методы тестирования программ.
Задание на лабораторную работу
- Получить задание в соответствии с номером своего варианта.
- Составить схему алгоритма решения задачи.
- Написать код программы на языке Паскаль в среде Borland Pascal for Windows.
- Осуществить компиляцию, и отладку программы. Провести структурное тестирование программы (тестирование как белого ящика): составить тестовые наборы для тестирования
- в нормальных условиях,
- при граничных условиях,
- при некорректных входных данных,
- по критерию покрытия решений – результат проверки каждого условия принимал значение истина или ложь хотя бы один раз,
- по критерию покрытия условий – все возможные результаты каждой логической операции в условиях были получены хотя бы по одному разу.
- Получить результат.
- Оформить отчет по лабораторной работе.
Пример оформления работы
Задание 1.
- Заполнить одномерный массив (вектор) vectorn целыми случайными числами в диапазоне от v_min до v_max. Найти в нем минимальный min и максимальный max элементы и поменять их местами. Размер вектора n задать константой. Границы диапазона v_min и v_max задать с консоли. Вывести на экран исходный вектор, найденные минимальный и максимальный элементы и их индексы, а также полученный вектор.
Для заполнения вектора целыми случайными числами в заданном диапазоне используется функция-генератор случайных чисел random(k), где k – целое число. Каждый раз при обращении к этой функции она будет вырабатывать целое число с равномерным распределением от 0 до k-1. Для сдвига диапазона случайных чисел в нужную сторону можно использовать следующее обращение к этой функции:
|
random(v_max – v_min + 1) + v_min.
Поиск максимального элемента вектора осуществляется следующим образом. Перед началом поиска за максимальный элемент вектора max принимается его первый элемент: max=vector1. Далее каждый следующий элемент вектора vectori, начиная со второго, сравнивается с максимальным элементом: если он больше максимального, то сейчас он – максимальный элемент вектора: max=vectori. Поиск минимального элемента осуществляется аналогично. В процессе поиска индексы максимального и минимального элементов (i_max, i_min) запоминаются.
После окончания поиска, найденные максимальный и минимальный элементы меняются местами.
- Схема алгоритма решения задачи:
- Код программы
3.1. На языке Паскаль:
Program Variant_0;
Uses WinCrt;
Const n = 10; {задание размера вектора именованной константой}
Var i, v_min, v_max, i_max, max, i_min, min: Integer;
vector: Array [1..n] Of Integer;
Begin
Randomize; {запуск генератора случайных чисел}
WriteLn('Лабораторная работа №6_1');
WriteLn('Вариант №0');
WriteLn('ИС-11-1');
WriteLn('Пупкин Василий');
WriteLn;
WriteLn('Задайте диапазон случайных чисел');
Write(‘v_min=’);
ReadLn(v_min);
Write(‘v_max=’);
ReadLn(v_max);
For i:=1 To n Do {заполнение вектора случайными числами}
vector[i]:=Random(v_max-v_min + 1) + v_min;
WriteLn;
WriteLn('Исходный вектор:');
For i:=1 To n Do {вывод на экран исходного вектора}
Write(vector[i]:5);
WriteLn;
max:= vector[1]; {пока макс элемент – первый элемент вектора}
i_max:= 1;
min:= vector[1]; {пока мин элемент – первый элемент вектора}
i_min:= 1;
For i:=2 To n Do {поиск начинаем со второго элемента}
Begin
If (vector[i] > max) Then {если очередной элемент больше} {текущего максимального}
Begin
max:= vector[i]; {то максимальным элементом}
i_max:= i; {становится очередной элемент} {вектора}
End;
If (vector[i] < min) Then {если очередной элемент меньше} {текущего минимального}
Begin
min:= vector[i]; {то минимальным элементом}
i_min:= i; {становится очередной элемент} {вектора}
End;
End;
WriteLn;
WriteLn(‘max=’, max, ‘ i_max=’, i_max);
WriteLn(‘min=’, min, ‘ i_min=’, i_min);
vector[i_max]:=min; {меняем местами макс и мин элементы}
vector[i_min]:=max; {в векторе}
WriteLn;
WriteLn('Полученный вектор:');
For i:=1 To n Do {вывод на экран полученного вектора}
Write(vector[i]:5);
WriteLn;
End.
3.2. На языке Си:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>
Int main()
{
int i, n, m, vector_min, vector_max, min, max, i_min, i_max;