Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Топ:
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2017-11-17 | 203 |
5.00
из
|
Заказать работу |
Задача 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!