Опубликован: 19.02.2009 | Доступ: свободный | Студентов: 3054 / 785 | Оценка: 4.35 / 4.11 | Длительность: 16:28:00
ISBN: 978-5-94774-401-9
Лекция 8:

Массивы

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >

Практикум

  1. Дана последовательность целых чисел.
    Замечание. Задачи из данного пункта решить двумя способами, используя одномерный массив, а затем двумерный. Размерность массива вводится с клавиатуры.
    1. Заменить все положительные элементы противоположными им числами.

      Пример 1: для одномерного массива

      using System;
      namespace ConsoleApplication2
      {
        class Class
        {
          static int [] Input ()
          {
            Console.WriteLine("введите размерность массива");
            int n=int.Parse(Console.ReadLine());
            int []a=new int[n];
            for (int i = 0; i < n; ++i) 
            {
              Console.Write("a[{0}]= ", i);
              a[i]=int.Parse(Console.ReadLine());
            }
            return a;
          }
      
          static void Print(int[] a) 
          {
            for (int i = 0; i < a.Length; ++i) Console.Write("{0} ", a[i]);
            Console.WriteLine();
          }
      
          static void Change(int[] a)
          {
            for (int i = 0; i < a.Length; ++i)
              if (a[i] > 0) a[i] = -a[i];
          }
      
          static void Main()
          {
            int[] myArray=Input();
      Console.WriteLine("Исходный массив:");
            Print(myArray);
            Change(myArray);
      Console.WriteLine("Измененный массив:");
            Print(myArray);
          }
        }
      }

      Пример 2: для двумерного массива

      using System;
      namespace ConsoleApplication
      {
        class Class
        {
          static int [,] Input (out int n, out int m)
          {
            Console.WriteLine("введите размерность массива");
            Console.Write("n = ");
            n=int.Parse(Console.ReadLine());
            Console.Write("m = ");
            m=int.Parse(Console.ReadLine());
            int [,]a=new int[n, m];
            for (int i = 0; i < n; ++i) 
              for (int j = 0; j < m; ++j)
              {
                Console.Write("a[{0},{1}]= ", i, j);
                a[i, j]=int.Parse(Console.ReadLine());
              }
            return a;
          }
      
          static void Print(int[,] a) 
          {
            for (int i = 0; i < a.GetLength(0); ++i,Console.WriteLine() )
              for (int j = 0; j < a.GetLength(1); ++j)
                Console.Write("{0,5} ", a[i, j]);
          }
      
          static void Change(int[,] a)
          {
            for (int i = 0; i < a.GetLength(0); ++i)
              for (int j = 0; j < a.GetLength(1); ++j)
                if (a[i, j] > 0) a[i, j] = -a[i, j];
          }
      
          static void Main()
          {
            int n,m;
            int[,] myArray=Input(out n, out m);
            Console.WriteLine("Исходный массив:");
            Print(myArray);
            Change(myArray);
            Console.WriteLine("Измененный массив:");
            Print(myArray);
          }
        }
      }
    2. Заменить все элементы, меньшие заданного числа, этим числом.
    3. Заменить все элементы, попадающие в интервал [a, b], нулем.
    4. Заменить все отрицательные элементы, не кратные 3, противоположными им числами.
    5. Все элементы, меньшие заданного числа, увеличить в два раза.
    6. Подсчитать среднее арифметическое элементов.
    7. Подсчитать среднее арифметическое отрицательных элементов.
    8. Подсчитать количество нечетных элементов.
    9. Подсчитать сумму элементов, попадающих в заданный интервал.
    10. Подсчитать сумму элементов, кратных 9.
    11. Подсчитать количество элементов, не попадающих в заданный интервал.
    12. Подсчитать сумму квадратов четных элементов.
    13. Вывести на экран номера всех элементов больших заданного числа.
    14. Вывести на экран номера всех нечетных элементов.
    15. Вывести на экран номера всех элементов, которые не делятся на 7.
    16. Вывести на экран номера всех элементов, не попадающих в заданный интервал.
    17. Определить, является ли произведение элементов трехзначным числом.
    18. Определить, является ли сумма элементов двухзначным числом.
    19. Вывести на экран элементы с четными индексами (для двумерного массива - сумма индексов должна быть четной).
    20. Вывести на экран положительные элементы с нечетными индексами (для двумерного массива - первый индекс должен быть нечетным).
  2. Дана последовательность из n действительных чисел.
    Замечание. Задачи из данного пункта решить, используя одномерный массив.
    1. Подсчитать количество максимальных элементов.

      Пример.

      using System;
      namespace ConsoleApplication
      {
        class Class
        {
          static int [] Input ()
          {
            Console.WriteLine("введите размерность массива");
            int n=int.Parse(Console.ReadLine());
            int []a=new int[n];
            for (int i = 0; i < n; ++i) 
            {
              Console.Write("a[{0}]= ", i);
              a[i]=int.Parse(Console.ReadLine());
            }
            return a;
          }
      
          static int Max(int[] a)
          {
            int max=a[0];
            for (int i = 1; i < a.Length; ++i)
              if (a[i] > max) max=a[i];
            return max;
          }
      
          static void Main()
          {
            int[] myArray=Input();
            int max=Max(myArray);
            int kol=0;
            for (int i=0; i<myArray.Length;++i)
              if (myArray[i]==max)++kol;
            Console.WriteLine("Количество максимальных элементов = "+kol);
          }
        }
      }
    2. Вывести на экран номера всех минимальных элементов.
    3. Заменить все максимальные элементы нулями.
    4. Заменить все минимальные элементы на противоположные.
    5. Поменять местами максимальный элемент и первый.
    6. Вывести на экран номера всех элементов, не совпадающих с максимальным.
    7. Найти номер первого минимального элемента.
    8. Найти номер последнего максимального элемента.
    9. Подсчитать сумму элементов, расположенных между максимальным и минимальным элементами (минимальный и максимальный элементы в массиве единственные). Если максимальный элемент встречается позже минимального, то выдать сообщение об этом.
    10. Найти номер первого максимального элемента.
    11. Найти номер последнего минимального элемента.
    12. Подсчитать сумму элементов, расположенных между первым максимальным и последним минимальными элементами. Если максимальный элемент встречается позже минимального, то выдать сообщение об этом.
    13. Поменять местами первый минимальный и последний максимальный элементы.
    14. Найти максимум из отрицательных элементов.
    15. Найти минимум из положительных элементов.
    16. Найти максимум из модулей элементов.
    17. Найти количество пар соседних элементов, разность между которыми равна заданному числу.
    18. Подсчитать количество элементов, значения которых больше значения предыдущего элемента.
    19. Найти количество пар соседних элементов, в которых предыдущий элемент кратен последующему.
    20. Найти количество пар соседних элементов, в которых предыдущий элемент меньше последующего.
  3. Дан массив размером nxn, элементы которого целые числа.
    Замечание. При решении задач из данного пункта использовать двумерный массив.
    1. Подсчитать среднее арифметическое нечетных элементов, расположенных выше главной диагонали.

      Пример.

      using System;
      namespace ConsoleApplication
      {
        class Class
        {
          static int [,] Input (out int n)
          {
            Console.WriteLine("введите размерность массива");
            Console.Write("n = ");
            n=int.Parse(Console.ReadLine());
            int [,]a=new int[n, n];
            for (int i = 0; i < n; ++i) 
              for (int j = 0; j < n; ++j)
              {
                Console.Write("a[{0},{1}]= ", i, j);
                a[i, j]=int.Parse(Console.ReadLine());
              }
            return a;
          }
      
          static void Print(int[,] a) 
          {
            for (int i = 0; i < a.GetLength(0); ++i,Console.WriteLine() )
              for (int j = 0; j < a.GetLength(1); ++j)
                Console.Write("{0,5} ", a[i, j]);
          }
      
          static double Rezalt(int[,] a)
          {
            int k=0;
            double s=0;
            for (int i = 0; i < a.GetLength(0); ++i)
              for (int j = i+1; j < a.GetLength(1); ++j)
                if (a[i, j] %2!= 0) {++k; s+=a[i, j];}
            if (k!=0) return s/k;
            else return 0;
          }
      
          static void Main()
          {
            int n;
            int[,] myArray=Input(out n);
            Console.WriteLine("Исходный массив:");
            Print(myArray);
            double rez=Rezalt(myArray);
            Console.WriteLine("Среднее арифметическое ={0:f2}", rez);
          }
        }
      }
    2. Подсчитать среднее арифметическое четных элементов, расположенных ниже главной диагонали.
    3. Подсчитать сумму элементов, расположенных на побочной диагонали.
    4. Подсчитать среднее арифметическое ненулевых элементов, расположенных над побочной диагональю.
    5. Подсчитать среднее арифметическое элементов, расположенных под побочной диагональю.
    6. Поменять местами столбцы по правилу: первый с последним, второй с предпоследним и т.д.
    7. Поменять местами две средних строки, если количество строк четное, и первую со средней строкой, если количество строк нечетное.
    8. Поменять местами два средних столбца, если количество столбцов четное, и первый со средним столбцом, если количество столбцов нечетное.
    9. Если количество строк в массиве четное, то поменять строки местами по правилу: первую строку со второй, третью - с четвертой и т.д. Если количество строк в массиве нечетное, то оставить массив без изменений.
    10. Если количество столбцов в массиве четное, то поменять столбцы местами по правилу: первый столбец со вторым, третий - с четвертым и т.д. Если количество столбцов в массиве нечетное, то оставить массив без изменений.
    11. Вычислить А^{n}, где n - натуральное число.
    12. Подсчитать норму матрицы по формуле
      ||A||=\sum_{i}{\max_j{a_{i,j}}}.
    13. Подсчитать норму матрицы по формуле
      ||A||=\sum_{j}^{}{\max_i{a_{i,j}}}.
    14. Вывести элементы матрицы в следующем порядке:08_03
    15. Выяснить, является ли матрица симметричной относительно главной диагонали.
    16. Заполнить матрицу числами от 1 до n (где n=m \times k, а m - количесто строк, а k - количество столбцов прямоугольной матрицы) следующим образом:

      08_04

    17. Определить, есть ли в данном массиве строка, состоящая только из положительных элементов.
    18. Определить, есть ли в данном массиве столбец, состоящий только из отрицательных элементов.
    19. В каждой строке найти максимум и заменить его на противоположный элемент.
    20. В каждом столбце найти минимум и заменить его нулем.
  4. Дан массив размером nxn, элементы которого целые числа.
    Замечание. Для хранения массив n?n использовать ступенчатый массив.
    1. Найти максимальный элемент в каждой строке и записать данные в новый массив.

      Пример

      using System;
      namespace ConsoleApplication
      {
        class Class
        {
          static int [][] Input ()
          {
            Console.WriteLine("введите размерность массива");
            Console.Write("n = ");
            int n=int.Parse(Console.ReadLine());
            int [][]a=new int[n][];
            for (int i = 0; i < n; ++i)
            {
              a[i]=new int [n];
              for (int j = 0; j < n; ++j)
              {
                Console.Write("a[{0},{1}]= ", i, j);
                a[i][j]=int.Parse(Console.ReadLine());
              }
            }
            return a;
          }
      
          static void Print1(int[] a) 
          {
            for (int i = 0; i < a.Length; ++i)
              Console.Write("{0,5} ", a[i]);
          }
      
          static void Print2(int[][] a) 
          {
            for (int i = 0; i < a.Length; ++i,Console.WriteLine() )
              for (int j = 0; j < a[i].Length; ++j)
                Console.Write("{0,5} ", a[i][j]);
          }
      
          static int Max(int[] a)
          {
            int max=a[0];
            for (int i = 1; i < a.Length; ++i)
              
              if (a[i] >max) {max=a[i];}
            return max;
          }
      
          static void Main()
          {
            int[][] myArray=Input();
            Console.WriteLine("Исходный массив:");
            Print2(myArray);
            int[]rez=new int [myArray.Length];
            for (int i=0;i<myArray.Length; ++i)
              rez[i]=Max(myArray[i]);
            Console.WriteLine("Новый массив:");
            Print1(rez);
          }
        }
      }
    2. Найти минимальный элемент в каждом столбце и записать данные в новый массив.
    3. Четные столбцы таблицы заменить на вектор Х.
    4. Нечетные строки таблицы заменить на вектор Х.
    5. Вычислить А*Х, где А - двумерная матрица, X - вектор.
    6. Для каждой строки подсчитать количество положительных элементов и записать данные в новый массив.
    7. Для каждого столбца подсчитать сумму отрицательных элементов и записать данные в новый массив.
    8. Для каждого столбца подсчитать сумму четных положительных элементов и записать данные в новый массив.
    9. Для каждой строки подсчитать количество элементов, больших заданного числа, и записать данные в новый массив.
    10. Для каждого столбца найти первый положительный элемент и записать данные в новый массив.
    11. Для каждой строки найти последний четный элемент и записать данные в новый массив.
    12. Для каждого столбца найти номер последнего нечетного элемента и записать данные в новый массив.
    13. Для каждой строки найти номер первого отрицательного элемента и записать данные в новый массив.
    14. Для каждой строки найти сумму элементов с номерами от k1 до k2 и записать данные в новый массив.
    15. Для каждого столбца найти произведение элементов с номерами от k1 до k2 и записать данные в новый массив.
    16. Для каждой строки подсчитать сумму элементов, не попадающих в заданный интервал, и записать данные в новый массив.
    17. Подсчитать сумму элементов каждой строки и записать данные в новый массив. Найти максимальный элемент нового массива.
    18. Подсчитать произведение элементов каждого столбца и записать данные в новый массив. Найти минимальный элемент нового массива.
    19. Для каждой строки найти номер первой пары неравных элементов. Данные записать в новый массив.
    20. Для каждого столбца найти номер первой пары одинаковых элементов. Данные записать в новый массив.
< Лекция 7 || Лекция 8: 123456 || Лекция 9 >