Информатика, программирование: Работа над массивами с помощью языка С++, Контрольная работа

Задание 1. Дан двумерный массив размерностью 5x6, заполненный целыми числами, введёнными с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца.

 

Входные данные:

matr[5][6] - двумерный массив.

Выходные данные:

mas[6] - одномерный массив.

 

Текст программы:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define N 5

#define M 6

void main(void)

{

int matr[N][M];

int mas[M];

int i,j;

do{

clrscr();

printf("Введите двумерный массив \n");

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

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

   {

   scanf("%d",&matr[i][j]);

                  }

printf("\n двумерный массив:\n");

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

{

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

      printf("%7d",matr[i][j]);

      printf("\n");

       }

printf("\n массив наибольших по модулю элементов:\n");

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

{

 mas[j]=matr[0][j];

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

     if(abs(matr[i][j])>abs(mas[j])) mas[j]=matr[i][j];

 printf("%7d",mas[j]);

               }

printf("\n\n1 - повторить");

 }while(getch()=='1');

}

Блок-схема:


Тестирование:

двумерный массив:

     1     -3      5     -7      0      0

     0      5      8     -9      3      0

     3      4     -8      4      3      0

    -4      3      0      7      3      0

     0      3      3      7      1      0

массив наибольших по модулю элементов:

    -4      5      8     -9      3      0

 

Задание 2. Дан двумерный массив n * m. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов.

Входные данные:

 

matr[n][m] - двумерный массив,

n, m - размер массива.

s[60] - строка.

Текст программы:

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main(void)

{

int i,j;

int n,m;

int matr[10][10];

int pol,otr;

char s[60];

do{

strcpy(s,0);

clrscr();

printf("Введите размер массива (n*m)\n");

scanf("%d %d",&n,&m);

printf("Введите массив\n");

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

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

      scanf("%d",&matr[i][j]);

printf("\nОпределить, есть ли в данном массиве столбец,\

в котором\nравное количество положительных и отрицательных элементов.\n");

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

 otr=0;

 pol=0;

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

 {

  if(matr[i][j]<0) ++otr;

  if(matr[i][j]>0) ++pol;

 }

 if(pol==otr) strcat(s,"  есть");

   else strcat(s,"   нет");

}

printf("\n");

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

{

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

 printf("%6d",matr[i][j]);

printf("\n");

printf("%s",s);

printf("\n\n1 - повторить");

 }while(getch()=='1');

}

Блок-схема:

 


 


Тестирование:

Определить, есть ли в данном массиве столбец, в котором

равное количество положительных и отрицательных элементов.

    0       1      -2       3       4

    0       2      -4       5      -8

    0       0       9      -7       0

    0      -3       4       0       0

 есть   нет  есть   нет  есть

Задание 3. Дан двумерный массив размерностью 8x7.

а). Удалить все столбцы, а которых первый элемент больше последнего.

б). Заменить все элементы первых трёх столбцов на их квадраты.

Входные данные:

 

matr[8][7] - двумерный массив.

Функции:

Print - вывод массив на экран.

Текст программы:

#include <stdio.h>

#include <conio.h>

#define N 8

#define M 7

void Print(int matr[][M],int m)

{

int i,j;

for(i=0;i<N;i++) {

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

      printf("%6d",matr[i][j]);

   printf("\n");

 }

}

void main(void)

{

int m;

int i,j;

int matr[N][M];

int r,t;

do{

m=M;

clrscr();

printf("Введите массив\n");

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

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

     scanf("%d",&matr[i][j]);

     }

clrscr();

printf(" массив\n");

Print(matr,m);

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

{

  if(matr[0][j]>matr[N-1][j])

  {

   for(t=0;t<N;t++)

      for(r=j;r<m-1;r++)

         matr[t][r]=matr[t][r+1];

   --m;

   --j;

  }

}

printf("а) .Удалить все столбцы, а которых первый элемент больше последнего.\n");

Print(matr,m);

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

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

  {

   matr[i][j]*=matr[i][j];

  }

printf("б). Заменить все элементы первых трёх столбцов на их квадраты.\n");

Print(matr,m);

printf("\n\n1 - повторить");

 }while(getch()=='1');

}

Блок-схема:


Функция Print


Тестирование:

массив

    1     2     3     4     5     6     7

   -8     0     5     5     4     4     5

    4     5     5     5     5     5     5

    5     5     5    -7     5     5     5

    9     4     4     5     0     5     3

    5     6     3     4     5     4     5

    6     7     8     9     0     4     8

   -4     5     9     0     9     9     0

а) .Удалить все столбцы, в которых первый элемент больше последнего.

    2     3     5     6

    0     5     4     4

    5     5     5     5

    5     5     5     5

    4     4     0     5

    6     3     5     4

    7     8     0     4

    5     9     9     9

б). Заменить все элементы первых трёх столбцов на их квадраты.

    4      9     25     6

    0     25    16     4

   25    25    25     5

   25    25    25     5

   16    16     0      5

   36     9     25     4

   49    64     0      4

   25    81    81     9


Еще из раздела Информатика, программирование:


 Это интересно
 Реклама
 Поиск рефератов
 
 Афоризм
Внимание! Прежде чем сесть на унитаз, внимательно посмотрите под крышку – там может затаиться «Активный утенок»!
 Гороскоп
Гороскопы
 Счётчики
bigmir)net TOP 100