Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-й семестр / Лаб.работы / Мет.ук. к л.р.3.doc
Скачиваний:
68
Добавлен:
12.03.2016
Размер:
1.05 Mб
Скачать

Пример 2

Имеется информация о баллах, полученных спортсменами-пятиборцами в каждом из пяти видов спорта. Общее число спортсменов равно N. Необходимо занести эту информацию в двумерный массив (в первую строку – информацию о баллах первого спортсмена, во вторую – второго и т. д.) и упорядочить строки полученной матрицы по возрастанию общей суммы баллов, набранных каждым спортсменом.

В листинге 2 представлена программа для решения описанной задачи. Для создания программы использовалась среда разработки NetBeans IDE 8.0. На рисунке 3 показан состав проекта программы.

Рисунок 3 – Состав проекта программы

Создание проекта в NetBeans: Файл -> Создать проект -> Java -> Приложение Java.

Компиляция, сборка и выполнение проекта: Выполнить -> Запустить проект.

На рисунке 4 показан результат выполнения программы.

Листинг 2

package primer2;

import java.util.Scanner;

public class Primer2 {

public static void main (String [] args)

{ int n; int[] sum; int i, j;

Scanner in = new Scanner(System.in);

System.out.print("Укажите колличество стортсменов - пятиборцев: ");

n = in.nextInt();

System.out.println("Введите баллы каждого из " + n + " спортсменов - пятиборцев:");

int[][] a = new int [n][5];

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

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

a[i][j] = in.nextInt();

sum = new int [n];

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

{ sum[i] = 0;

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

sum[i] += a[i][j];

}

System.out.println();

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

{ for (j = 0;j < 5; j++)

System.out.print(a[i][j] + " ");

System.out.print("| " + sum[i]);

System.out.println();

}

//Сортировка

int buf_sum; int nmin, buf_a;

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

{ nmin = i;

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

if (sum[j] < sum[nmin])

nmin = j;

buf_sum = sum[i];

sum[i] = sum[nmin]; sum[nmin] = buf_sum;

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

{ buf_a = a[i][j];

a[i][j] = a[nmin][j];

a[nmin][j] = buf_a;

}

}

System.out.println();

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

{ for (j = 0;j < 5; j++)

System.out.print(a[i][j] + " ");

System.out.print("| " + sum[i]);

System.out.println();

}

}

}

Рисунок 4 – Результат выполнения программы

Задание 3

Создать программу на языке C#, реализующую алгоритм решения задачи индивидуального варианта.

Индивидуальные варианты:

Вариант 21

Вариант 22

Вариант 23

Вариант 24

Вариант 25

Вариант 26

Пример 3

В листинге 3 представлена программа, в которой нормируется матрица действительных чисел, т.е. каждый элемент матрицы делится на максимальное по модулю число матрицы. Строки полученной матрицы сортируются по возрастанию первых элементов строк.

Для сортировки строк матрицы используется сортировка методом выбора. Он состоит в том, что из массива выбирается наименьший элемент и меняется местами с первым элементом, затем рассматриваются элементы, начиная со второго, и наименьший из них меняется местами со вторым элементом и так далее n-1 раз (при последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива). Одновременно с обменом элементов массива выполняется и обмен значений двух соответствующих строк матрицы.

Для создания программы использовалась среда разработки MS Visual C# 2010 Express.

Создание проекта в MS Visual C# 2010 Express: Файл -> Создать проект -> Консольное приложение.

Компиляция, сборка и выполнение проекта: Отладка -> Начать отладку (F5).

На рисунке 5 показан результат выполнения программы.

Листинг 3

using System;

namespace ConsoleApplication1

{

class Program

{

public static void Main(string[] args)

{

Console.Write("n= ");

int n = int.Parse(Console.ReadLine());

Console.Write("m= ");

int m = int.Parse(Console.ReadLine());

double[,] a = new double[n, m];

for (int i = 0; i < a.GetLength(0); i++)

{

for (int j = 0; j < a.GetLength(1); j++)

{

Console.Write("a[{0},{1}]= ", i, j);

a[i, j] = int.Parse(Console.ReadLine());

}

}

Console.WriteLine("Исходная матрица: ", n, m);

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

{

for (int j = 0; j < m; j++)

Console.Write("{0: 0.00} ", a[i, j]);

Console.WriteLine();

}

double max = Math.Abs(a[0, 0]);

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

for (int j = 0; j < m; j++)

if (Math.Abs(a[i, j]) > max)

max = Math.Abs(a[i, j]);

Console.WriteLine("max = {0}", max);

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

for (int j = 0; j < m; j++)

a[i, j] /= max;

Console.WriteLine("Mатрица после нормирования:");

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

{

for (int j = 0; j < m; j++)

Console.Write("{0: 0.00} ",a[i, j]);

Console.WriteLine();

}

double [] s = new double [n];

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

s[i] = a[i, 0];

//сортировка

double buf_s; int nmin; double buf_a;

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

{

nmin = i;

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

if (s[j] < s[nmin])

nmin = j;

buf_s = s[i];

s[i] = s[nmin]; s[nmin] = buf_s;

for (int j = 0; j < m; j++)

{

buf_a = a[i,j];

a[i,j] = a[nmin,j];

a[nmin,j] = buf_a;

}

}

Console.WriteLine("Mатрица после сортировки:");

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

{

for (int j = 0; j < m; j++)

Console.Write("{0: 0.00} ", a[i, j]);

Console.WriteLine();

}

Console.Write("Press any key to continue . . . ");

Console.ReadKey(true);

}

}

}

Рисунок 5 – Результат выполнения программы

14

Соседние файлы в папке Лаб.работы