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

Ошибка в одноиерном динамическом массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ не разберусь как переработать программу с учетом использования заголовочных файлов, модулей и пользовательских функций http://www.cyberforum.ru/cpp-beginners/thread859225.html
#include <iostream.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> FILE *fl; typedef struct { char author;
C++ Шифрование Доброго времени суток, сегодня весь день сидел и пытался разобрать задачу. Задается натуральное число k и перестановка чисел 1, ... , k с помощью последовательности натуральных чисел c1, ... , ck, в которую входит каждое из чисел 1, ... , k. При шифровке в исходном тексте последовательно выделяются группы по k символов, и к каждой группе применяется зафиксированная перестановка, например:... http://www.cyberforum.ru/cpp-beginners/thread859222.html
C++ Регулярные выражения
Может кто нибудь подсказать реализацию регулярных выражений на С/С++?
Строки: верно ли, что в заданной строке любое несимметричное слово имеет четную длину C++
Дано символьный рядок.Проверить, чи верно что в заданной строке любое несеметричне слово имеет парную длину.
C++ Нужно дописать карточную игру (ХЕЛП!) http://www.cyberforum.ru/cpp-beginners/thread859186.html
Помогите пожалуйста дописать карточную игру #include <iostream> #include <Windows.h> #include <math.h> #include <conio.h> using namespace std; void main () { SetConsoleOutputCP(1256);
C++ Помощь с игрой точки-квадраты Друзья, помогите пожалуйста, делаю игру точки-квадраты http://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BB%D0%BE%D1%87%D0%BA%D0%B8_(%D0%B8%D0%B3%D1%80%D0%B0). На моменте с построением линии прога крашится. как лучше нарисовать линии между точками? что-то слегка запутался... #include <iostream> #include <cstdlib> #include <time.h> #include <string> using namespace std; подробнее

Показать сообщение отдельно
Ilya123
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 45
08.05.2013, 14:51     Ошибка в одноиерном динамическом массиве
Здравствуйте, программа не правильно выводит на экран обработанный массив. Пункт 1 выполняется, пункт 2 выполняется, пункт 3 выполняется, при повторном пукте 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
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
// Определение функции формирования одномерного динамического массива
int *form_arr (int m)
{
    int *arr; arr=new int[m]; cout << endl;
    return arr;
}
// Определение функции заполнения массива (псевдослучайными числами в диапазоне)
void init_arr (int *arr, int m)
{
    for (int i = 0; i < m; i++) {arr[i] = rand()%100; }
cout << endl;
}
// Функция создания 2 массива
int add_elem (int n,int m, int*arr,int k)
{
    // Создание временного массива для хранения новых елементов 
        int *Arr = new int[n];
        // Ввод значений новых елементов
        cout << "Элементы К:\n";
        
     for (int i = 0; i<n; i++)  
{
Arr[i]=rand()%100;
cout<< Arr[i] <<" ";}
     cout<<endl<<endl;
        // Создание нового массива, который будет 
 
        // содержать елементы начального массива и 
 
        // новые елементы массива новых елементов
 
        int* newArr = new int[m + n];
 
        // Для прохода по массиве новых елементов
 
        int count = 0;
 
 
 
        for(int i = 0; i < m + n; i++) {
 
                // Вставляем елементы старого массива в новый
 
                if(i < k) {
 
                        newArr[i] = arr[i];
 
                }
 
                // Вставляем новые елементы из массива новых елементов
 
                else if(i >= k && i < k + n) {
 
                        newArr[i] = Arr[count];
 
                        count++;
 
                }
 
                // Вставляем елементы старого массива в новый
 
                else {
 
                        newArr[i] = arr[i - count];
 
                }
                
        }
        
       return 0;
}
 
// Функция вывода массива на экран
void print_arr (int *Arr, int m)
{
    cout << "Массив имеет вид: " << endl << endl;
    for (int i=0; i<m; i++)
    {
        cout << Arr[i] << " ";
    }
        cout << endl << endl;
}
// Функция вывода массива на экран
int print_arr2 (int m, int n)
        {   int *newArr=NULL;
            newArr = new int[]; 
    for(int i =0 ; i < m + n; i++) {
             cout << "[" << i << "] -> " << newArr[i];
             cout << "\n";      
}
 cout << endl << endl;
 return 0;
}
 
// Функция удаления массива 
void del_arr (int *Arr,int *arr)
{
    delete[] arr;
    delete[] Arr;
}
// Определение функции main()
int main()
{
    setlocale (0,"");
    int m=0,n=0,k=0,x=0, action;
    int act_point=0;
    int *Arr=NULL;
    int *arr=NULL;
    int *newArr=NULL;
    do
    {
    cout << "1. Формирование массива." << endl;
    cout << "2. Печать массива." << endl;
    cout << "3. Добавление в массив." << endl;
    cout << "4. Выход." << endl;
    cout << "-------------------------------" << endl;
    cout << "Выбирите действие из меню: ";
    cin >> action;
        if ((action < 1) || (action > 4))
        {
            cout << endl << "Нет такого действия в меню!" << endl;
        }
    cout << endl;
    switch (action)
    {
    case 1: if (act_point == 0)
                {
                    cout << "Введите количество элементов массива: ";
                    cin >> m;
            arr = form_arr (m);
            init_arr (arr, m);          
            act_point =1;
            break;}
            else {
                cout << "Массив уже был создан!" << endl << endl; break;
            }
    case 2: if (act_point == 0)
                           {
                cout << "Ошибка! Нет массива! Пожалуйста, создайте его." << endl << endl;
                break;
            }
            if (act_point == 1)
            {
                print_arr (arr, m); break;
            }
            else
            {print_arr2 (m,n);
                break;
          } 
    case 3: if (act_point == 0)
            {
                cout << "Нет массива. Пожалуйста, создайте его!" << endl << endl; break;
            }
            if (act_point == 1)
            {
      cout << "Введите индекс с которого начинаеться вставка (от 1 до "<<m-1<<"): ";
    cin >> k; 
    while ((k>m-1))
    {
        cout << "Вы ввели не корректное число "<<k<<". \nВведите индекс с которого начинаеться вставка (от 1 до "<<m-1<<"): ";
        cin >> k;   
    }
    x=m+n;
    cout << endl;
    cout << "Введите кол-во елементов для добавления: ";
    cin >> n;
    cout << endl;
                int r = add_elem (n, m, arr, k);
                
                    if (r!=0) 
                    {   
                        cout << endl;  
                    }                
                act_point=2;
             
                break;
            }       
            if (act_point == 2)
         {
              cout << "Массив уже обработан!" << endl << endl; break;
          }
    case 4: if (act_point != 0)
                {
                   del_arr (Arr,arr);
                    cout << "Завершение работы... Память очищена!" << endl << endl;
                }
            else
                {
                    cout << "Завершение работы..." << endl << endl;
                }
    } 
    } 
    while (action != 4);
    system ("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru