Опубликован: 01.11.2011 | Доступ: свободный | Студентов: 1424 / 63 | Оценка: 3.84 / 3.44 | Длительность: 15:38:00
Специальности: Программист
Теги:
Практическая работа 2:
Основные структуры данных C#
Упражнение 6.6. Вывод на экран двумерного массива (Герберт Шилдт)
Создаем новое консольное приложение C#. Называем проект practice_2_6.
Наберите в окне кода следующую программу:
using System; class arraySort { static void print(int[][] alpha) { // Отображаем элементы массива for (int i = 0; i < alpha.Length; i++) { for (int j = 0; j < alpha[i].Length; j++) { System.Console.Write("{0}{1}", alpha[i][j], j == (alpha[i].Length - 1) ? "" : " "); } System.Console.WriteLine(); } } static void Main() { int[][] alpha = new int[4][]; alpha[0] = new int[4] { 1, 2, 3, 4 }; alpha[1] = new int[4] { 5, 6, 7, 8 }; alpha[2] = new int[4] { 9, 10, 11, 12 }; alpha[3] = new int[4] { 13, 14, 15, 16 }; print(alpha); System.Console.WriteLine("Нажмите любую кнопку!"); System.Console.ReadKey(); } }
Получаем следующий результат:
Упражнение 6.7. Массивы в качестве выходных параметров функций
Создаем новое консольное приложение C#. Называем проект practice_2_7.
Наберите в окне кода следующую программу:
using System; class ArraySort { static void print(int[] alpha) { foreach (int i in alpha) Console.WriteLine(i + " "); Console.WriteLine(); } static void FillArray(out int[] alpha) { // Создаем массив alpha = new int[5] { 1, 2, 3, 4, 5 }; } static void Main() { int[] alpha; // Не требуется инициализация // Заполняем массив FillArray(out alpha); // Отображаем элементы массива System.Console.WriteLine("Отображаем элементы массива:"); print(alpha); System.Console.WriteLine("Нажмите любую кнопку!"); System.Console.ReadKey(); } }
Получаем следующий результат:
Упражнение 6.8. Определение факторов геометрического снижения точности ГЛОНАСС
Создаем новое консольное приложение C#. Называем проект practice_2_8.
Наберите в окне кода следующую программу:
using System; class arraySort { static void print(double[,] alpha) { int ArraySize = 4; for (int i = 0; i < ArraySize; i++) { for (int j = 0; j < ArraySize; j++) { Console.Write("{0}{1}", alpha[i, j], j == (ArraySize - 1) ? "" : " "); } Console.WriteLine(); } } static void transpositiong(double[,] alpha) { int ArraySize = 4; double x; for (int i = 0; i < ArraySize - 1; i++) for (int j = i + 1; j < ArraySize; j++) { x = alpha[i, j]; alpha[i, j] = alpha[j, i]; alpha[j, i] = x; } } static void multiplying(double[,] a, double[,] b, double[,] M) { int ArraySize = 4; int irow, icol, k; double sum; for (irow = 0; irow < ArraySize; irow++) for (icol = 0; icol < ArraySize; icol++) { sum = 0; for (k = 0; k < ArraySize; k++) { sum += a[irow, k] * b[k, icol]; } M[irow, icol] = sum; } } //////////////////////////////////////////////////// //Обращение квадратной матрицы методом Жордана-Гаусса //////////////////////////////////////////////////// static void inversion(double[,] alpha) { int col, lin; col = 100; lin = 100; int i, j, k, t, s; double b, c; int ArraySize = 4; //long double a[col][lin]; double[,] a = new double[col, lin]; for (i = 0; i < ArraySize; i++) { for (j = 0; j < ArraySize; j++) { a[i, j] = alpha[i, j]; a[i, ArraySize + j] = 0; } a[i, ArraySize + i] = 1; } for (s = 0; s < ArraySize; s++) { for (t = s; t < ArraySize; t++) { if (a[t, s] != 0) goto beta; } Console.WriteLine("Действительных корней нет!"); // exit(1); beta: for (j = 0; j < 2 * ArraySize; j++) { b = a[s, j]; a[s, j] = a[t, j]; a[t, j] = b; } c = 1 / a[s, s]; for (j = 0; j < 2 * ArraySize; j++) { a[s, j] *= c; } for (t = 0; t < ArraySize; t++) { if (t == s) goto teta; c = -a[t, s]; for (j = 0; j < 2 * ArraySize; j++) { a[t, j] += c * a[s, j]; } teta: ; } } for (i = 0; i < ArraySize; i++) { for (j = 0; j < ArraySize; j++) { a[i, j] = alpha[i, j]; } } Console.WriteLine("\nОбращенная матрица .... "); for (i = 0; i < ArraySize; i++) { Console.WriteLine(); //cout.precision(3); //Два десятичных разряда for (j = ArraySize; j < 2 * ArraySize; j++) { Console.Write("{0}{1}", a[i, j], j == (ArraySize - 1) ? "" : " "); } } double dx, dy, dz, dt; dx = a[0, 4]; dy = a[1, 5]; dz = a[2, 6]; dt = a[3, 7]; Console.WriteLine(); Console.WriteLine("\ndx = " + dx + "\ndy = " + dy + "\ndz = " + dz + "\ndt = " + dt); double tdop = Math.Sqrt(dt); double vdop = Math.Sqrt(dz); double hdop = Math.Sqrt(dx + dy); double pdop = Math.Sqrt(dx + dy + dz); double gdop = Math.Sqrt(dx + dy + dz + dt); Console.WriteLine("\ngdop = " + gdop + "\npdop = " + pdop + "\nhdop = " + hdop + "\nvdop = " + vdop + "\ntdop = " + tdop); Console.WriteLine(); Console.WriteLine("Проверяем результат ... "); for (i = 0; i < ArraySize; i++) { Console.WriteLine(); for (j = 0; j < ArraySize; j++) { c = 0; for (k = 0; k < ArraySize; k++) { c += a[i, k] * a[k, j + ArraySize]; } Console.Write("\t" + c); } } Console.WriteLine(); } static void Main() { double[,] A = new double[,] { { 0.0, 0.996, 0.087, 1.0 }, { 0.863, -0.498, 0.087, 1.0 }, { -0.863, -0.498, 0.087, 1.0 }, { 0.0, 0.0, 1.00, 1.0 } }; Console.WriteLine("Исходная матрица ... "); print(A); double[,] T = new double[4, 4]; Array.Copy(A, T, 16); Console.WriteLine("Транспонирование ... "); transpositiong(T); print(T); double[,] M = new double[4, 4]; multiplying(T, A, M); Console.WriteLine("Перемножаем матрицы ... "); print(M); double[,] I = new double[4, 4]; Array.Copy(M, I, 16); inversion(I); //print(I); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } }Листинг .
Получаем следующий результат: