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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Benzema
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 58
#1

Вызов функции - C++

05.10.2015, 22:43. Просмотров 239. Ответов 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
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
 
using namespace std;
 
void delEl(int * &array, int &numOfElem, int iDel) //Функция удаления элементов.
{
    int j;
    for (int j = iDel + 1; j < numOfElem; j++)
    {
        array[j - 1] = array[j];
    }
    numOfElem--;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int numOfElem;
    cout << "Введите число элементов массива: "; //Введите число элементов.
    cin >> numOfElem;
    int * array = new int(numOfElem);
    for (int i = 0; i < numOfElem; i++)
    {
        cout << "Массив[" << i << "] = "; //Ввод каждого элемента массива.
        cin >> array[i];
    }
    for (int i = 1; i < numOfElem; i++) //Проверка каждого элемента в массиве
    {
        if (array[i] == array[0])       //Если i-ый элемент равен нулевому
        {
            delEl(array, numOfElem, i); //То удаляем этот элемент.
        }
    }
    cout << "Новое содержание массива из " << numOfElem << " элементов:" << endl; //Вывод нового массива.
    for (int i = 0; i < numOfElem; i++)
    {
        cout << " " << array[i] << endl;
    }
    system("pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2015, 22:43     Вызов функции
Посмотрите здесь:

C++ Вызов функции
C++ Вызов функции.
C++ Вызов функции
Вызов функции C++
C++ Вызов функции в C++
C++ Вызов функции
C++ Вызов функции!
вызов функции C++
C++ Вызов функции
C++ Вызов функции
Вызов функции C++
C++ Вызов функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pav1uxa
1778 / 1618 / 617
Регистрация: 23.01.2014
Сообщений: 5,848
Завершенные тесты: 1
05.10.2015, 23:05     Вызов функции #2
Цитата Сообщение от Benzema Посмотреть сообщение
Разработать и испытать функцию, которая удаляет из целочисленного одномерного массива все элементы, совпадающие по значению с его начальным элементом, и возвращает новый размер массива.
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
/* Разработать и испытать функцию, которая удаляет из целочисленного
 * одномерного массива все элементы, совпадающие по значению с его
 * начальным элементом, и возвращает новый размер массива
 */
 
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int f(std::vector<int>& v)
{
    v.erase(std::remove(v.begin()+1, v.end(), v.at(0)), v.end());
    return v.size();
}
 
int main()
{
    std::vector<int> v{0, 1, 2, 0, 1, 2, 0, 1, 2};
    int size = v.size();
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl << "Arrsy size: " << size << std::endl;
    int newSize = f(v);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl << "New arrsy size: " << newSize << std::endl;
    return 0;
}
Benzema
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 58
05.10.2015, 23:07  [ТС]     Вызов функции #3
Цитата Сообщение от pav1uxa Посмотреть сообщение
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
/* Разработать и испытать функцию, которая удаляет из целочисленного
 * одномерного массива все элементы, совпадающие по значению с его
 * начальным элементом, и возвращает новый размер массива
 */
 
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int f(std::vector<int>& v)
{
    v.erase(std::remove(v.begin()+1, v.end(), v.at(0)), v.end());
    return v.size();
}
 
int main()
{
    std::vector<int> v{0, 1, 2, 0, 1, 2, 0, 1, 2};
    int size = v.size();
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl << "Arrsy size: " << size << std::endl;
    int newSize = f(v);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl << "New arrsy size: " << newSize << std::endl;
    return 0;
}
Спасибо конечно, но вектора мы еще не изучали.
pav1uxa
1778 / 1618 / 617
Регистрация: 23.01.2014
Сообщений: 5,848
Завершенные тесты: 1
05.10.2015, 23:42     Вызов функции #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Benzema Посмотреть сообщение
Спасибо конечно, но вектора мы еще не изучали.
А setlocale(), system() изучали?

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
/* Разработать и испытать функцию, которая удаляет из целочисленного
 * одномерного массива все элементы, совпадающие по значению с его
 * начальным элементом, и возвращает новый размер массива
 */
 
#include <iostream>
 
int f(int *array, int size)
{
    int newSize = size;
    for (int i = 1; i < newSize; i++)
    {
        if (array[0] == array[i])
        {
            for (int j = i; j < newSize - 1; j++)
            {
                array[j] = array[j+1];
            }
            newSize--;
            i--;
        }
    }
    return newSize;
}
 
void printArray(int *array, int size)
{
    std::cout << "Array length = " << size << " : ";
    for (int i = 0; i < size; ++i)
    {
        std::cout << array[i] << " ";
    }
    std::cout << std::endl;
}
 
int main()
{
    int arraySize;
    int *array;
    
    std::cout << "Array size = ";
    std::cin >> arraySize;
    std::cout << std::endl;
    
    array = new int[arraySize];
    
    for (int i = 0; i < arraySize; ++i)
    {
        std::cout << "array[" << i <<"] = ";
        std::cin >> array[i];
    }
 
    printArray(array, arraySize);
 
    arraySize = f(array, arraySize);
 
    printArray(array, arraySize);
    
    return 0;
}
Benzema
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 58
05.10.2015, 23:56  [ТС]     Вызов функции #5
Цитата Сообщение от pav1uxa Посмотреть сообщение
А setlocale(), system() изучали?

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
/* Разработать и испытать функцию, которая удаляет из целочисленного
 * одномерного массива все элементы, совпадающие по значению с его
 * начальным элементом, и возвращает новый размер массива
 */
 
#include <iostream>
 
int f(int *array, int size)
{
    int newSize = size;
    for (int i = 1; i < newSize; i++)
    {
        if (array[0] == array[i])
        {
            for (int j = i; j < newSize - 1; j++)
            {
                array[j] = array[j+1];
            }
            newSize--;
            i--;
        }
    }
    return newSize;
}
 
void printArray(int *array, int size)
{
    std::cout << "Array length = " << size << " : ";
    for (int i = 0; i < size; ++i)
    {
        std::cout << array[i] << " ";
    }
    std::cout << std::endl;
}
 
int main()
{
    int arraySize;
    int *array;
    
    std::cout << "Array size = ";
    std::cin >> arraySize;
    std::cout << std::endl;
    
    array = new int[arraySize];
    
    for (int i = 0; i < arraySize; ++i)
    {
        std::cout << "array[" << i <<"] = ";
        std::cin >> array[i];
    }
 
    printArray(array, arraySize);
 
    arraySize = f(array, arraySize);
 
    printArray(array, arraySize);
    
    return 0;
}
Изучали) Спасибо.
Yandex
Объявления
05.10.2015, 23:56     Вызов функции
Ответ Создать тему
Опции темы

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