Abcde fghik abcde lmnop fghi

Выходные данные:

Abcde fghik lmnop fghi

Вариант 8

Задание 1

В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию (k)a, где k- количество повторений символа a.

Входные данные:

Abbcdddeeffffghh

Выходные данные:

Abbc(3)dee(4)fghh

Задание 2

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

Входные данные:

a*bc&9lsb345z%x

Выходные данные:

a*bc&9l34bs5z%x

Вариант 9

Задание 1

В заданной строке найти минимальное и максимальное целое число (числа могут быть отрицательными, в этом случае знак “минус” перед ними ставится без пробела). Предусмотреть случай, когда в строке чисел нет.

Входные данные:

a*bc&19-l sb3>4-5z%x

Выходные данные:

max=19

min=-5

Задание 2

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

Входные данные:

a*bc -&19 -l sb3> 4-5 z%x

Номер начального пробела:2

Номер конечного пробела: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 –1 sb3> 3-5 z

Выходные данные:

a*bcd -&19s3>5z

Вариант 13

Задание 1

Задана строка, в которой имеются цифры. Вывести на экран названия встретившихся цифр словами в порядке их следования.

Входные данные:

a*b0cd -dc&19a –1 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

Массивы

Тема: Программирование алгоритмов работы с массивами.

Цель работы: Освоить основные алгоритмы работы с одномерными и многомерными массивами.Освоить методы тестирования программ.

Задание на лабораторную работу

  1. Получить задание в соответствии с номером своего варианта.
  2. Составить схему алгоритма решения задачи.
  3. Написать код программы на языке Паскаль в среде Borland Pascal for Windows.
  4. Осуществить компиляцию, и отладку программы. Провести структурное тестирование программы (тестирование как белого ящика): составить тестовые наборы для тестирования

- в нормальных условиях,

- при граничных условиях,

- при некорректных входных данных,

- по критерию покрытия решений – результат проверки каждого условия принимал значение истина или ложь хотя бы один раз,

- по критерию покрытия условий – все возможные результаты каждой логической операции в условиях были получены хотя бы по одному разу.

  1. Получить результат.
  2. Оформить отчет по лабораторной работе.

Пример оформления работы

Задание 1.

  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) запоминаются.

После окончания поиска, найденные максимальный и минимальный элементы меняются местами.

  1. Схема алгоритма решения задачи:

Abcde fghik abcde lmnop fghi - student2.ru

  1. Код программы

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;

time_t t; // текущее время для инициализации

// генератора случайных чисел

srand((unsigned) time(&t)); // инициализация генератора

// случайных чисел

printf("\nЛабораторная работа №6_1");

printf("\nВариант №0");

printf("\nПО-11-1");

printf("\nПупкин Василий\n");

printf("\nВведите нижнюю границу диапазона:");

scanf("%d", &vector_min);

printf("\nВведите верхнюю границу диапазона:");

scanf("%d", &vector_max);

printf("\nВведите размер вектора:");

scanf("%d", &n);

int vector[n];

printf("\nИсходный вектор:\n");

m = vector_max-vector_min + 1;

for (i=0; i<n; i++)

{

// получение случайного числа в диапазоне

// от vector_min до vector_max

vector[i]=rand()% m + vector_min;

printf(" %5d", vector[i]);

}

printf("\n");

max = vector[0];

i_max = 0;

min = vector[0];

i_min = 0;

for (i=1; i<n ; i++)

{

if (vector[i] > max)

{

max = vector[i];

i_max = i;

}

if (vector[i] < min)

{

min = vector[i];

i_min = i;

}

}

printf("\nmax=%d i_max=%d", max, i_max);

printf("\nmin=%d i_min=%d\n", min, i_min);

vector[i_max] = min; //меняем местами max и min

vector[i_min] = max; //элементы вектора

printf("\nВыходной вектор:\n");

for (i=0; i<n; i++)

printf(" %5d", vector[i]);

printf("\n");

return 0;

}

3.3. На языке Java:

package javaapplication6_1;

// Импорт библиотеки графических компонентов Swing

import javax.swing.*;

import java.util.*;

public class JavaApplication6_1 // задание нового класса

{

// описание главного метода main этого класса

public static void main(String[] args)

{

//описание переменных:

// целого типа

int n, vector_min, vector_max, min, max, i_min, i_max; String input, text; // строк класса String

//консольный вывод

System.out.println("Лабораторная работа №6-1");

System.out.println("Вариант №0");

System.out.println("ПО-11-1");

System.out.println("Пупкин Василий");

System.out.println();

// вызов диалогового окна ввода исходных данных

input=JOptionPane.showInputDialog("Нижняя граница диапазона vector_min:");

// преобразование из строкового значения в целое

vector_min=Integer.parseInt(input);

input=JOptionPane.showInputDialog("Верхняя граница диапазона vector_max:");

vector_max=Integer.parseInt(input);

input=JOptionPane.showInputDialog("Размер вектора n:");

n=Integer.parseInt(input);

// формирование строки вывода

text="Значения входных переменных:\nvector_min=" + vector_min + "\nvector_max=" + vector_max + "\nn=" + n;

// вызов диалогового окна эхо-печати

JOptionPane.showMessageDialog(null, text);

//консольный вывод

System.out.printf("vector_min=%d\nvector_max=%d\nn=%d\n",

vector_min, vector_max, n);

// создание вектора длиной n элементов

int vector[]=new int[n];

//консольный вывод

System.out.println();

System.out.println("Исходный вектор:");

// создание объекта Rand класса Random - генератора случ. чисел

// инициализация генератора случайных чисел,

// привязка его к системному времени

Random Rand=new Random();

// формирование вектора случайным образом

for (int i=0; i<n; i++)

{

// получение очередного случайного числа в диапазоне

// от vector_min до vector_max

vector[i]=Rand.nextInt(vector_max-vector_min+1) + vector_min;

//консольный вывод элемента вектора

System.out.printf(" %5d", vector[i]);

}

//консольный вывод

System.out.println();

// вычисления по заданному алгоритму

// максимальное и минимальное значения-

// начальные элементы вектора

max = vector[0];

i_max = 0;

min = vector[0];

i_min = 0;

// поиск минимального и максимального элементов вектора

// и их индексов

for (int i=1; i<n ; i++)

{

if (vector[i] > max)

{

max = vector[i];

i_max = i;

}

if (vector[i] < min)

{

min = vector[i];

i_min = i;

}

}

//консольный вывод

System.out.printf("\nmax=%d i_max=%d", max, i_max);

System.out.printf("\nmin=%d i_min=%d\n", min, i_min);

//меняем местами max и min элементы вектора

vector[i_max] = min;

vector[i_min] = max;

//консольный вывод вектора

System.out.println();

System.out.println("Выходной вектор:");

for (int i=0; i<n; i++)

System.out.printf("%5d", vector[i]);

System.out.println();

}

}

3.4. На языке PHP:

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>

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

</title>

</head>

<body BgColor="silver" text="blue">

<H2>Лабораторная работа №6_1</h2>

<H3>Массивы</h3>

Вариант №0

<br>ПО-11-1

<br>Пупкин Василий

<br>

<br>

<Form name="LabRab_6_1" action="" method="POST">

Нижняя граница диапазона vector_min:<br>

<input type="text" name="vector_min" size="5"><br>

Верхняя граница диапазона vector_max:<br>

<input type="text" name="vector_max" size="5"><br>

Размер вектора n:<br>

<input type="text" name="n" size="5"><br>

<input type="submit" value="Вычислить"><br>

</form>

<?php

// получение значения переменной из формы

$vector_min=$_POST['vector_min'];

$vector_max=$_POST['vector_max'];

$n=$_POST['n'];

if (($n!='') && ($vector_min!='') && ($vector_max!=''))

{

//эхо-печать

echo "<br>n=$n";

echo "<br>vector_min=$vector_min";

echo "<br>vector_max=$vector_max<br>";

// инициализация генератора случайных чисел

mt_srand(time());

// заполнение вектора целыми случайными числами

// от vector_min до vector_max

for ($i=0; $i<$n; $i++)

$vector[$i]=mt_rand($vector_min, $vector_max);

// вывод исходного вектора на экран

echo '<br>Исходный вектор:<br>';

foreach($vector as $index=>$value)

{

echo "$index=>$value";

echo '<br>';

}

// определяем минимальный и максимальный

// элементы вектора

// пока это начальный элемент массива

$max = $vector[0];

$i_max = 0;

$min = $vector[0];

$i_min = 0;

for ($i=1; $i<$n ; $i++)

{

if ($vector[$i] > $max)

{

$max = $vector[$i];

$i_max = $i;

}

if ($vector[$i] < $min)

{

$min = $vector[$i];

$i_min = $i;

}

}

// вывод найденных элементов

// и их индексов на экран

echo "<br>i_max=$i_max max=$max";

echo "<br>i_min=$i_min min=$min";

echo '<br>';

//меняем местами max и min

//элементы вектора

$vector[$i_max] = $min;

$vector[$i_min] = $max;

// вывод выходного вектора на экран

echo '<br>Выходной вектор:<br>';

foreach($vector as $index=>$value)

{

echo "$index=>$value";

echo '<br>';

}

echo '<br>';

}

