Хелпикс

Главная

Контакты

Случайная статья





Практическая часть



Практическая часть

Пример 1. Создать одномерный динамический массив из n элементов и удалить из него те элементы, значения которых совпадут с первым элементом массива. Первый элемент массива оставить без изменения.

Программный код решения примера:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

int main(void)

 

{

 float *p, *p1=NULL, d;

int i, n, j, col=0;

printf("\n input n:");// запрашиваем количество элементов в массиве

scanf("%d",&n);

 

p=(float *)malloc(n*sizeof(float));// выделяем память по массив

//проверяем была ли выделена область памяти нужного размера

if (!p)

   {

   printf("Out of memory. Press any key: ");

   _getch();

   return 1;

   }

 

// заполняем элементы массива

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

{printf("x[%d]=",i);

scanf("%f",p+i);

}

// выводим на экран исходный массив

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

printf("p[%d]=%6.2f ",i+1,*(p+i));

 

// удаляем те элементы массива, значения которых совпали с первым

for (i=n-1;i>=0;i--)

 if (*p!=*(p+i)||i=0)

 {

col++;

  p1=(float*) realloc (p1, col * sizeof(float));

for(j=col-1;j>0;j--)

  *(p1+j)=*(p1+j-1);

*p1=*(p+i);

if (i) p=(float*) realloc (p, (n-col) * sizeof(float));

     else free(p);

}

// выводим на экран массив после удаления элементов

p=p1;

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

printf("p[%d]=%6.2f",i+1,*(p+i));

// освобождаем память

free(p);

getch();

return 0;

}

Пример 2.Составить программу, создающую динамическую матрицу размером n*n, заполнить матрицу случайными числами. Вычислить сумму каждой строки и поместить суммы строк в одномерный динамический массив.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <alloc.h>

int main(void)

{

int n,j,i;

float ** matr; float * mass; /*Объявляем matr - указатель на массив

указателей и mass – указатель на одномерный массив*/

clrscr();// очищаем экран

printf("Введите размер квадратной матрицы n: ");

 scanf("%d",&n);

 

// Выделяем память под одномерный массив

mass=(float *)malloc(n*sizeof(float ));

if (mass==NULL)

{

puts("не создан динамический массив!");

return 1;

}

 

 matr=(float **)malloc(sizeof(float *)*n); //Выделяем память под массив указателей

if (matr==NULL)

{

puts("не создан динамический массив!");

return 1;

}

randomize();

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

{

// Выделяем память под i-ю строку двумерного массива.

matr[i]=(float *)malloc(sizeof(float)*n);

if (matr[i]==NULL)

{

puts("не создан динамический массив!");

return 1;

}

 for (j=0;j<n;j++) matr[i][j]=random(100);

}

 

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

{

 mass[i]=0;

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

  mass[i]+=matr[i][j];

}

 

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

   {

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

         printf("\t%6.2f",matr[i][j]);

      printf("\n");

}

 

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

printf("\n сумма %d строки %8.2f",i,mass[i]);

 

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

    free(matr[i]); //Освобождаем память i – й строки

 

free(matr); // Освобождаем память массива указателей

 

free(mass); // Освобождаем память массива сумм

 

_getch();

return 0;

 }

Доступ к i-му элементу одномерного массива arr осуществляется с указанием одного индексного выражения в форме arr[i] или *(arr+i).

Для доступа к элементу двумерного массива mas, находящемся в i-ой строке и в j-м столбце, могут  быть использованы следующие выражения:

  • mas[i][j]:
  • *(*(arr+i)+j)
  • (*(arr+i))[j]

Используя замечания по поводу доступа к элементам массивов, перепишем программу для примера 2, через указатели:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <alloc.h>

int main(void)

{

int n,j,i;

float ** matr; float * mass; /*Объявляем matr - указатель на массив

указателей и mass – указатель на одномерный массив*/

clrscr();// очищаем экран

printf("Введите размер квадратной матрицы n: ");

scanf("%d",&n);

 

// Выделяем память под одномерный массив

mass=(float *)malloc(n*sizeof(float ));

if (mass==NULL)

{

puts("не создан динамический массив!");

return 1;

}

 

matr=(float **)malloc(sizeof(float *)*n); //Выделяем память под массив указателей

if (matr==NULL)

{

puts("не создан динамический массив!");

return 1;

}

randomize();

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

{

// Выделяем память под i-ю строку двумерного массива.

*(matr+i)=(float *)malloc(sizeof(float)*n);

if (*(matr+i)==NULL)

{

puts("не создан динамический массив!");

return 1;

}

 for (j=0;j<n;j++) *(*(matr+i)+j)=random(100);

}

 

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

{

 *(mass+i)=0;

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

  *(mass+i)+=*(*(matr+i)+j);

}

 

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

{

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

       printf("\t%6.2f",*(*(matr+i)+j));

   printf("\n");

}

 

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

    printf("\n сумма %d строки %8.2f",i,*(mass+i));

 

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

    free(*(matr+i)); //Освобождаем память i – й строки

 

free(matr); // Освобождаем память массива указателей

 

free(mass); // Освобождаем память массива сумм

 

_getch();

return 0;

 }

Пример 3.Вводится последовательность целых чисел заканчивающаяся 0. Вывести ее на экран.

#include <stdio.h>

#include <stdlib>

 

int main(void)

{

int input;

int counter = 0; // счетчик введенных чисел

int * values = NULL; // переменная для создания динамического массива

int * many_numbers;

 

do {

printf("Введите целое значение (0 - выход): ");

scanf("%d",&input);

counter++;

 

// при добавлении нового числа, увеличиваем массив на 1

many_numbers = (int*) realloc (values, counter * sizeof(int));

 

if (many_numbers != NULL)

{

  values = many_numbers;

  // добавить к массиву только что введённое число

  values[counter - 1] = input;

}

else

{

  free (values);      // удалить массив

  printf("Ошибка перевыделения памяти!";)

  return 1;        // завершить работу программы

}

} while (input != 0); // пока не введён 0

 

printf("Введенные числа: ");

for (int ix = 0; ix < counter; ix++) std::cout << values[ix] << " ";

free (values);                                    // удалить массив

 

return 0;

}

 

Пример 4.Написать фрагмент программы, удаляющий в матрице, рассмотренной в примере 2 третью строку (считаем, что n>2), выводит новую матрицу на экран, а затем освобождает память от данных .

// удаляем третью строку

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

matr[i]=matr[i+1];

free(matr[n-1]);

matr=(float**) realloc(matr, sizeof(float *)*(n-1));

 

// выводим матрицу на экран

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

{

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

       printf("\t%6.2f",matr[i][j]);

   printf("\n");

}

 

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

    free(matr[i]); //Освобождаем память i – й строки

 

free(matr); // Освобождаем память массива указателей

 

 

Контрольные вопросы

  1. Что такое динамическая память?
  2. Какие средства языка С используются для хранения данных с динамическим выделением памяти компьютера?
  3. Какие основные библиотечные функции языка С используются для динамического распределения памяти?
  4. Какое различие в действии функций malloc() и calloc()?
  5. Как осуществляется перераспределение динамической памяти?
  6. Для каких типов данных возможно динамическое распределение памяти?

 

Задание.

Вариант 1.

Задание 1.  

Определите и инициализируйте переменную X типа double. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.  

Заменить все положительные элементы целочисленного массива, состоящего из n элементов, на значение минимального.

Задание 3.

Дана матрица размера n×n. После каждой строки, в которой первый или последний элементы имеют заданное значение k, вставить новую строку и заполнить ее нулевыми элементами.

Вариант 2.

Задание 1.  

В программе определите и инициализируйте переменную X типа double, указатель double * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указателей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выражения *&имя_переменной.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.

Задание 3.

Дана матрица размера n×n. Удалить из него строки, в которых первый или последний элементы имеют заданное значение k.

Вариант 3.

Задание 1.  

Определите и инициализируйте переменную X типа int. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Преобразовать массив, увеличив первую серию наибольшей длины на один элемент.

Задание 3.

Дана квадратная матрица порядка 2n+1. Зеркально отразить ее элементы относительно вертикальной оси симметрии матрицы.

Вариант 4.

Задание 1.  

В программе определите и инициализируйте переменную X типа int, указатель int * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

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

Задание 3.

Дана матрица размера n×n. Все строки циклически сдвинуть на k позиций вниз.

Вариант 5.

Задание 1.  

Определите и инициализируйте переменную X типа char. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Вставить перед каждой серией минимальный элемент массива.

Задание 3.

Дана матрица размера n×n. После каждого столбца, все элементы которого положительные, добавить новый столбец и заполнить его нулевыми значениями.

Вариант 6.

Задание 1.  

В программе определите и инициализируйте переменную X типа char, указатель char * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

Дан массив, состоящий из n элементов. Преобразовать его, вставив перед каждым положительным элементом минимальный элемент.

Задание 3.

Дана матрица размера n×n. После каждой строки, все элементы которой положительные, добавить новую строку и заполнить ее нулевыми значениями.

Вариант 7.

Задание 1.  

Определите и инициализируйте переменную X типа double. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.  

Дан целочисленный массив, состоящий из n элементов. Удалить из массива все элементы, встречающиеся менее двух раз.

Задание 3.

Дана матрица размера n×n. Удалить из него строки, в которых первый и последний элементы одинаковые.

Вариант 8.

Задание 1.  

В программе определите и инициализируйте переменную X типа double, указатель double * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.   

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

Задание 3.  

Дана матрица размера n×n. Удалить из него строки, в которых первый элемент положительный.

Вариант 9.

Задание 1.  

Определите и инициализируйте переменную X типа int. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Заменить все отрицательные элементы этого массива, на значение максимального.

Задание 3.  

Дана матрица размера n×n. Удалить из него строки, имеющие отрицательные элементы.

Вариант 10.

Задание 1.  

В программе определите и инициализируйте переменную X типа int, указатель int * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Удалить из массива все серии, длина которых меньше k.

Задание 3.

Дана матрица размера n×n. Удалить из него строки, имеющие наименьшую сумму элементов.

Вариант 11.

Задание 1.  

Определите и инициализируйте переменную X типа char. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Удалить из массива все элементы, встречающиеся более двух раз.

Задание 3.

Дана матрица размера n×n. Удалить из него все столбцы, в которых встречается заданное число.

Вариант 12.

Задание 1.  

В программе определите и инициализируйте переменную X типа char, указатель char * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

Дан массив, состоящий из n элементов. Преобразовать его, вставив после каждого отрицательного элемента минимальный элемент.

Задание 3.  

Дана матрица размера n×m. Поменять местами ее первый и последний столбцы, содержащие только положительные элементы.

Вариант 13.

Задание 1.  

Определите и инициализируйте переменную X типа double. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.   

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

Задание 3.  

Дана квадратная матрица порядка 2n+1. Зеркально отразить ее элементы относительно главной диагонали матрицы.

Вариант 14.

Задание 1.  

В программе определите и инициализируйте переменную X типа double, указатель double * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Поменять местами наименьшую последнюю и k -ю серии массива. Если таких серий в массиве меньше k, то вывести массив без изменений.

Задание 3.  

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

Вариант 15.

Задание 1.  

Определите и инициализируйте переменную X типа int. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.  

Заменить все положительные элементы целочисленного массива, состоящего из n элементов, на значение максимального.

Задание 3.  

Дана матрица размера n×m. Поменять местами строки, содержащие минимальный и максимальный элементы матрицы.

