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

Массивы.Из массива удалить последний из нечетных элементов - C++

Восстановить пароль Регистрация
 
Виктор242424
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 37
06.01.2013, 19:13     Массивы.Из массива удалить последний из нечетных элементов #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
#include "stdafx.h"
#include "locale.h"
 
 
void vod(int*a,int b)
{
    int i;
    printf("Введите массив A[%d]\n",b);
        for(i = 0;i < b;++i)
            scanf_s("%d",&a[i]);
}
void show (int*a,int b)
{
    int i;
    for(i = 0;i < b; ++i)
        printf("%d",a[i]);
}
void work(int *a,int *b)
{
    int i;
    for(i = 0; i < *b; ++i)
        if(a[i]%2 == 1) 
        {
            for (int j = i + 1; j < (*b); j++) 
            {
                a[i - 1] = a[i];
            }
            (*b)--;
            i--;
 
        }
 
}
void main()
{
    int a[5];
    setlocale(LC_CTYPE,"Russian");
    printf("Из массива удалить последний из нечетных элементов.\n");
    vod(a,5);
    int size = 5;
    work(a,&size);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2013, 19:13     Массивы.Из массива удалить последний из нечетных элементов
Посмотрите здесь:

удалить из массива первую строку последний столбец C++
C++ Удалить из массива последний отрицательный элемент.
Удалить из массива последний отриц. элемент C++
Из массива A удалить те цепочки нечетных элементов, в которых нет ни одного элемента из массива B C++
Массивы. Удалить все столбцы, в которых четное количество нечетных элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buildog
40 / 40 / 2
Регистрация: 29.04.2012
Сообщений: 185
06.01.2013, 23:48     Массивы.Из массива удалить последний из нечетных элементов #2
А что значит удалить элемент? Заменить на какой то? Или обозначить нулем? Просто Если массив статический, то заменить нулем лучше.

P.S. Если уж на то пошло проще с конца пробежать, встретить первый элемент и заменить нулем
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
06.01.2013, 23:53     Массивы.Из массива удалить последний из нечетных элементов #3
Цитата Сообщение от Buildog Посмотреть сообщение
А что значит удалить элемент?
Думаю имеется ввиду сжать массив.
Buildog
40 / 40 / 2
Регистрация: 29.04.2012
Сообщений: 185
06.01.2013, 23:58     Массивы.Из массива удалить последний из нечетных элементов #4
Так если сжать статический массив, надо что то придумать с последним элементом. Или просто делать массив динамическим
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.01.2013, 00:03     Массивы.Из массива удалить последний из нечетных элементов #5
Цитата Сообщение от Buildog Посмотреть сообщение
Так если сжать статический массив, надо что то придумать с последним элементом.
Ничего не надо думать, из массива нельзя удалять элементы, поэтому подходящий вариант сжимание массива.
Тс ваш код это код на СИ, если надо на С++, то упрощённая версия можно сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream> 
 
int main() 
{ 
    const int size = 10; 
    int array[size] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    int i, j; 
 
    for ( i = size - 1; i >= 0; i--)  
        if(array[i] % 2 != 0) 
        {
            for ( j = i; j < size - 1; j++) 
                array[j] = array[j+1]; 
            break;  
        } 
 
        for ( i = 0; i < size - 1; ++i) 
            std::cout << array[i] << " "; 
        std::cout << std::endl;
}
Виктор242424
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 37
07.01.2013, 12:09  [ТС]     Массивы.Из массива удалить последний из нечетных элементов #6
Цитата Сообщение от David Sylva Посмотреть сообщение
Ничего не надо думать, из массива нельзя удалять элементы, поэтому подходящий вариант сжимание массива.
Тс ваш код это код на СИ, если надо на С++, то упрощённая версия можно сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream> 
 
int main() 
{ 
    const int size = 10; 
    int array[size] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    int i, j; 
 
    for ( i = size - 1; i >= 0; i--)  
        if(array[i] % 2 != 0) 
        {
            for ( j = i; j < size - 1; j++) 
                array[j] = array[j+1]; 
            break;  
        } 
 
        for ( i = 0; i < size - 1; ++i) 
            std::cout << array[i] << " "; 
        std::cout << std::endl;
}
объясните мне пожалуйста значение двух последних строк)
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.01.2013, 12:12     Массивы.Из массива удалить последний из нечетных элементов #7
Это цикл в котором выводим массив
Пустая строка
Igor3D
792 / 409 / 33
Регистрация: 01.10.2012
Сообщений: 2,066
07.01.2013, 12:21     Массивы.Из массива удалить последний из нечетных элементов #8
Лучше так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
 
int main() 
{ 
    int size = 10; 
    int array[size] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    int i, j; 
 
    for ( i = size - 1; i >= 0; i--)  {
        if(array[i] % 2 != 0) 
        {
            --size;
            for ( j = i; j < size; j++) 
                array[j] = array[j+1]; 
            break;  
        } 
    } 
    for ( i = 0; i < size; ++i) 
        std::cout << array[i] << " "; 
    std::cout << std::endl;
}
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.01.2013, 12:25     Массивы.Из массива удалить последний из нечетных элементов #9
Цитата Сообщение от Igor3D Посмотреть сообщение
Лучше так
Чем? У меня например на Visual Studio показывает ошибку, потому что размер массива должен быть константным.Ваш код не везде отработает и данный аспект не соответствует стандарту.
Виктор242424
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 37
07.01.2013, 12:31  [ТС]     Массивы.Из массива удалить последний из нечетных элементов #10
Цитата Сообщение от David Sylva Посмотреть сообщение
Это цикл в котором выводим массив
Пустая строка
понял.спасибо
Igor3D
792 / 409 / 33
Регистрация: 01.10.2012
Сообщений: 2,066
07.01.2013, 12:45     Массивы.Из массива удалить последний из нечетных элементов #11
Цитата Сообщение от David Sylva Посмотреть сообщение
Чем?
Массив может не иметь ни одного нечетного элемента

Цитата Сообщение от David Sylva Посмотреть сообщение
У меня например на Visual Studio показывает ошибку, потому что размер массива должен быть константным.Ваш код не везде отработает и данный аспект не соответствует стандарту.
Согласен (я на gcc/icc)
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.01.2013, 12:47     Массивы.Из массива удалить последний из нечетных элементов #12
Цитата Сообщение от Igor3D Посмотреть сообщение
Массив может не иметь ни одного нечетного элемента
Согласен.
Igor3D
792 / 409 / 33
Регистрация: 01.10.2012
Сообщений: 2,066
07.01.2013, 12:54     Массивы.Из массива удалить последний из нечетных элементов #13
C++
1
2
3
4
5
6
7
8
9
10
void work( int * a, int & size )  // вызов: work(a, size)
{
    for (int i = size - 1; i >= 0; --i)
        if (a[i] % 2) {
            --size;
            for (int j = i; j < size; ++j) 
                a[j] = a[j + 1];
            return;
        }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2013, 17:47     Массивы.Из массива удалить последний из нечетных элементов
Еще ссылки по теме:

Удалить последний элемент массива C++
C++ Массивы. Написать инструкцию, по которой меняется 1 и последний элемент массива
C++ Найти суммы четных элементов (элементов с четным номером) массива вещественных чисел A(22) и нечетных элементов

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

Или воспользуйтесь поиском по форуму:
AlvinMax
 Аватар для AlvinMax
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 16
07.01.2013, 17:47     Массивы.Из массива удалить последний из нечетных элементов #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
#include <iostream>
 
 using namespace std;
 
int main() 
{ 
 
 int n; cin>>n;
 int a[1000],i;
 for (i=1;i<=n;++i)
     cin >> a[i];
 int t,k=0;
 for (i=n;i>=1;--i)
     if (a[i]%2==1)
     { t=i;break;}
 int b[999];
 for (i=1;i<=n;++i)
     if (i!=t)
     { ++k; b[k]=a[i];}
     for (i=1;i<=k;++i)
     cout << b[i] << ' ';
     system("pause");
  
}
Yandex
Объявления
07.01.2013, 17:47     Массивы.Из массива удалить последний из нечетных элементов
Ответ Создать тему
Опции темы

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