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

Удалить k - ый элемент - C++

Восстановить пароль Регистрация
 
Коля123
0 / 0 / 0
Регистрация: 08.03.2010
Сообщений: 18
02.04.2010, 00:43     Удалить k - ый элемент #1
Никак не разберусь с этой задачей:

Удалить k - ый элемент массива A, состоящий из N элементов.

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2010, 00:43     Удалить k - ый элемент
Посмотрите здесь:

Динамический двусвязный список (операции: добавить элемент после данного, удалить данный элемент …) C++
C++ Однонаправленный список. Операции: удалить элемент из заданной позиции, добавить элемент в заданную позицию,проверка на неравенство
Структура "Информация": - носитель; - объем; - название; - автор. Удалить первый элемент с заданным объемом информации, добавить элемент перед элемент C++
C++ Удалить первый элемент с заданным объемом информации, добавить элемент перед элементом с указанным номером
Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
02.04.2010, 01:00     Удалить k - ый элемент #2
ЯП какой?
массив какого типа?

Добавлено через 2 минуты
Цитата Сообщение от Коля123 Посмотреть сообщение
Удалить k - ый элемент массива A, состоящий из N элементов.
т.е. массив состоящий из N элементов? или k состоящий из N элементов?
yura`
 Аватар для yura`
11 / 21 / 0
Регистрация: 09.02.2010
Сообщений: 107
02.04.2010, 01:44     Удалить k - ый элемент #3
Цитата Сообщение от niXman Посмотреть сообщение
массив какого типа?
та любого, чтоб просто было удобно с ним работать.

Цитата Сообщение от niXman Посмотреть сообщение
т.е. массив состоящий из N элементов? или k состоящий из N элементов?
Масив А состоящий из N елементов, а k входит в масив А.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
02.04.2010, 01:47     Удалить k - ый элемент #4
C++
1
2
3
4
5
6
7
8
9
10
11
#include <vector>
int main() {
   int k = 2;
   std::vector<int> vec;
   vec.push_back(0);
   vec.push_back(1);
   vec.push_back(2);
   vec.push_back(3);
 
   vec.erase(vec.begin()+k);
}
Коля123
0 / 0 / 0
Регистрация: 08.03.2010
Сообщений: 18
02.04.2010, 01:54  [ТС]     Удалить k - ый элемент #5
niXman, а это весь текст программы, или его часть? а то тут ниче не вводится, и ниче не выдает, а так работает.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
02.04.2010, 01:55     Удалить k - ый элемент #6
Цитата Сообщение от Коля123 Посмотреть сообщение
тут ниче не вводится, и ниче не выдает
так об этом никто ни просил
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
02.04.2010, 02:47     Удалить k - ый элемент #7
C:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
/* #include <windows.h> для отображения русских букв в винде */
 
int main(void){
    int *arr, size, pos;
    
    /* для отображения русских букв в винде
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    */
    
    srand(time(NULL));
    
    printf("Количество элементов: ");
    if ( scanf("%d", &size) != 1 || size < 1 ){
        fprintf(stderr, "Плохое значение или ошибка ввода!\n");
        exit(1);
    }
    if ( ( arr = (int*)malloc(size * sizeof(int)) ) == NULL ){
        fprintf(stderr, "Ошибка памяти!\n");
        exit(1);
    }
    printf("Массив:\n");
    for ( pos = 0; pos < size; ++pos )
        printf("%3d", ( arr[pos] = rand() % 100 ));
    
    printf("\nИндекс удаляемого элемента (начиная с 0): ");
    if ( scanf("%d", &pos) != 1 || pos < 0 || pos > size - 1 ){
        fprintf(stderr, "Плохое значение или ошибка ввода!\n");
        exit(1);
    }
    if ( pos < size - 1 )
        memmove(arr + pos, arr + pos + 1, sizeof(int) * (size - pos - 1));
    if ( ( arr = (int*)realloc(arr, --size * sizeof(int)) ) == NULL ){
        fprintf(stderr, "Ошибка памяти!\n");
        exit(1);
    }
    
    printf("Массив без удалённого элемента:\n");
    for ( pos = 0; pos < size; ++pos )
        printf("%3d", arr[pos]);
    printf("\n");
    
    free(arr);
    exit(0);
}
Добавлено через 2 минуты
Поправил, теперь всё работает.
Коля123
0 / 0 / 0
Регистрация: 08.03.2010
Сообщений: 18
12.04.2010, 21:53  [ТС]     Удалить k - ый элемент #8
easybudda, насколько я понял тут задача сделана на С, а мы этот язык не изучали пока...Не могли бы Вы переписать его на код С++, заранее благодарен
DEUCE
 Аватар для DEUCE
