Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методич. указания по выполнению лабораторных работ.doc
Скачиваний:
40
Добавлен:
27.03.2016
Размер:
5.32 Mб
Скачать

Вариант 14

Задание 1

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

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

a*twob0fivecd -onedc&tnine19a –sixl sb3> 3-5 z

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

2

5

1

9

6

Задание 2

Строка состоит из натуральных чисел, разделенных пробелом. Определить цифры, не входящие ни в одно их этих чисел.

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

512 256 32 1024 128 16

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

7

9

Вариант 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. Схема алгоритма решения задачи:

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

    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.

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

#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;

}

    1. На языке Java:

package javaapplication6_1;

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

import javax.swing.*;

import java.util.*;

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

{

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

public static void main(String[] args)

{

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

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