Замечание. Вряд ли вы получите равенство массивов при заполнении массивов случайными числами. Замените соответствующую функцию заполнением с клавиатуры. — КиберПедия 

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Замечание. Вряд ли вы получите равенство массивов при заполнении массивов случайными числами. Замените соответствующую функцию заполнением с клавиатуры.

2017-11-17 203
Замечание. Вряд ли вы получите равенство массивов при заполнении массивов случайными числами. Замените соответствующую функцию заполнением с клавиатуры. 0.00 из 5.00 0 оценок
Заказать работу

 

Задача 2

 

Создать массив-результат из исходного путем перезаписи всех положительных чисел

Память под массив-результат выделить в вызывающей функции.

Выделяем функции проекта:

1. Функция заполнения случайными числами

2. Ф-я вывода массива на экран

3. Ф-я создания нового массива

 

3/

 

1. OtrOut

2. Исходные данные

а) исходный массив

int*p1;

int n;

 

массив результат

int*p2;

int n;

 

3. Результат (количество в массиве результате) => int

 

Файл: mas1.h

 

#ifndef MAS1_H

#define MAS1_H

 

void InMasRnd(int *p, int n, int min, int max);

void OutMas(int *p, int n);

int OtrOut(int *p1, int *p2, int n);

 

#endif

 

Файл: mas1.cpp

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include <stdlib.h>

#include <time.h>

 

void InMasRnd(int *p, int n, int min, int max)

{

int i;

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

p[i]=rand()%(max-min+1)+min;

return;

}

 

void OutMas(int *p, int n)

{

int i;

cout << endl;

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

cout << p[i] << " | ";

return;

}

 

int OtrOut(int *p1, int *p2, int n)

{

int i, j=0;

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

if (p1[i] > 0) {

p2[j]=p1[i];

j++;

}

}

return j;

}

 

 

Файл: main.cpp

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include <stdlib.h>

#include <time.h>

#include "mas1.h"

 

int main(void)

{

const int N=5;

int mas1[N], mas2[N], z;

srand((unsigned)time(NULL));

InMasRnd(mas1,N,-5,10);

cout << "\nПервый массив:";

OutMas(mas1,N);

z = OtrOut(mas1,mas2,N);

cout << "\nВторой массив:";

OutMas(mas2,z);

return 0;

}

 

Функции и двумерные массивы

 

Любой двумерный массив определяется тремя параметрами:

· Адресом первого элемента в массиве int *p.

· Количество строк в матрице int n.

· Количество столбцов в матрице int m.

При этом определение адреса элемента массива с индексами i,j будет производится по формуле p+i*m+j. Для организации вызова функции (main) необходимо уметь определить адрес первого элемента в массиве.

Если память под массив выделена статически: int mas [3][4]; то mas [0] – адрес первого элемента в массиве.

Если память под двумерный массив выделена динамически: int*p;

p=new int[3*4]; p-адрес первого элемента в массиве.

Переданный в функцию массив может играть роль исходного или результата. Передавая несколько матриц надо помнить об их соразмерности и не передавать лишних размерностей.

 

Для обработки матрицы построчно можно использовать готовые функции для одномерного массива

 

 

Задача 1.

 

Демонстрирует получение матрицы результата с выделением памяти внутри main

 

Дана матрица, создать транспонированную.

 

Выделяем функции:

1. Заполнение матрицы случайными числами, по-скольку перебор идет построчно, используем ранее записанную функцию InMasRnd

2. Вывод матрицы на экран в матричной форме

3. Создание транспонируемой матрицы

 

Анализ характеристик функции:

 

2/

 

1. OutMas

2. Исходные данные:

матрица

int *p;

int n;

int m;

 

3. Результат: нет (void)

 

 

3/

 

1. TransMas

2. Исходные данные:

матрица исходная

int *p1;

int n;

int m;

 

матрица транспонированая - int *p2;

 

3. Результат: нет (void)

 

файл: mas2.h

----------------

 

#ifndef MAS2_H

#define MAS2_H

 

void InMasRnd(int *p, int n, int min, int max);

void OutMas(int *p, int n, int m);

void TransMas(int *p1, int *p2, int n, int m);

 

#endif

 

----------------

 

файл: mas2.cpp

----------------

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include <iomanip>

#include <stdlib.h>

#include <time.h>

 

void InMasRnd(int *p, int n, int min, int max)

{

int i;

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

p[i]=rand()%(max-min+1)+min;

return;

}

 

void OutMas(int *p, int n, int m)

{

int i,j;

cout << endl;

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

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

cout << setw(5) << *(p+i*m+j);

}

cout << endl;

}

return;

}

 

void TransMas(int *p1, int *p2, int n, int m)

{

int i,j;

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

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

*(p2+j*n+i)=*(p1+i*m+j);

}

}

return;

}

 

----------------

 

файл: main.cpp

----------------

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include <stdlib.h>

#include <time.h>

#include "mas2.h"

 

int main(void)

{

const int N=3;

const int M=5;

int m1[N][M], m2[M][N];

srand((unsigned)time(NULL));

InMasRnd(m1[0],N*M,-20,30); // m1[0] - адрес нулевой строки, // соответ-но адрес первого числа

cout << "\nИсходный массив:";

OutMas(m1[0],N,M);

cout << "\nВторой массив:";

TransMas(m1[0],m2[0],N,M);

OutMas(m2[0],M,N);

return 0;

}

 


Поделиться с друзьями:

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.043 с.