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

Динамическое выделение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Затирается переменная в DevCPP http://www.cyberforum.ru/cpp-beginners/thread698852.html
Проблема возникла в этой теме. http://www.cyberforum.ru/cpp-beginners/thread697559-page2.html Программу я написал в MSVS2008 и она корректно работала, но стали поступать жалобы, я проверил и обнаружил что в DevCPP возникает ошибка. Дело в глобальных переменных divisor, half_life и массиве mask В ходе заполнения массива mask переменная divisor портится, хотя за пределы массива я не...
C++ Запись string в файл есть строка, я её должен записать в текстовый файл так,чтобы она разбилась на несколько строк , при этом длина каждой не превышала 10 символов, а слова которые не влезли переносились: stroka="word1 jladhfa\nds;F jdhs\nkjhs kej qkjehr w "; if((a.length()<10)) { a.insert(a.begin()+10, '\n'); } http://www.cyberforum.ru/cpp-beginners/thread698849.html
Определите что за сортировка C++
Это сортировка вставками или выбором #include <iostream> #include <time.h> #include <conio.h> using namespace std; int main (){ int temp; const int arraysize=10; int array={2,3,4,5,6,7,8,9,10,6}; for(int i=0;i<arraysize;i++){ cout<<array<<"\t";}
C++ Одномерные массивы на csharp
Помогите плз!! Сотавить массив из 20 случ чисел.Отсортировать отриц.четные элементы по возрастаниюю.Вывести на экран нач. массив и отсортированный.
C++ Одномерные массивы: вычисление сумм элементов http://www.cyberforum.ru/cpp-beginners/thread698833.html
Еще раз здравствуйте, дорогие форумчане. Мне еще раз нужна ваша помощь по задаче. Если сможете, то помогите, пожалуйста. Собственно само задание: Даны целые числа a1, ..., an, среди которых могут быть повторяющиеся члены. Найти число различных членов последовательности.(Если что, скрин прикрепил). ------------------------------------------- Я понял так, что можно начать вот как: #include...
C++ В С++ нужно вывести числа четные до 10, нечетные до 11, в случайном порядке В С++ нужна программа для вывода чисел в случайном порядке четные до 10(2, 4, 6, 8, 10), нечетные до 11(1, 3, 5, 7, 9, 11) PFC_CSKA, будьте внимательнее с выбором раздела. подробнее

Показать сообщение отдельно
damnare
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 18
15.11.2012, 23:07  [ТС]     Динамическое выделение памяти
В чем разница если писать доступ к элементу структуры через точку или через стрелку? Или стрелка это не доступ к элементу?

C++
1
2
3
4
5
6
7
8
9
10
struct Table
{
    char *TblName;
    int **Matrix;
};
 
Table *mas = new Table[t];
 
    for(int i=0; i<t; i++)
            mas[i].TblName = new char[10];
Добавлено через 21 минуту
Вот что у меня получилось.
Но есть две проблемы:
1. Например я ввожу что мне нужно 2 структуры, после чего ввожу имя первой таблицы, значения для первой таблицы, далее имя второй таблицы и ввод прерывается, перескакивает сразу на вывод.. И вывод значения даже первой структуры неверно... бред какой то....

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
struct Table
{
    char *TblName;
    int **Matrix;
};
 
void main()
{
    int t,n,m,s;
 
    printf("Enter number of structures (T): ");
    scanf("%d",&t);                 //Вводим необходимое количество структур
    printf("Enter the row count for the matrix (N): ");
    scanf("%d",&n);                 //Вводим количество столбцов
    printf("Enter the number of columns in the matrix (M): ");
    scanf("%d",&m);                 //Вводим количество строк
    printf("----------------------------------------------------------------\n");
 
    Table *mas = new Table[t];
 
    for(int i=0; i<t; i++)
            mas[i].TblName = new char[6];
 
    for (int j=0;j<n;j++)
    {    
        mas[j].Matrix = new int *[n];         
        for(int k=0;k<n;k++)        
            mas[j].Matrix[k] = new int[m];   
    }
 
    printf("Enter information:\n");
 
    for(int i=0;i<t;i++)
    {
        printf("Entering information for the structure number [%d]:\n",i+1);
        printf("Enter the name of the table: \n");
        for(int j=0;j<6;j++)
            scanf("%c",&mas[i].TblName[j]);
        printf("Enter the values for the table[%d][%d]: \n",n,m);
        for(int k=0;k<n;k++)
            for(int g=0;g<m;g++)
                scanf("%d",&mas[i].Matrix[k][g]);
        printf("Entering information for the structure number [%d] completed!\n",i+1);
    }
 
    printf("Information output:\n");
 
    for(int i=0;i<t;i++)
    {
        printf("Output information for the structure number [%d]:\n",i+1);
        printf("Output the name of the table: \n");
        for(int j=0;j<6;j++)
            printf("%c",&mas[i].TblName[j]);
        printf("Output the values ​​for the table[%d][%d]: \n",n,m);
        for(int k=0;k<n;k++)
            for(int g=0;g<m;g++)
                printf("%d",&mas[i].Matrix[k][g]);
        printf("Output information for the structure number [%d] completed!\n",i+1);
    }
 
    _getch();
}
Добавлено через 1 час 21 минуту
Все сделал Спасибо большое за помощь.

Все вроде бы работает хорошо, только редко бывает такой глюк как я писал выше - не хочет считывать значения для второй матрицы а сразу перескакивает на вывод инфы.

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
struct Table            //Объявил структуру из двух полей указателей 
{
    char *TblName;      //Указатель на имя таблицы
    int **Matrix;       //Указатель на двумерный массив
};
 
void main()
{
    int t,n,m;          //Объявил переменные
 
    printf("Enter number of structures (T): ");
    scanf("%d",&t);                 //Вводим необходимое количество структур
    printf("Enter the row count for the matrix (N): ");
    scanf("%d",&n);                 //Вводим количество столбцов
    printf("Enter the number of columns in the matrix (M): ");
    scanf("%d",&m);                 //Вводим количество строк
    printf("----------------------------------------------------------------\n");
 
    Table *mas = new Table[t];          //Выделил память для массива структур количеством t
 
    for(int i=0; i<t; i++)
            mas[i].TblName = new char[100];     //Выделил память для имени таблицы для каждой структуры
 
    for (int j=0;j<t;j++)
    {    
        mas[j].Matrix = new int* [n];           //Выделил память для массива указателей на двумерный массив
        for(int k=0;k<n;k++)        
            mas[j].Matrix[k] = new int[m];      //Выделил память для массива значений двумерного массива
    }
 
    printf("Enter information:\n");             //Блок ввода информации
 
    for(int i=0;i<t;i++)
    {
        printf("Entering information for the structure number [%d]:\n",i+1);
        printf("Enter the name of the table: \n");
            for(int j=0;j<100;j++)
            {
                scanf("%c",&mas[i].TblName[j]);
                if (mas[i].TblName[j]==' ') j=100;      //Считываю имя таблицы до первого пробела для текущей структуры
            }
        printf("Enter the values for the table[%d][%d]: \n",n,m);
        for(int k=0;k<n;k++)
            for(int g=0;g<m;g++)
                scanf("%d",&mas[i].Matrix[k][g]);       //Считываю значения для таблицы для текущей структуры
        printf("Entering information for the structure number [%d] completed!\n",i+1);
    }
 
    printf("Information output:\n");            //Блок вывода информации
 
    for(int i=0;i<t;i++)
    {
        printf("Output information for the structure number [%d]:\n",i+1);
        printf("Output the name of the table: ");
            for(int j=0;j<100;j++)
            {
                printf("%c",mas[i].TblName[j]);
                if (mas[i].TblName[j]==' ') j=100;      //Вывожу имя таблицы для текущей структуры
            }
        printf("\nOutput the values for the table[%d][%d]: \n",n,m);
        for(int k=0;k<n;k++)
        {
            for(int g=0;g<m;g++)
                printf("%d ",mas[i].Matrix[k][g]);      //Вывожу значения таблицы для текущей структуры
            printf("\n");
        }
        printf("Output information for the structure number [%d] completed!\n",i+1);
    }
        
    for (int j=0;j<t;j++)
    {      
        for(int k=0;k<n;k++)        
        {
            delete mas[j].Matrix[k];        //Освободил память занятую под массив значений матрицы
        }
        delete mas[j].Matrix;               //Освободил память занятую под массив указателей матрицы
        delete mas[j].TblName;              //Освободил память занятую под имена таблиц
    }
 
    delete [] mas;                          //И нахер удалил все структуры :)
    
    _getch();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru