Форум программистов, компьютерный форум CyberForum.ru

Передача динамических массивов в функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread521952.html
Задали лабораторку не успеваю разобраться что к чему?Помоги пожайлуста.
C++ Помогите разобраться с арифметическим действием. Добрый вечер, господа знатоки! Прошу помочь разобраться в элементарном деле: Мне необходимо узнать соотношение счётчика a1 к переменной n в % Читал статьи по приоритету арифметических функций, но может, чего-то не понял... Как я делаю: Edit1->Text=(a1)/(5*n*100); Или Edit1->Text=a1/(5*n*100); http://www.cyberforum.ru/cpp-beginners/thread521950.html
C++ шахматное поле
На экране нарисовать с помощью символа ‘-’ шахматное поле. При этом использовать функцию, в которой осуществляется вывод символа ‘-’
Бинарное дерево C++
Подскажите как дополнить код,что бы получился полноценный прямой обход бинарного дерева... #include "stdafx.h" #include <iostream> #include<fstream> using namespace std; ofstream out("3.txt"); class tree { public:
C++ В с++ такая задача: проверить, все ли столбцы матрицы содержат хотя бы один положительный элемент. http://www.cyberforum.ru/cpp-beginners/thread521923.html
Увожаемые люди помагите пожалуйста. Нужно решить вот такую непростую загадку: Дана матрица NxM. Проверить, все ли столбцы матрицы содержат хотя бы один положительный элемент. Если нет, то в первом столбце, не удовлетворяющем условию, заменить отрицательные элементы их модулями.
C++ Проход лабиринта в C++ Ребята, помогите...вобщем, необходимо пройти по лабиринту и найти самый короткий маршрут...лабиринт я создал, а как пройти по нему ума не приложу..люди добрые, доработайте пожалуйста!) Вот что у меня получилось: #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; int main(int argc, char* argv) { //1-стенка подробнее

Показать сообщение отдельно
Decart
1 / 1 / 1
Регистрация: 19.12.2011
Сообщений: 19
23.03.2012, 02:27  [ТС]     Передача динамических массивов в функции
вот свой вариант написал, может кому пригодится)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <iostream>
#include <iomanip> 
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
using namespace std;
 
void action(double**,int, int, int, int);
void action(double*,int, int, int, int);
 
void main(void) {
    _CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    int n, m, i, j, x;
    int k=3;
    // Ввод размерности матрицы
    cout << "Введите размер матрицы(n*m),где (n>=3):"<<endl;
    cin >> n;
    cin >> m;
    
    cout<<"Введите Х:"<<endl;
    cin>>x;
 
    // Инициализация и ввод матрицы
    double **A = new double*[n];                
    for (i=0; i<n; i++) 
        A[i] = new double[m];               
    double *B = (double*) new double[n*m];
 
    cout <<"Введите матрицу "<<n<<"*"<<m<<":"<<endl;
    for(i=0;i<n;i++)
      for(j=0;j<m;j++) 
          cin>>A[i][j];
 
    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
            B[i*m+j]=A[i][j];
 
    // Вывод матрицы и результатов
    system("cls");
    cout <<"Исходная матрица:"<<endl;
    for (i=0; i<n; i++)
    {
      for (j=0; j<m; j++) 
          cout << setiosflags(ios::left) << setw(6) << setprecision(2) << A[i][j];
      cout << endl;
    }
    system("pause");
    
    action(A,n,m,x,k);
    action(B,n,m,x,k);
    
    // Удаление
    //for (i=0; i<N; i++) delete A[i];
    delete[] A;
    delete[] B;
}
 
void action(double **A, int N, int M, int x, int k) {
    int length;
    int count=0;
     cout<<"**A"<<endl;
    for (int i=0; i<N; i++) 
    {
        length=0; 
        for (int j=0; j<M; j++) 
        {
            if (A[i][j]==x)
            { 
                 length++; 
                 while((A[i][j+1]==x) && (j+1<M))
                 {
                     j++; 
                     length++;
                 }
                 if(length>=k)
                 {   
                     count++; 
                     cout<< "Индекс найденной строки=" << i << " длина серии="<< length <<endl;
                     length=0;
                 }
            }
         }
    }
    cout<<"Количество серий="<<count<<endl;
}
 
 
void action(double *A, int N, int M, int x,int k){
    int length;
    int count=0;
    cout<<"*В"<<endl;
    for (int i=0; i<N; i++) 
    {
        length=0; 
        for (int j=0; j<M; j++) 
        {
            if (A[i*M+j]==x)
            { 
                 length++; 
                 while((A[i*M+j+1]==x) && (j+1<M))
                 {
                     j++; 
                     length++;
                 }
                 if(length>=k)
                 {   
                     count++; 
                     cout<< "Индекс найденной строки=" << i << " длина серии="<< length <<endl;
                     length=0;
                 }
            }
         }
    }
    cout<<"Количество серий="<<count<<endl;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru