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

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

Восстановить пароль Регистрация
 
WilFred
 Аватар для WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
07.03.2013, 17:52     Динамическое выделение памяти! #1
Программа должна читать с клавы число и имя(до 15 символов). Данные должны вводится в одной функции а выводится во второй. Сохранять данные в main(). Завершатся должна когда пользователь введет 0.Массивы создавать динамически и если необходима увеличивать размер.
Я вроде что-то сделал но не работает. Где ошибка?
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
#include <iostream>
#include <iomanip>
#include <Windows.h>
 
using std::cout;
using std::cin;
using std::endl;
using std::setw;
 
bool read(int* number, char name[]);                // Ввод данных
void write(int* numbers, char* [15], int length);   // Вывод данных
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int i = 1;
    int* numbers(new int [i]);      // Массив чисел
    numbers[0] = 0;
    char** names = new char* [i];   // Массив массивов имен
    names[i] = new char[15];        // Масив имени
    names[0] = nullptr;
 
    while(true)
    {
        int* d_Numbers(new int [i]);        // Дополнительный Массив чисел
        char** d_Names = new char* [i];     // Дополнительный Массив массивов имен
        for (int j = 0; j < i; j++)     
        {   
            d_Names[j] = new char[15];      // Дополнительный Масив имени
            d_Names[j] = nullptr;
        }
 
        for (int j = 0; j < i; j++)         // Копирование значений в дополнительный массив
        {
            d_Names[j] = names[j];  
            d_Numbers[j] = numbers[j];
        }
 
        if (read(&d_Numbers[i-1], d_Names[i-1]) == true)    // Проверка на продолжение цикла
        {
            delete [] numbers;              // Удалить массив чисел
            delete [] names;                // Удалить массив имен
 
            int* numbers(new int [i]);      // Новый Массив чисел
            char** names = new char* [i];   // Новый Массив массивов имен
            for (int j = 0; j < i; j++) 
                names[j] = new char[15];    // Новый Массив имени
 
            for (int j = 0; j < i; j++)     // Коипирование значений из дополнительного в новый массив
            {
                names[j] = d_Names[j];      
                numbers[j] = d_Numbers[j];
            }
 
            delete [] d_Numbers;            // Удалить дополнительный массив чисел
            delete [] d_Names;              // Удалить дополнительный массив имен
            i++;
        }
        else
            break;
    }
 
    write(numbers, names, sizeof(numbers)/sizeof(numbers[0]));
    cout << endl;
 
    delete [] numbers;              // Удалить массив чисел
    delete [] names;                // Удалить массив имен
 
    return 0;
 
}
 
bool read(int* number, char name[])
{
    cout << "Введите число (0 для завершения): ";
    cin >> *number;
 
    if(*number == 0)        // Выход если введен 0
        return false;
 
    cout << "Введите  имя (максимум 15 символов): ";
    cin.getline(name, 15, '\n');
    return true;
}
 
void write(int* numbers, char* names[15], int length)
{
    for(int i(0); i < length; i++)
        cout << numbers[i] << ' ' << names[i];
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2013, 17:52     Динамическое выделение памяти!
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
07.03.2013, 18:00     Динамическое выделение памяти! #2
А что пишет?
WilFred
 Аватар для WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
07.03.2013, 18:12  [ТС]     Динамическое выделение памяти! #3
Цитата Сообщение от egor2116 Посмотреть сообщение
А что пишет?
Там с выводом проблемы, но это ерунда.
Если без вывода, то все компилится. Когда идет проверка на продолжение цикла, вызывается функция, ввожу число, а потом вылетает из программы, и не чего не пишет=( На этапе компилирования вроде все норм...
Yandex
Объявления
07.03.2013, 18:12     Динамическое выделение памяти!
Ответ Создать тему
Опции темы

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