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

Вставка элемента в одномерный массив - C++

Восстановить пароль Регистрация
 
AlexHolmes
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
18.04.2014, 17:13     Вставка элемента в одномерный массив #1
Задан упорядоченный по возростанию массив целых чисел A [1: n] и число B. Для числа B найти такое место среди элементов массива А, чтобы после вставки числа В на это место упорядоченность массива не нарушилась. Если вследствие равенства между собой значений элементов массива А число В можно вставлять на разные места, то следует определить ближайшее к началу массива место. Эта задача называется задачей поиска места элемента.

У меня не выходит сама вставка элемента так, чтоб не нарушить последовательность. Новый элемент просто заменяет тот, который идет за ним.
Вот мой код.
C++ (Qt)
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int A[20],n=10,b,c,tmp, k;
int i;
 
printf("Vvedit b:\n");
scanf("%d",&b);
 for(i=0;i<n;i++)
  A[i]=rand()%(110)-20;
  printf("\nPochatkovi massiv:\n");
   for(i=0;i<n;i++)
    printf("X[%d]=%d\n",i,A[i]);
    printf("\n***Vporadkovano za zrostanyam*****\n");
     for(k = n-1; k >=0; k--)
      for(i=0; i < k ; i++)
       if(A[i]>=A[i+1])
       {
       tmp=A[i];
       A[i]=A[i+1];
       A[i+1]=tmp;
       }
        for(i=0;i<n;i++)
         printf("A[%d]=%d\n",i,A[i]);
          printf("*************************************\n");
          c=-1;
          i=0;
          while ((c<0) && (i<n))
           if (b<=A[i])
            c=i;
            else
             i++;
              if (c<0)
              c=n;
              printf("Chislo mae stoyati na %d pozicii\n",c);
              printf("*************************************\n");
               for(i=n;i<=0;i--)
                if (i>c)
                A[i]=A[i-1];
                A[c]=b;
                 for(i=0;i<=n;i++)
                  printf("A[%d]=%d\n",i,A[i]);
}
Пожалуйста, подскажите как исправить ошибку, чтоб все верно работало.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2014, 17:13     Вставка элемента в одномерный массив
Посмотрите здесь:

Вставка в одномерный массив произвольного элемента. C++
Вставка в одномерный массив C++
Одномерный динамический массив, найти значение и позицию максимального элемента C++
C++ Вставка элемента в массив после последнего положительного
C++ Вставка нового элемента в массив (дополнить код)
Вставка нового элемента в двумерный динамический массив дополнить код C++
C++ Запись в одномерный массив не с нулевого элемента
Вставка нового элемента в упорядоченный массив (без нарушения упорядоченности) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
18.04.2014, 17:35     Вставка элемента в одномерный массив #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цикл сдвига с неправильным условием. Надо так:
C++
1
               for(i=n; i>c; i--) A[i]=A[i-1];
И датчик случайных чисел не забывай инициализировать, а то всё время одно и тоже в массиве.
AlexHolmes
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
18.04.2014, 17:48  [ТС]     Вставка элемента в одномерный массив #3
Цитата Сообщение от nmcf Посмотреть сообщение
Цикл сдвига с неправильным условием. Надо так:
;
Спасибо большое))
Yandex
Объявления
18.04.2014, 17:48     Вставка элемента в одномерный массив
Ответ Создать тему
Опции темы

Текущее время: 12:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru