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

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

Войти
Регистрация
Восстановить пароль
 
Даша_93
3 / 3 / 0
Регистрация: 10.06.2012
Сообщений: 31
#1

работыас массивом как со списком - C++

03.11.2012, 06:57. Просмотров 213. Ответов 2
Метки нет (Все метки)

В конце при удалении i-го элемента выводит массив и еще левые числа, подскажите,где ошибка:
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
//  Создание массива 
int* z1(int n)
{
    int *a = new int[n];
    for(int i = 0; i<n; i++)
    {
        a[i] = 1+(rand() % 9);
    }
    return a;
}
//Добавление элемента 
int* z2(int n, int c, int d, int* z1)
{ 
    int *A = new int[n+1];
    for(int i = 0; i<d; i++)
    {   
        A[i] = z1[i];
    }
 
    for(int i = d+1; i<n+1; i++)
    {   
        A[i] = z1[i-1];
    }
    A[d] = c;
    delete z1;
    return A;
}
//Удаление i-того элемента
int* z3(int n, int*z1, int k)
{
        int *c = new int[n-1];
        for(int i = 0; i<=k; i++)
        {   
            c[i] = z1[i];
        }
 
        for(int i = k; i<n-1; i++)
        {   
            c[i] = z1[i+1];
        }
        delete z1;
        return c;
}
 
void main()
 
{ 
    setlocale(LC_ALL, "Russian");
    int  c, k, n, d;
    cout<<"Введите размер массива: "<<endl;
    cin >> n;//ввод размера массива
    cout << "Массив:" << endl;;
    
    int* a = z1(n);
    
    for(int i = 0; i<n; i++)
    {   
        cout << a[i] << " ";
    }
    cout << endl;
    cout<<"Введите позицию элемента"<< endl;
    cin>> d;
    cout <<"Введите значение элемента" << endl;
    cin>> c;
 
    //Вызов функции добавления 
    a = z2(n, c, d, a);
    for(int i = 0; i<n+1; i++)
    {   
        cout << a[i] << " ";
    }
    n++;
    cout <<'\n';
 
    //Вызов функции удаления
    cout<<"Введите позицию элемента для удаления"<< endl;
    cin>> k;
    a = z3(n,a,k);
    for(int i = 0; i<n; i++)
    {   
        cout << a[i] << " ";
    }
    cout <<'\n';
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2012, 06:57     работыас массивом как со списком
Посмотрите здесь:

Как работать со списком на основе массива? - C++
У меня есть структура A у которой есть структурный элемент row. Как мне присвоить какое либо значение в a.row? Как мне добавить элемент с...

Как правильно создать динамическим массивом - C++
Надо найти маршрут коня на доске произвольного, ограниченного только памятью машины, размера. Использование рекурсивного алгоритма...

Работа со строками как с массивом символов - C++
Работаю в Borland C++3.1 Нt понимаю почему не компиллируется, выдает постоянно ошибку - &quot;Unable to open file 'TCLASS.LIB' &quot; ...

Как работать с массивом структур внутри класса? - C++
Есть класс. Внутри массив структур. Как обратиться к массиву структур, тобы я мог спокойно инициализировать массивы, менять? В общем надо...

Как сравнить case у switch с чаровским массивом? - C++
мне надо написать удобное консольное меню. Как я хочу єєто сделать: Создать массив строк. Каждая строка, єто команда или ключ как бы. ...

Как задать условие между счетчиком и массивом - C++
Всем привет. Как задать условие между счетчиком цикла For и длиной массива? Необходимо вывести количество элементов в массиве. string...

Как определить, является ли переменная встроенным массивом? - C++
Здравствуйте, прошу прощения за странное название темы, никак в голову ничего не влезет путного. Сразу к делу. Есть функция...

Не могу разобраться как сделать указатель функции с динамич. массивом - C++
int* mass(int p, int n) { cout &lt;&lt; &quot;Введите размер массива: &quot;; cin&gt;&gt;n; int *p = new int ; for (int i(0); i &lt; n; i ++) { cout &lt;&lt;...

Как правильно освободить память после работы с динамическим массивом - C++
Здравствуйте! Помогите понять в чём проблема при освобождении памяти. Простой пример: #define _CRT_SECURE_NO_WARNINGS #include...

Как определить совпавшие числа введенные с клавиатуры и сгенерированные массивом? - C++
В общем суть такая, генерируется масив из 10 чисел, затем вводится n-e кол-во чисел с клавиатуры, программа должна определить порядковые...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.11.2012, 07:44     работыас массивом как со списком #2
84 строка:
C++
1
for(int i = 0; i < n - 1; i++)
Лучше n передавать в функции по ссылке и там увеличивать или уменьшать, а в main() использовать уже изменённую n.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
03.11.2012, 10:13     работыас массивом как со списком #3
C++
1
    for(int i = 0; i < (n - 1); i++)
Или так. Иначе будет ошибка, которая не выявляется компилятором, но дает сбой при работе программы.

73-я, 25-я, 42-я строки, то же самое
Ответ Создать тему
Опции темы

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