Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2015, 11:15   #1
JLady
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию C++ Массивы, как параметры функций

Отрицательные элементы матриц A (5,4) , B (3,2 ) , C (4,4 ) записать в одномерный массив .
Cоздала массивы, заполнила случайными числами. А теперь нужно организовать поиск отрицательных элементов по моим массивам и записать их в одномерный. Помогите пожалуйста с реализацией
Код:
#include "stdafx.h"

#include "stdafx.h"
#include <iostream> 
#include <iomanip> 
#include <ctime> 
using namespace std; 
using namespace System;
float** init (  int n, int m);
void pr ( float **A, int n, int m);
int main() 
{ setlocale(LC_ALL, "Russian");
int n,i,m;
const int s2 = 2, s3 = 3, s4 = 4, s5 = 5;
    float **B;
    float **C;
    float **D;
    
    
   
    cout << "\n\tМатрица    B\n\n"; 
    B=init ( 5, 4);
    pr(B, 5, 4); 
    cout << "\n\n\tМатрица C\n\n";
    C=init(3, 2);
    pr(C, 3, 2); 
    cout << "\n\n\tМатрица D\n\n"; 
    D=init(4, 4);  
    pr(D, 4, 4);
    
    
    system ("Pause");
    return 0;
} 
float** init (  int n, int m)
    { float **A;
        A = new float* [n];  
       for (int i=0;i<n;i++)
           A[i]=new float [m];
    for (int i=0;i<n;i++)
       for (int j=0;j<m;j++)
      A[i][j]=(float) rand()*(100-10)/RAND_MAX+10;  
    return A;
}
 
 
void pr ( float **A, int n, int m)
{cout<<fixed;       
  for (int i=0;i<n;i++)
     { 
       for (int  j=0;j<m;j++)
       cout<<setw(8)<<setfill(' ')<<setprecision(2)<<A[i][j];
       cout<<endl;
     }

Последний раз редактировалось Stilet; 05.04.2015 в 11:27.
JLady вне форума Ответить с цитированием
Старый 05.04.2015, 15:33   #2
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

как-то так:
Код:
#include <iostream>
#include <iomanip>
#include <time.h>//для генератора
#include <windows.h>//для русских букв


using namespace std;

float** init (  int n, int m);

void pr ( float **A, int n, int m);

float** destruction(float **matrix, int n, int m);//освобождение памяти

int coint_value(float **matrix, int n, int m);//сколько отрицательных чисел в матрице

void write_array(float *array, int &pos, float**matrix, int n, int m);//заполнение массива

void print_array(float *array, int size); //печать

int main() {
	//включить русский язык
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(time(NULL));
    int n,i,m; //для чего это?
    const int s2 = 2, s3 = 3, s4 = 4, s5 = 5; //и это?
    
    float **B;
    float **C;
    float **D;
    float *array;//собственно сам массив
	int coint = 0, pos = 0;//количество символов и номер заполняемого символа

    cout << "\n\tМатрица    B\n\n";
    B=init( 5, 4);
    pr(B, 5, 4);
    cout << "\n\n\tМатрица C\n\n";
    C=init(3, 2);
    pr(C, 3, 2);
    cout << "\n\n\tМатрица D\n\n";
    D=init(4, 4);
    pr(D, 4, 4);
	//подсчет количества отрицательных элементов
	coint = coint_value(B, 5, 4);
	coint += coint_value(C, 3, 2);
	coint += coint_value(D, 4, 4);
	//создание массива
	array = new float[coint];
	//заполнение массива
	write_array(array, pos, B, 5, 4);
	write_array(array, pos, C, 3, 2);
	write_array(array, pos, D, 4, 4);
	//печать массива
	print_array(array, coint);
	//уничтожение мусора
	delete [ ] array;
	destruction(B, 5, 4);
	destruction(C, 3, 2);
	destruction(D, 4, 4);
    system ("Pause");
    return 0;
}

float** init (  int n, int m) {
    float **A;
    A = new float* [n];
    for (int i=0; i<n; i++)
        A[i]=new float [m];
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
            A[i][j]=( (float) rand()*(100-10)/RAND_MAX+10 ) * (rand() % 2? 1: -1);
    return A;
}

void pr ( float **A, int n, int m) {
    cout<<fixed;
    for (int i=0; i<n; i++) {
        for (int  j=0; j<m; j++)
            cout<<setw(8)<<setfill(' ')<<setprecision(2)<<A[i][j];
        cout<<endl;
    }
}

float** destruction(float **matrix, int n, int m){
	for (int i = 0; i < n; i++){
		delete [ ] matrix[i];
	}
	delete [ ] matrix;
	matrix = NULL;
	return matrix;
}

int coint_value(float **matrix, int n, int m){
	int result = 0;
	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++){
			if (matrix[i][j] < 0)
				++result;
		}
	}
	return result;
}

void write_array(float *array, int &pos, float**matrix, int n, int m){
	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++){
			if (matrix[i][j] < 0){
				array[pos++] = matrix[i][j];
			}
		}
	}	
}

void print_array(float *array, int size){
	cout << "\nМассив отрицательных элементов:\nколичество элементов = " << size
		 << "\nпечать элементов:";
	for (int i = 0; i < size; i++){
		if (i % 5 == 0)
			cout << endl;
		cout << setw(8) << array[i];
	}
	cout << endl;
}
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 05.04.2015, 16:35   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Красиво получилось Aleksander550
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 05.04.2015, 16:46   #4
JLady
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию

Спасибо огромное Aleksander550

Последний раз редактировалось JLady; 05.04.2015 в 16:48.
JLady вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
параметры функций по умолчанию marenko.lilia Общие вопросы C/C++ 5 04.09.2014 11:55
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Юрий62 Помощь студентам 1 04.12.2011 14:09
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28
Как передать в поток параметры? И как из потока параметры достать? Anekdot Общие вопросы Delphi 2 19.02.2010 22:40
Параметры процедур и функций shurik_7866 Общие вопросы Delphi 8 10.12.2007 19:49