7 / 7 / 2
Регистрация: 11.04.2010
Сообщений: 25
12.04.2010, 22:25     Удалить k - ый элемент #9
Цитата Сообщение от Коля123 Посмотреть сообщение
Удалить k - ый элемент массива A, состоящий из N элементов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream.h>
void main()
{ int i;
  double n, k;
  cout<<"vvedite koli4 elementov massiva: \n";
  cin>>n;
  cout<<"nomer udalyaemogo elementa \n";
  cin>>k;
  k--;
  if (n>k){
  double *A=new double [n];
  cout<<" Vvedite massiv: \n";
  for(i=0; i<n; i++){ cin>>A[i];}
  for (i=k+1; i<n; i++) A[i-1]=A[i];
  for (i=0; i<n-1; i++)
  cout<<A[i]<<" ";}
}
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
12.04.2010, 22:33     Удалить k - ый элемент #10
Цитата Сообщение от Коля123 Посмотреть сообщение
Не могли бы Вы переписать его на код С++, заранее благодарен
Да и тот код тоже можно рассматривать как код на C++, всё же у C++ почти полная совместимость с C.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.04.2010, 23:00     Удалить k - ый элемент #11
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
    
/*
*   Удалить k - ый элемент массива A, состоящий из N элементов.
*/
 
int main(){
    int cnt, tmp;
    std::cout << "Number of elements: ";
    std::cin >> cnt;
    std::vector<int> vec;
    while ( cnt-- ){
        std::cout << "Value (" << cnt << " left): ";
        std::cin >> tmp;
        vec.push_back(tmp);
    }
    std::cout << "Index of element to remove: ";
    std::cin >> cnt;
    if ( cnt < 0 || cnt > vec.size() - 1 ){
        std::cerr << "Wrong index!" << std::endl;
        return 1;
    }
    vec.erase(vec.begin() + cnt);
    std::cout << "Array without removed element:" << std::endl;
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    
    return 0;
}
Коля123
0 / 0 / 0
Регистрация: 08.03.2010
Сообщений: 18
20.04.2010, 22:21  [ТС]     Удалить k - ый элемент #12
Извините конечно, программа работает, но я НИЧЕГО понять не могу...Просто я привык к другому "виду" языка С++. Вот как например показано в этой теме: Качественные детали .
easybudda, или еще кто-нибудь, нельзя переделать на код такого типа если не трудно, ОЧЕНЬ НУЖНО. Заранее благодарен.
frigoshor
Сообщений: n/a
23.04.2010, 20:17     Удалить k - ый элемент #13
пожалуйста нарисуйте блок схему буду очень благодарен.
Radjuk
 Аватар для Radjuk
134 / 68 / 12
Регистрация: 10.10.2009
Сообщений: 187
23.04.2010, 20:36     Удалить k - ый элемент #14
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 <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
 
void main()
{
 clrscr();
 int n,i,m;
 cout<<"Введите размерность массива:";
 cin>>n;
 if(n == 0)
  {
    cout<<"Ошибка розмерности!";
    getch();
    exit(0);
   }
 int *a=(int*)malloc(sizeof(int));
 for(i=0;i<n;i++)
  {
   a[i]=random(100);
   cout<<a[i]<<" ";
  }
 
 cout<<"\n‚Введите индекс елемента который надо удалить:";
 cin>>m;
 
 for(i=0;i<n;i++)
  {
   if(m-1>=n || m-1<=0)
    {
     cout<<"Ошибка индекса!";
     getch();
     exit(0);
    }
   else
    {
     for(i=m-1;i<n;i++)
      {
       int temp = a[i];
       a[i] = a[i+1];
       a[i+1] = temp;
      }
     n--;
    }
  }
  for(i=0;i<n;i++)
   {
    cout<<a[i]<<" ";
   }
 free(a);
 getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2010, 22:13     Удалить k - ый элемент
Еще ссылки по теме:

C++ Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент
C++ Проверить, упорядочены ли элементы, заменить первый нулевой элемент и удалить указанный элемент из массива
Найти в двумерном массиве максимальный элемент и удалить строку и столбцы, содержащие найденный элемент C++

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

Или воспользуйтесь поиском по форуму:
frigoshor
Сообщений: n/a
23.04.2010, 22:13     Удалить k - ый элемент #15
Нарисуйте блок схему на эту задачу пожалуйста я в долгу не останусь
Yandex
Объявления
23.04.2010, 22:13     Удалить k - ый элемент
Ответ Создать тему
Опции темы

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