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

Поиск простых чисел и формирование из них массива - C++

Восстановить пароль Регистрация
 
Hqw33
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 21
03.04.2012, 08:31     Поиск простых чисел и формирование из них массива #1
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++.

Помогите пожалуйста "написать":

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. Первая функция ищет простые числа и заносит их в новый массив, вторая – все числа кратные трем, третья – все четные числа. В программе создайте массив из 3-х указателей на эти функции. Добавьте меню, в котором пользователь может выбрать желаемую операцию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 08:31     Поиск простых чисел и формирование из них массива
Посмотрите здесь:

C++ поиск факториала простых чисел в диапазоне (на с++)
C++ Поиск простых чисел в массиве
Конкурс(поиск простых чисел) C++
C++ Поиск простых чисел
C++ Поиск простых чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.04.2012, 08:39     Поиск простых чисел и формирование из них массива #2
Давай прототипы самих функций, иначе указатели на них не определимы. И раз уж пошла интрефейсная графика, то назових хотябы опеационную систему и среду разработки.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
03.04.2012, 09:27     Поиск простых чисел и формирование из них массива #3
Цитата Сообщение от taras atavin Посмотреть сообщение
И раз уж пошла интрефейсная графика, то назових хотябы опеационную систему и среду разработки.
Цитата Сообщение от Hqw33 Посмотреть сообщение
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++.
Чучуточку внимательнее
Цитата Сообщение от taras atavin Посмотреть сообщение
Давай прототипы самих функций, иначе указатели на них не определимы.
Как это понимать?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.04.2012, 10:29     Поиск простых чисел и формирование из них массива #4
Прототипом функции называется декларация её имени, типа и параметров, оторванная от тела функции. Например,
C++
1
2
3
4
5
6
7
8
9
10
int abs(int x); // Прототип модуля функции целого
...
int abs(int x)// Заголовок той же функции
{// Начало тела функции
 if (x<0)
 {
  return -x;
 }
 return x;
}// конец тела функции
Тип указателя на функции не определим раньше её прототипа/заголовка. А вот когда определишься с типом функции и списком параметров, тогда можно делать указатель на функцию. В тексте тип указателя может располагаться и выше прототипа, но порядок разработки не может быть изменён по причине зависимости декларации типа указателя от прототипа функций, на которые ему разрешено указывать. Он не зависим лишь от имён функций и параметров, но тип функции, типы параметров и их количество важны. Давай протипы - будет тебе массив, а вечером фрагмент оконной процедуры.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
03.04.2012, 12:16     Поиск простых чисел и формирование из них массива #5
Цитата Сообщение от taras atavin Посмотреть сообщение
Тип указателя на функции не определим раньше её прототипа/заголовка.
Цитата Сообщение от Hqw33 Посмотреть сообщение
Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Так-то почти все очевидно. Вопрос только в том, как возвращать размер нового массива
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.04.2012, 13:02     Поиск простых чисел и формирование из них массива #6
Не очевидно, сплошной, произвол. Значением функции можно возвращать void, можно bool, можно указатель на новый массив, можно указатель на нуль-терминальную строку, с текстом сообщения об ошибке, содержащую "A.C.' если ошибки нет, можно сначала принимать размер массива, а потом массив, а можно наоборот, результат можно возвращать через значение функции, а можно через параметр, размер можно возвращать через значение, а можно через параметр, если размер возвращать через параметр, то его можно передать по ссылке, а можно по указателю, можно избрать разный тип самих чисел, можно сначала передать входные параметры, а потом выходные, а можно наоборот, можно их перемешать, можно одни и те же параметры использовать дважды, можно для входных и выходных параметров использовать разный порядок массив/размер. Даже с учётом того, что у тебя не будет дробных, так как простота и кратность относятся только к целым, целые могут быть разной разрядности. Давай прототип и комментарий по назначению параметров. Можно даже извратиться по полной и вернуть через значение функции указатель NULLтерминальный указатель на массив указателей на элементы основного массива тогда положение NULL в массиве указателей будет однозначно определять размеры обоих массивов (основного и вспомогательного, то есть массива указателей). Можно по такому же массиву указателей принимать и входной массив. Можно входным параметром принимать структуру из двух элементов, один из которых указывает на массив, а второй хранит его размер, можно такую же структуру возвращать значением функции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2012, 14:11     Поиск простых чисел и формирование из них массива
Еще ссылки по теме:

Поиск простых чисел C++
C++ Поиск простых чисел
Поиск простых чисел C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
03.04.2012, 14:11     Поиск простых чисел и формирование из них массива #7
Цитата Сообщение от fasked Посмотреть сообщение
Вопрос только в том, как возвращать размер нового массива
Классическое "параметр-результат" например
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
#include <stdio.h>
#include <stdlib.h>
    
int is_even(int a) { return ! ( a & 1 ); }
int is_mul3(int a) { return ! ( a % 3 ); }
 
int * tested_values(const int * src, size_t size, size_t * values, int (*func)(int)){
    int * ret = (int*)malloc(sizeof(int) * size);
    if ( ! ret )
        return NULL;
    
    *values = 0;
    
    while ( size-- ){
        if ( func(*src) )
            ret[(*values)++] = *src;
        ++src;
    }
    
    return (int*)realloc(ret, sizeof(int) * *values);
}
 
void dump(const int * arr, size_t size) { 
    while ( size-- ) 
        printf("%d%c", *arr++, ( size ) ? ' ' : '\n'); 
}
 
#define SIZE 10
    
int main(void){
    int arr[SIZE] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int * ptr;
    size_t count;
    
    printf("Array:\n");
    dump(arr, SIZE);
    
    printf("Even only:\n");
    if ( ( ptr = tested_values(arr, SIZE, &count, is_even) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    else if ( count == 0 ){
        printf("Not found.\n");
    }
    else {
        dump(ptr, count);
        free(ptr);
    }
    
    printf("Multply by 3:\n");
    if ( ( ptr = tested_values(arr, SIZE, &count, is_mul3) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    else if ( count == 0 ){
        printf("Not found.\n");
    }
    else {
        dump(ptr, count);
        free(ptr);
    }
    
    exit(0);
}
Hqw33, простые числа как определять, тут на форуме есть, ну и функции в массив пихать и по введённому пользователем номеру (ака меню) их оттуда извлекать - сами как-нибудь...

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
вернуть через значение функции указатель NULLтерминальный указатель на массив указателей на элементы основного массива тогда положение NULL в массиве указателей будет однозначно определять размеры обоих массивов (основного и вспомогательного, то есть массива указателей)
Это мантра какая-то?

Yandex
Объявления
03.04.2012, 14:11     Поиск простых чисел и формирование из них массива
Ответ Создать тему
Опции темы

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