Вариант 16.

Задание 1.  

В программе определите и инициализируйте переменную X типа int, указатель int * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Удалить из массива все серии, длина которых больше k. Если таких серий нет, то массив оставить без изменений.

Задание 3.  

Дана квадратная матрица порядка 2n+1. Зеркально отразить ее элементы относительно вертикальной оси симметрии матрицы.

Вариант 17.

Задание 1.  

Определите и инициализируйте переменную X типа char. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.

Дан целочисленный массив, состоящий из n элементов. Удалить из массива все элементы, встречающиеся ровно два раза.

Задание 3.  

Дана матрица размера n×m. Поменять местами ее столбцы так, чтобы их минимальные элементы образовывали возрастающую последовательность.

Вариант 18.

Задание 1.  

В программе определите и инициализируйте переменную X типа char, указатель char * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

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

Задание 3.

Дана целочисленная матрица размера n×m. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.

Вариант 19.

Задание 1.  

Определите и инициализируйте переменную X типа double. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Преобразовать его, вставив перед каждым отрицательным элементом максимальный элемент.

Задание 3.  

Дана матрица размера n×m. Поменять местами ее первый и последний строки, содержащие только отрицательные элементы.

Вариант 20.

Задание 1.  

В программе определите и инициализируйте переменную X типа double, указатель double * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Преобразовать массив, уменьшив каждую его серию на один элемент.

Задание 3.  

Дана квадратная матрица порядка 2n+1. Зеркально отразить ее элементы относительно побочной диагонали матрицы.

Вариант 21.

Задание 1.  

Определите и инициализируйте переменную X типа int. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.

Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Вставить после каждой серии максимальный элемент массива.

Задание 3.

В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент. Получить квадратную матрицу порядка n-1 путем выбрасывания из исходной матрицы какой-нибудь строки и столбца, на пересечении которых расположен элемент с найденным значением. Выполняйте до тех пор, пока не останется последний элемент.

Вариант 22.

Задание 1.  

В программе определите и инициализируйте переменную X типа int, указатель int * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Преобразовать его, вставив после каждого положительного элемента максимальный элемент.

Задание 3.

Дана матрица размера n×m. Поменять местами ее строки так, чтобы их максимальные элементы образовывали возрастающую последовательность.

Вариант 23.

Задание 1.  

Определите и инициализируйте переменную X типа char. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.

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

Задание 3.

Дана матрица размера n×m. Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы.

Вариант 24.

Задание 1.  

В программе определите и инициализируйте переменную X типа char, указатель char * и указатель типа void *. Присвойте указателям адрес переменной X. Напечатайте адрес переменной, значения указателей и значения, получаемые при разыменовании указа-телей. Чтобы продемонстрировать роли и последовательность выполнения унарных операций получения адреса & и разыменования *, выведите на печать значение выра-жения *&имя_переменной.

Задание 2.  

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Поменять местами первую и последнюю серии наибольшей длины. Если серия с максимальной длиной единственная, то массив не изменять.

Задание 3.  

Дана матрица размера n×m. Поменять местами ее столбцы так, чтобы их максимальные элементы образовывали убывающую последовательность.

Вариант 25.

Задание 1.  

Определите и инициализируйте переменную X типа double. Определите указатели char *, int *, double *, void *, инициализируйте их адресом переменной X. Напечатайте значения указателей, их размеры и длины участков памяти, которые связаны с выражениями, разыменовывающими указатели.

Задание 2.

Формируется массив, элементами которого является числовая последовательность, заканчивающаяся 0. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1). Переставить первую серию минимальной длины с последней серией максимальной длины. Если максимальная длина равна минимальной, то меняются первые и последние серии.

Задание 3.  

Дана квадратная матрица порядка 2n+1. Зеркально отразить ее элементы относительно горизонтальной оси симметрии матрицы.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.