?>

</body>

</html>

  1. Компиляция, отладка, тестирование и получение результата:

Abcde fghik abcde lmnop fghi - student2.ru

Задание 2.

1. Заполнить квадратный массив massivnn целыми случайными числами в диапазоне от v_min до v_max. Поменять местами главную и побочную диагонали массива. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Вывести на экран исходный и полученный массивы.

Элементы главной диагонали квадратного массива имеют одинаковые индексы: massivii (i=1…n). Соответствующие им построчно элементы побочной диагонали имеют индексы massivi,n-i+1 .Меняем их местами алгоритмом циклического обмена через третью переменную.

2. Схема алгоритма решения задачи:

Abcde fghik abcde lmnop fghi - student2.ru

3. Код программы

3.1. На языке Паскаль:

Program Variant_0;

Uses WinCrt;

Const n = 5; {задание размера массива именованной константой}

Var i, j : Word;

k, v_min, v_max: Integer;

massiv : Array [1..n, 1..n] Of Integer;

Begin

Randomize; {запуск генератора случайных чисел}

WriteLn('Лабораторная работа №6_2');

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 {заполнение массива случайными числами}

For j:=1 To n Do

massiv[i,j]:=Random(v_max-v_min + 1) + v_min;

WriteLn;

WriteLn('Исходный массив:');

For i:=1 To n Do {вывод на экран исходного массива}

Begin

For j:=1 To n Do

Write(massiv[i,j]:5);

WriteLn;

End;

WriteLn;

For i:=1 To n Do {меняем местами соответствующие элементы}

Begin {главной и побочной диагоналей}

k:=massiv[i,i];

massiv[i,i]:=massiv[i,n-i+1];

massiv[i,n-i+1]:=k;

End;

WriteLn;

WriteLn('Полученный массив:');

For i:=1 To n Do {вывод на экран полученного массива}

Begin

For j:=1 To n Do

Write(massiv[i,j]:5);

WriteLn;

End;

WriteLn;

End.

3.2. На языке Си:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <time.h>

Int main()

{

int i, j, n, m, massiv_min, massiv_max, temp;

time_t t; // текущее время для инициализации

// генератора случайных чисел

srand((unsigned) time(&t)); // инициализация генератора

// случайных чисел

printf("\nЛабораторная работа №6_2");

printf("\nВариант №0");

printf("\nПО-11-1");

printf("\nПупкин Василий\n");

printf("\nВведите нижнюю границу диапазона:");

scanf("%d", &massiv_min);

printf("\nВведите верхнюю границу диапазона:");

scanf("%d", &massiv_max);

printf("\nВведите размер массива:");

scanf("%d", &n);

int massiv[n][n];

printf("\nИсходный массив:\n");

m = massiv_max-massiv_min + 1;

for (i=0; i<n; i++)

{

// получение случайного числа в диапазоне

// от vector_min до vector_max

for (j=0; j<n; j++)

{

massiv[i][j]=rand()% m + massiv_min;

printf("%5d", massiv[i][j]);

}

printf("\n");

}

printf("\n");

for (i=0; i<n ; i++) //меняем местами соответствующие элементы

{ //главной и побочной диагоналей

temp = massiv[i][i];

massiv[i][i] = massiv[i][n-i-1];

massiv[i][n-i-1] = temp;

}

printf("\nВыходной массив:\n");

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

printf("%5d", massiv[i][j]);

printf("\n");

}

printf("\n");

return 0;

}

3.3. На языке Java:

package javaapplication6_2;

// Импорт библиотеки графических компонентов Swing

import javax.swing.*;

import java.util.*;

public class JavaApplication6_2 // задание нового класса

{

// описание главного метода main этого класса

public static void main(String[] args)

{

//описание переменных

int n, massiv_min, massiv_max, temp; // целого типа

Наши рекомендации