Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 1
1

Работа с динамическим массивом

26.11.2015, 22:40. Просмотров 365. Ответов 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdlib.h>
#include <stdio.h>
 
void dob (double** mas, int* n)
{double x;
 int i;
 *n=*n+1;
 printf ("vvedite x\nx=");
      scanf("%lf", & x);
 double*m1=new double[*n];
 for (i=0; i<*n-1; i++)
    m1[i]=*mas[i];
 m1[*n-1]=x;
 delete[]*mas;
 *mas=m1;
}
 
void ud (double** mas, int *n)
{int i, k;
 printf ("vvedite # udalyaemogo elementa \nk=");
      scanf("%d", & k);
 double*m1=new double[*n-1];
 for (i=0; i<k-1; i++)
    m1[i]=*mas[i];
 for (i=k-1; i<*n-1; i++)
    m1[i]=*mas[i+1];
 delete[]*mas;
 *mas=m1;
 *n=*n-1;
}
 
void dob1 (double** mas, int *n)
{double x;
 int i, k;
 printf ("vvedite # dobavlyaemogo elementa \nk=");
      scanf("%d", & k);
 printf ("vvedite znachenie elementa\nx=");
      scanf("%lf", & x);
 double*m1=new double[*n+1];
 for (i=0; i<k-1; i++)
    m1[i]=*mas[i];
 for (i=k-1; i<*n+1; i++)
    m1[i]=*mas[i-1];
 delete[]*mas;
 *mas=m1;
 *n=*n+1;
}
 
int main(int argc, char *argv[])
{ int n,i,k;
  double x;
  printf ("vvedite kol-vo elementov\n");
  printf ("n=");
  scanf("%d",&n);
  double*mas = new double [n];
  printf ("vvedite elementy\n");
  for (i=0;i<n;i++)
      scanf("%lf", &mas[i]);
  printf ("vyberite operaciyu:\n1-dobavlenie\n2-udalenie po indexu\n3-dobavlenie po indexu\n"); 
  scanf("%d",&k);
  if (k==1)
    dob(&mas, &n);
     else
        if (k==2)
            ud (&mas, &n);
                else
                    if (k==3)
                        dob1 (&mas, &n);
 
  printf("\n n=%d\n", n);
  for (i=0;i<n;i++)
      printf("%lf\n", mas[i]);
  delete [] mas;
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2015, 22:40
Ответы с готовыми решениями:

Работа с динамическим массивом
Дано: динамический двумерный массив. Определить сумму всех элементов (с помощью функции, массив и...

Работа с динамическим массивом структур
Односвязный список. Проблема (скорее всего) в строке ListPoint1 = pointer; Pointer использую как...

Работа с динамическим двумерным массивом
Написал код. В двумерном массиве 5х5 находится максимальное значение каждой строки и затем...

Работа с матрицей, представленной динамическим массивом
Есть задание: Написать программу, которая осуществляет добавление, удаление строки или столбца в...

1
95 / 78 / 74
Регистрация: 11.05.2015
Сообщений: 189
27.11.2015, 00:27 2
При добавлении элемента я нашел ошибку в этой строчке.
Цитата Сообщение от Afi10 Посмотреть сообщение
m1[i]=*mas[i];
Сначала происходит операция индексации, а затем разыменования.
Что бы от этого избежать, можно сделать следующим образом:
C++
1
m[i]=(*mas)[i]
А еще лучше изменить аргументы функции.
Цитата Сообщение от Afi10 Посмотреть сообщение
void dob (double** mas, int* n)
Так вы передаете в функцию указатель на указатель начала массива
C++
1
void dob (double* mas, int* n)
а так просто указатель на начало массива и тогда в той строчке можно просто написать
C++
1
m[i]=mas[i]
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2015, 00:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с динамическим массивом: три варианта инициализации в отдельной функции
Не правильно выводит cout &lt;&lt; &quot;1 елемент массива: &quot; &lt;&lt; mainArray &lt;&lt; endl; В чем проблема? Спасибо....

Работа с динамическим массивом (Упорядочить его по возрастанию элементов в каждом столбце)
Дан массив L,размером n*m.Упорядочить его по возрастанию элементов в каждом столбце. Программа...

Класс с динамическим массивом
доброго времени суток! помогите мне немножко: создать клас vector для сохранения массиву,...

Проблема с динамическим массивом С++
Есть задача: Дан Двумерный массив целых чисел. В каждой его строке найти: а) сумму отрицательных...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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