Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы - Паскаль, Си, Java, PHP.doc
Скачиваний:
65
Добавлен:
04.06.2015
Размер:
5.29 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)

{

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

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