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

Написать программу, «сжимающую» целочисленный массив - C++

Восстановить пароль Регистрация
 
Ferz137
1 / 1 / 0
Регистрация: 08.01.2014
Сообщений: 17
08.01.2014, 15:50     Написать программу, «сжимающую» целочисленный массив #1
Не получается написать программу. Помогите, пожалуйста
Написать программу, «сжимающую» целочисленный массив A[10] так, чтобы оказались выброшенными нулевые элементы. Написать функции:
- Заполнения массива в диалоговом режиме.
– Вывода одномерного массива.
– Определения, имеются ли в массиве нулевые элементы.
– Сжатия одномерного массива. При реализации функции дополнительного массива заводить.
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
08.01.2014, 16:08     Написать программу, «сжимающую» целочисленный массив #2
Сжатия одномерного массива.
Это как ?
Ferz137
1 / 1 / 0
Регистрация: 08.01.2014
Сообщений: 17
08.01.2014, 16:10  [ТС]     Написать программу, «сжимающую» целочисленный массив #3
Сжать-выбросить нулевые элементы. Я так понял.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
08.01.2014, 16:29     Написать программу, «сжимающую» целочисленный массив #4
Как то так
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
#include <iostream>
#include <algorithm>
 
void input(int & var)
{
  std::cout << "Input element : " << std::endl;
  std::cin >> var;
}
 
void output(int & var)
{
  std::cout << var << " ";
}
 
int main()
{   
 size_t SIZE;
 std::cout << "Input size array : " << std::endl;
 std::cin >> SIZE;
 
 int * array = new int[SIZE];
 
 std::for_each(array, array + SIZE, input);
 std::for_each(array, array + SIZE, output); std::cout << std::endl;
 
 std::for_each(array, std::remove(array, array + SIZE, 0), output); std::cout << std::endl;
 
  system("PAUSE");
  return 0;
}
Ferz137
1 / 1 / 0
Регистрация: 08.01.2014
Сообщений: 17
08.01.2014, 16:37  [ТС]     Написать программу, «сжимающую» целочисленный массив #5
Спасибо,но мне желательно сделать эту программу без библиотеки алгоритмов, а через циклы for и while. Там задача на ввод и вывод массивов с удалением элемента если он равен нулевому-я могу ввести,подредактировать и вывести,но удалить элемент не знаю как если он не соответствует условию.
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
08.01.2014, 16:37     Написать программу, «сжимающую» целочисленный массив #6
main.cpp:
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
#include <iostream>
#include <vector>
using namespace std;
 
int main () {
    int array[] = { 27,10,15,12,0,30,11,54,0,33 };
    vector<int> A(array, array + sizeof(array) / sizeof(int) );
 
    // print A
    cout << "A: ";
    for(vector<int>::iterator it=A.begin(); it!=A.end(); it++)
        cout << (*it) << " ";
    cout << endl;
 
    // delete null
    for(vector<int>::iterator it=A.begin(); it!=A.end(); it++)
        if( (*it) == 0 )
            it=A.erase(it);
 
    // print A
    cout << "A: ";
    for(vector<int>::iterator it=A.begin(); it!=A.end(); it++)
        cout << (*it) << " ";
    return 0;
}
output:
Код
A: 27 10 15 12 0 30 11 54 0 33 
A: 27 10 15 12 30 11 54 33
Ferz137
1 / 1 / 0
Регистрация: 08.01.2014
Сообщений: 17
08.01.2014, 16:56  [ТС]     Написать программу, «сжимающую» целочисленный массив #7
А здесь целочисленные значения сразу в программу вводятся как я понял? Или через консоль? У меня что-то ошибки выдаёт...

Добавлено через 2 минуты
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>
#include <conio.h>
using namespace std;
    int main()
    {
        setlocale ( LC_All, "Russian");
        int A[10]
        cout <<" Заполнение массива:\n";
        for (int i = 0; i< 10 ; i++)
        {
            cout << Введите значение " << i << "элемента массива:";
                while (!(cin >> A[i]))
                { cin.clear();
            while (cin.get()!='\n');
            cout <<" Введите значение " << i << "элемента массива:";
            }
        }
        system ("cls");
        for (int i = 0; i<10; i ++)
            cout << " Исходный массив:\n";
        cout <<" A[ "<<i<<'] = "A[i]<< endl;
            _getch()
            return 0;
    }
Я вот на этом остановился. Не знаю как нулевые элементы выделить и удалить из массива,оставив без них...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2014, 17:21     Написать программу, «сжимающую» целочисленный массив
Еще ссылки по теме:

Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 C++
Дан целочисленный массив M*N.Разработать программу нахождения суммы особых элементов массива C++
C++ Дан двумерный целочисленный массив.Память выделить динамически, заполнить случайными числами. Вывести массив в матричной форме. Вычислить количество э

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

Или воспользуйтесь поиском по форуму:
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
08.01.2014, 17:21     Написать программу, «сжимающую» целочисленный массив #8
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
#include <iostream>
#include <clocale>
 
void fillArray(int *array, size_t arraySize);
void printArray(int *array, size_t arraySize);
bool zeroInArray(int *array, size_t arraySize);
void zeroElementsDelete(int *array, size_t *arraySize);
 
int main()
{
    std::setlocale(0, "");
    const size_t arraySize(10);
    
    int array[arraySize];
    fillArray(array, arraySize);
    printArray(array, arraySize);
 
    if (zeroInArray(array, arraySize)) {
        size_t newArraySize(arraySize);
        zeroElementsDelete(array, &newArraySize);
        printArray(array, newArraySize);
    } else {
        std::cout << "В массиве нет нулевых элементов!" << std::endl;
    }
    
    std::system("pause");
    return 0;
}
 
void fillArray(int *array, size_t arraySize)
{
    std::cout << "Заполните массив: " << std::endl;
    for (size_t i = 0; i < arraySize; i++) {
        std::cout << "Элемент №" << (i + 1) << ": ";
        std::cin >> *(array + i);
    }
}
 
void printArray(int *array, size_t arraySize)
{
    std::cout << "Массив: " << std::endl;
    for (size_t i = 0; i < arraySize; i++) {
        std::cout << *(array + i) << ' ';
    }
    std::cout << std::endl;
}
 
bool zeroInArray(int *array, size_t arraySize)
{
    for (size_t i = 0; i < arraySize; i++) {
        if (!(*(array + i)))
            return true;
    }
    return false;
}
 
void zeroElementsDelete(int *array, size_t *arraySize)
{
    size_t zeroCounter(0);
    for (size_t i = 0; i < *arraySize; i++) {
        if (!(*(array + i))) {
            zeroCounter++;
        } else {
            *(array + i - zeroCounter) = *(array + i);
        }
    }
    *arraySize -= zeroCounter;
}
Yandex
Объявления
08.01.2014, 17:21     Написать программу, «сжимающую» целочисленный массив
Ответ Создать тему
Опции темы

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