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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
#1

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

07.03.2013, 17:52. Просмотров 345. Ответов 2
Метки нет (Все метки)

Программа должна читать с клавы число и имя(до 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++
Здравствуйте! Помогите пожалуйста, мне задали сделать чтобы в выделенном (выделить не удалось, оставил теги B, там где идёт &quot;объявляем и...

Динамическое выделение памяти. - C++
Доброго времени суток. Помогите, пожалуйста, решить задачу. Задача тривиальна - поиск и замена подстроки. Суть в чем: необходимо...

Динамическое выделение памяти - C++
Всем здрасти.Если выделять динамически память,например: char *p=new char; и при этом не перегружать оператор new.То верны ли следующие...

Динамическое выделение памяти - C++
Подскажите как выделить динамически память мод двумерный массив... Спасибо. ... int *mass = new int ; //int *mass = new int ; ) Не...

Динамическое выделение памяти - C++
Всем привет. Научите, пожалуйста, правильно пользоваться динамическим выделением памяти. Допустим, у меня есть функция, где я пытался...

Динамическое выделение памяти - C++
Всем привет, читал про динам. выделение памяти и тут возник вопрос. Так как для новичков пишут книги не очень глубоко, то в книге ответа на...

Динамическое выделение памяти - C++
Дан такой код:#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int a; // матрица 9 на 9 целочисленная...

Динамическое выделение памяти - C++
Имеется такая вот задача ! Нужно сделать что бы память выделялась динамически,а не на этапе компиляции!!! Какие будут предложения ??? ...

Динамическое выделение памяти - C++
Использовать динамическое выделение памяти для программы : #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Динамическое выделение памяти - C++
Добрый день! пытаюсь освоить С++ и дошёл до раздела динамического выделения памяти. Беру пример с сайта cppstudio.com всё работает ...

Динамическое выделение памяти - C++
Доброго времени суток. Пытаюсь разобраться с динамическим выделением память. Суть: Есть структура с двумя полями: 1. Указатель...

Динамическое выделение памяти - C++
Создайте динамический массив, хранящий в первой строке имя, а во второй - телефон. Организуйте поиск по имени и по номеру телефона и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru