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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать функцию, оставляющую в массивах только точки, которые принадлежат полосе, заданной системой неравенств: y>= -1 и y<= +1, а остальные удалит http://www.cyberforum.ru/cpp-beginners/thread588571.html
Помогите, кто может! Задача: Даны координаты n точек на координатной плоскости массивами координат. Описать функции ввода и вывода массивов, определяющих точки. Описать функцию, которая оставит в массивах только те точки, которые принадлежат полосе, заданной системой неравенств: y>= -1 и y<= +1, а остальные удалит.
C++ Задача на массив Написать программу, которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением. http://www.cyberforum.ru/cpp-beginners/thread588555.html
C++ Задача на матрицу
Сформировать матрицу, элементами которой являются средние арифметические элементов исходной матрицы (без элемента, соответствующего формируемому).
Флойд - Уоршелл. Маршруты на кратчайших путях C++
for (int k = 0; k < 33; k++) for (int i = 0; i < 33; i++) for (int j = 0; j < 33; j++) { double p = d + d; if (d > p) { d = p; // матрица кратчайших путей ways =...
C++ комменты к проге http://www.cyberforum.ru/cpp-beginners/thread588535.html
Всем привет! Нужна ваша помощь, напишите комментарии мне пожалуйставот к этому(вся программа ниже): 1) { cout<<"Введите количество точек: "; cin>>n; for(i=0;i<n;i++) for(j=0;j<n;j++) c=0; for(i=0;i<n;i++)
C++ Задачка Здравствуйте! Помогите пожалуйста. В универе задали задачу по программированию, которую вообще не могу даже понять, не говоря уж о том чтобы решить ее на С++ =( Вот условие: Для функции y=y(x), заданной графически, построить аналитическую зависимость. Составить блок-схему вычисления величины y при заданном значении аргумента. Для задачи предусмотреть: ввод в программу параметров, если они есть, и... подробнее

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

Создаем матрицу. Забиваем её значениями которые ищутся по формуле 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru