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

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
And555
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 3
11.04.2012, 08:49     Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. #1
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++.
Условие:Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. Первая функция ищет простые числа и заносит их в новый массив, вторая – все числа кратные трем, третья – все четные числа. В программе создайте массив из 3-х указателей на эти функции. Добавьте меню, в котором пользователь может выбрать желаемую операцию.

Помогите найти ошибку, и соответственно исправить ее.

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
69
70
71
72
73
74
#include <math.h>
#include <stdlib.h>
#include <iostream>
bool is_prime( int n ) {
    double sqrt_n = sqrt( n );
    for ( int i = 2; i <= sqrt_n; i++) {
        if (n % i == 0) {
              return false;
        }
    }
    return true;
}
int * get_primes( const int * array, int count, int & outCount ) {
    int * result = new int[ count ];
    outCount = 0;
    for ( int i = 0; i < count; i++ ) {
        if ( is_prime( array[ i ] ) ) {
            result[ outCount ] = array[ i ];
            outCount++;
        }
    }
    return result;
}
int * get_divisible_3( const int * array, int count, int & outCount ) {
    int * result = new int[ count ];
    outCount = 0;
    for ( int i = 0; i < count; i++ ) {
        if ( array[ i ] % 3 == 0 ) {
            result[ outCount ] = array[ i ];
            outCount++;
        }
    }
    return result;
}
int * get_even( const int * array, int count, int & outCount ) {
    int * result = new int[ count ];
    outCount = 0;
    for ( int i = 0; i < count; i++ ) {
        if ( array[ i ] % 2 == 0 ) {
            result[ outCount ] = array[ i ];
            outCount++;
        }
    }
    return result;
}
typedef int * (*function_t)( const int * , int , int & );
function_t functions[ 3 ] = { get_primes, get_divisible_3, get_even };
const int COUNT = 100;
int array[ COUNT ];
void print_array( int * array, int count ) {
    for ( int i = 0; i < count; i++ ) {
        std::cout << array[ i ] << " ";
    }
    std::cout << std::endl;
}
int main()
{
    for ( int i = 0; i < COUNT; i++ ) {
        array[ i ] = rand() % 100;
    }
    std::cout << "init array: " << std::endl;
    print_array( array, COUNT );
    unsigned int code;
    do {
        std::cout << "0 - prime, 1 - div 3, 2 - even. 3 - exit" << std::endl;
        std::cin >> code;
        if ( code < 3 ) {
            int outCount;
            int * p = functions[ code ]( array, COUNT, outCount );
            print_array( p, outCount );
            delete []p;
        }
    } while( code != 3 );
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 08:49     Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Посмотрите здесь:

Динамический массив и указатель на указатель C++
C++ Функция принимает указатель на динамический массив и возвращает его же, но без чисел полиндромов (читается с обоих сторон одинаково - 234432)
Вернуть указатель на массив из функции C++
C++ Указатель на массив из n элементов
C++ Реализовать функцию, которая принимает массив и возвращает количество простых чисел в нем
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
11.04.2012, 09:06     Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. #2
В чем заключается ошибка? И раз вы уж пишите на С++ а не на Си то не
C++
1
2
#include <math.h>
#include <stdlib.h>
а
C++
1
2
#include <cmath>
#include <cstdlib>
And555
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 3
11.04.2012, 12:54  [ТС]     Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. #3
Увы, проблема не в этом...
Миниатюры
Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.  
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
11.04.2012, 19:34     Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. #4
Дело не в программе а в IDE, и скорей всего в настройках проекта. У меня ваша программа запускается, правда я не проверял выводимые результаты, попробуйте создать пустой проект консольного приложения и вставить туда ваш код.
Yandex
Объявления
11.04.2012, 19:34     Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Ответ Создать тему
Опции темы

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