С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ wxDev-C++ 7.3.1 не компилит. http://www.cyberforum.ru/cpp-beginners/thread544938.html
Что за глюк? Что ему не нравится?
C++ Сформировать электронную библиотеку личных дел студентов Доброе всем время суток ..очень надеюсь на вашу помощь . просто со структурами работать совсем не умею( Заранее спасибо Сформировать электронную библиотеку личных дел студентов, содержащую... http://www.cyberforum.ru/cpp-beginners/thread544925.html
Поменять местами первые слова (слова разделены пробелами) заданных строк, без использования процедур C++
Вводятся две строки произвольного текста. Поме-нять местами их первые слова (слова разделены пробелами). без подпроцедур.
Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? C++
Вот пример кода: double gaus(int n, double c, double d) { int k,k1,kn,i,j; vector<double> t; double temp; for (k=1;k<n-1;++k) { if (c==0) { for (k1=k+1;k1<n;++k1)
C++ Циклический однонаправленный список http://www.cyberforum.ru/cpp-beginners/thread544867.html
Циклический однонаправленный список, упорядоченный по убыванию. Хотелось бы увидеть пример такого списка)
C++ Методом касательных вычислить с погрешностью e(1>e>0) корень уравнения Всем доброго времени суток! Помогите найти ошибки и вдохнуть в программу жизнь :) Методом касательных вычислить с погрешностью e(1>e>0) корень уравнения x^3-2x^2+x-3=0 при начальном приближении... подробнее

Показать сообщение отдельно
And555
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 3

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

11.04.2012, 08:49. Просмотров 1567. Ответов 3
Метки (Все метки)

Пишу в 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 );
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.