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

Курсач, неясность с динамическим массивом - C++

Восстановить пароль Регистрация
 
eg01st
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 84
27.05.2012, 22:16     Курсач, неясность с динамическим массивом #1
Дали курсач. Сложно его назвать курсачем, но сделать надо. Появилась проблема с созданием массива нужных значений. Далее выложу задание, что бы хотя бы немного было понятно что я вообще делаю)

Создаем матрицу. Забиваем её значениями которые ищутся по формуле i3 (2i (i – 2,5) + 1,3 )Sin((2i (j – 2,5) + 1,3 )).
Далее, проверка, если все непарные столбики матрицы имеют одинаковое количество плюсовых значений - то в массив забрасываем числа из вспомогательной диагонали матрицы, иначе - забрасываем в массив значения из главной диагонали, которую сначала сдвигаем на к разрядов.
В общем - как я понимаю, проблема с выделением памяти, но я пока не могу понять, где именно ошибка. Подскажите пожалуйста хотя бы где её искать) Спасибо)
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
120
121
122
123
124
125
126
127
128
129
130
// kursach.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
 
 
int CreateMas(int *ar, int chislo)
{
 
//создаем доролнительный массив 
int *temp;
temp = new int [sizeof(ar)/sizeof(ar[0])];// на кол-во элементов в массиве с данными
//далее копируем все данные из массива op в массив temp
for(int i=0;i<sizeof(ar)/sizeof(ar[0]);i++)
{
   temp[i] = ar[i];
}
//удаляем массив ор и создаем заново но на один элемент больше
delete [] ar;
ar = new int[(sizeof(ar)/sizeof(ar[0]))+1];
//и копируем данные обратно
for(int i=0;i<sizeof(ar)/sizeof(ar[0]);i++)
{
    ar[i]=temp[i];
}
 ar[sizeof(ar)/sizeof(ar[0])] = chislo;
 
 return *ar;
 
}
int _tmain(int argc, _TCHAR* argv[])
{   
    setlocale(LC_ALL,"Russian");
    int n; // Колличество строк
    int m; // Колличество столбцов
    int i,j;
    bool res = false;
    int ar[1];
    cout<<"Введите количество строк матрицы: "<<endl;
    cin>>n;
    cout<<"Введите количество столбцов матрицы: "<<endl;
    cin>>m;
    int** array_2d;
 
    // Создаем массив указателей
    array_2d = new int*[n];
    cout<<"Получена матрица вида: "<<endl;
    // А теперь создаем массивы значений, для каждой строки
    for (int i = 0; i < n; i++) {
        array_2d[i] = new int[m];
    }
 
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            array_2d[i][j] = (pow(i,3.0))*((pow(2.0,i)*(i-2.5))+1.3)*sin((pow(2.0,i)*(j-2.5))+1.3);
            cout << array_2d[i][j] <<"\t"<< " ";
        }
        cout << endl;
    }
    
    for (int  i = 1 ;i<n;i++)
    {
        int curr_count = 0, prev_count = 0;
        if ((i % 2) >= 1)
        {
        for (j=1;j<m;j++)
            {
            if (array_2d[i][j]>0) 
                curr_count++;
            }
        if(i == 1)
            {
                curr_count = prev_count;    
            }
        if (curr_count != prev_count)
            {
            res = false;
            i = n;
            }
        else 
            {
            prev_count = curr_count;
            curr_count = 0;
            res =  true;
            }
        }       
    }
 
    if(!res)
    {
        int k = 0;
        cout<<"Итог проверки на соответствие количества плюсовых чисел = ложь. Введите К"<<endl;
        cin>>k;
        for (int i = 0; (i < n) || (i < m); i++ )
        {
            if((i+k)<m)
            {
                    CreateMas(ar,array_2d[i][i+k]);
            }
        }
    }
    else
    {
        cout<<"Итог проверки на соответствие количества плюсовых чисел = истина"<<endl;
        for (int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                if(j == n - i - 1 )
                {
                    CreateMas(ar,array_2d[i][j]);
                }
            }
        }
    }
 
 
 
    // Удаляем массивы значений
    for (int i = 0; i < n; i++) {
        delete[] array_2d[i];
    }
    // Удаляем массив указателей
    delete[] array_2d;
    system("pause"); 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 22:16     Курсач, неясность с динамическим массивом
Посмотрите здесь:

Проблема с динамическим массивом C++
Работа с динамическим массивом C++
C++ Работа с динамическим массивом
Работа с динамическим массивом C++
трабл с динамическим массивом C++
Работа с динамическим массивом С++ C++
Работа с динамическим массивом C++
Задание с динамическим массивом C++

Искать еще темы с ответами

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

Текущее время: 07:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru