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

Не могу удалить динамический массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Запись в файл слов, которые не повторяются http://www.cyberforum.ru/cpp-beginners/thread1632342.html
Добрый вечер, помогите с кодом. Как сделать чтобы считать с файла слова в односвязный список, сделать сортировку, и записать в другой файл слова кроме тех которые повторяются. Вот мой код: void List::readFromFile(char *FileWay) { FILE *file; int j = 0; file = fopen(FileWay,"r"); if (file == NULL) { cout << "Error" << endl; return; }
C++ Разбить текст на страницы Дан текстовый файл. Преобразовать его, разбив текст на страницы и пронумеровав их, причем номер нечетной страницы должен размещаться в правом нижнем углу, а номер четной страницы - в ее левом нижнем углу. Число стока странице задается, а ширина страницы определяется самой длинной строкой в данной странице. Конец страницы отмечается символом с кодом 12, который помещается в отдельной строке. ... http://www.cyberforum.ru/cpp-beginners/thread1632331.html
C++ Проверить код на наличие ошибок
Добрый день, форумчане! Кто может проверить код на наличие ошибок ? Вариант задания 26 #include <iostream> #include <cmath> #include <cstdlib> using namespace std; int main() { int i, k = 0, j = 1; double q, z, x = -3;
C++ В одномерном целочисленном массиве поменять местами последний элемент с первым нулевым элементом
Ввести в память машины одномерный целочисленный массив, размерностью не более 50 элементов. 1)Поменять местами последний элемент с первым нулевым элементом. 2)Упорядочить массив таким образом, чтобы в начале шли отрицательные элементы, затем нулевые, затем положительные. Вывести на экран исходный массив и данные, полученные согласно заданию в варианте. Ввод массива, манипуляции с массивом,...
C++ Задача на поиск совпадений букв первого слова во втором http://www.cyberforum.ru/cpp-beginners/thread1632255.html
Ребят, решите пожалуйста задачу: Даны два слова. Для каждой буквы первого слова (в том числе для повторяющихся в этом слове букв) определить, входит ли она во второе слово. Например, если заданные слова информация и процессор, то для букв первого из них ответом должно быть: нет нет нет да да нет нет да нет нет Заранее спасибо:)
C++ Определить наибольшее число в массиве Есть задание , написать программу которая определяет наибольшее число в массиве , и количество его вхождений (на случай если будет два раза одно и тоже число , и оно же и наибольшее) Вот код : #include<iostream> #include<cstdlib> using namespace std; int main() { cout<<"8 laba\n"<<endl; int N; подробнее

Показать сообщение отдельно
kuza84
-4 / 23 / 4
Регистрация: 25.04.2013
Сообщений: 195
07.01.2016, 06:05     Не могу удалить динамический массив
Я чет не допру когда во втором выводе результата по индексу pArray[0] оказывается значение с индекса pArray[size-1] это же получается алгоритм сдвига влево на 1 индекс. мож объяснит кто.
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
#include <iostream>
using namespace std;
 
void fillArray(int *pArray, int size);
void showArray(int *pArray, int size);
void freeArray(int *pArray);
void swap(int *pArray, int size);
 
int main ()
{ 
    cout <<"--------------------------------------------------------------------------------";
    cout <<"left shift"<<'\n';
    cout <<"--------------------------------------------------------------------------------";
/*------------------------------------------------------------------------------------------*/    
srand(time(0));
    int sizeOfArray = 12;
    int *pArray = new int[sizeOfArray];
    fillArray(pArray, sizeOfArray);
    showArray(pArray, sizeOfArray);
    swap(pArray, sizeOfArray);
    showArray(pArray, sizeOfArray);
    freeArray(pArray);
/*------------------------------------------------------------------------------------------*/    
    cout <<'\n';
    cout <<"--------------------------------------------------------------------------------";  
    system ("pause"); 
    return 0;
} 
void showArray(int *pArray, int size) {
    for (int i = 0; i < size; i++) {
        cout << "[" << i + 1 << "]" << ": " << pArray[i] << endl;
    }
    cout << "------------------" << endl;
}
 
void swap(int *pArray, int size) {
    for (int i = 0; i < size-1; i++) {
        if (pArray[i] != 0) {
            int temp = pArray[i];
            pArray[i] = pArray[i + 1];
            pArray[i + 1] = temp;
        }
    }
}
 
 
void freeArray(int *pArray) {
    delete [] pArray;
}
 
void fillArray(int *pArray, int size) {
    for (int i = 0; i < size; i++) {
        pArray[i] = 1 + rand() % 50;
    }
}
Добавлено через 8 минут
в цикле for ведь не доходим до последнего индекса массива, толкаем последнее значение из предпоследнего индекса влево, а когда толкаем из 0 индекса в последний ?
C++
1
2
3
4
5
6
7
8
9
void swap(int *pArray, int size) {
    for (int i = 0; i < size-1; i++) {
        if (pArray[i] != 0) {
            int temp = pArray[i];
            pArray[i] = pArray[i + 1];
            pArray[i + 1] = temp;
        }
    }
}
Добавлено через 16 минут
Понял, в процессе работы этого цикла for значение с индекса 0 тащится на size-1 в каждой итерации.
здесь алгоритм сдвига более актуален и интересен чем замены.
 
Текущее время: 20:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru