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

Работа над массивами с помощью языка С++

Задание 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("nn1 - повторить");


 }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("nn1 - повторить");


 }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("nn1 - повторить");


 }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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:678
Символов:8360
Размер:16.33 Кб.