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

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

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

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

03.04.2012, 08:31. Просмотров 826. Ответов 6
Метки нет (Все метки)

Пишу в Microsoft Visual Studio ->Win32 Console application ->C++.

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

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

Поиск простых чисел - C++
Почему мне возвращает просто непарные числа? в чем загвоздка #include <iostream> bool prost(int); using namespace std; int...

поиск простых чисел - C++
Как найти количество цифр n- значных чисел, у которых сумма любых двух соседних цифр является простым числом. Формат входных данных: В...

Поиск простых чисел - C++
to idetify if the given K is prime or not. Prime number is the number that can be divided by 1 and by itself ONLY. If given number is...

Поиск простых чисел - C++
3. Разработать программу поиска простых чисел в отрезке (1..N) целых положительных чисел. Программа должна найти и выдать в виде списка все...

Поиск простых чисел - C++
Знаю, что тема избитая, но решил написать алгоритм поиска простых чисел. int j,i,k /*количество простых*/ ,nech,prime; ...

Поиск простых чисел - C++
#include <iostream> #include <stdio.h> #include <locale.h> using namespace std; int y; bool m; bool nom( int...

6
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
03.04.2012, 08:39 #2
Давай прототипы самих функций, иначе указатели на них не определимы. И раз уж пошла интрефейсная графика, то назових хотябы опеационную систему и среду разработки.
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.04.2012, 09:27 #3
Цитата Сообщение от taras atavin Посмотреть сообщение
И раз уж пошла интрефейсная графика, то назових хотябы опеационную систему и среду разработки.
Цитата Сообщение от Hqw33 Посмотреть сообщение
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++.
Чучуточку внимательнее
Цитата Сообщение от taras atavin Посмотреть сообщение
Давай прототипы самих функций, иначе указатели на них не определимы.
Как это понимать?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
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;
}// конец тела функции
Тип указателя на функции не определим раньше её прототипа/заголовка. А вот когда определишься с типом функции и списком параметров, тогда можно делать указатель на функцию. В тексте тип указателя может располагаться и выше прототипа, но порядок разработки не может быть изменён по причине зависимости декларации типа указателя от прототипа функций, на которые ему разрешено указывать. Он не зависим лишь от имён функций и параметров, но тип функции, типы параметров и их количество важны. Давай протипы - будет тебе массив, а вечером фрагмент оконной процедуры.
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.04.2012, 12:16 #5
Цитата Сообщение от taras atavin Посмотреть сообщение
Тип указателя на функции не определим раньше её прототипа/заголовка.
Цитата Сообщение от Hqw33 Посмотреть сообщение
Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Так-то почти все очевидно. Вопрос только в том, как возвращать размер нового массива
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
03.04.2012, 13:02 #6
Не очевидно, сплошной, произвол. Значением функции можно возвращать void, можно bool, можно указатель на новый массив, можно указатель на нуль-терминальную строку, с текстом сообщения об ошибке, содержащую "A.C.' если ошибки нет, можно сначала принимать размер массива, а потом массив, а можно наоборот, результат можно возвращать через значение функции, а можно через параметр, размер можно возвращать через значение, а можно через параметр, если размер возвращать через параметр, то его можно передать по ссылке, а можно по указателю, можно избрать разный тип самих чисел, можно сначала передать входные параметры, а потом выходные, а можно наоборот, можно их перемешать, можно одни и те же параметры использовать дважды, можно для входных и выходных параметров использовать разный порядок массив/размер. Даже с учётом того, что у тебя не будет дробных, так как простота и кратность относятся только к целым, целые могут быть разной разрядности. Давай прототип и комментарий по назначению параметров. Можно даже извратиться по полной и вернуть через значение функции указатель NULLтерминальный указатель на массив указателей на элементы основного массива тогда положение NULL в массиве указателей будет однозначно определять размеры обоих массивов (основного и вспомогательного, то есть массива указателей). Можно по такому же массиву указателей принимать и входной массив. Можно входным параметром принимать структуру из двух элементов, один из которых указывает на массив, а второй хранит его размер, можно такую же структуру возвращать значением функции.
0
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,872
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 в массиве указателей будет однозначно определять размеры обоих массивов (основного и вспомогательного, то есть массива указателей)
Это мантра какая-то?

1
03.04.2012, 14:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2012, 14:11
Привет! Вот еще темы с ответами:

Поиск простых чисел - C++
необходимо найти все простые числа от 1 до 100. Вот я написал код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstdlib&gt; #include...

Поиск простых чисел - C++
помогите пожалуйста с заданием напишите программу которая при помощи двух вложенных циклов for и оператора вычисления остатка (%) находит...

Конкурс(поиск простых чисел) - C++
Я тут подумал, посмотрел по теме Hello world'a как всем нравится находить изощренные способы.Так вот - задание на засыпку: написать...

Поиск простых чисел в массиве - C++
Здесь, на форуме для начинающих, была задачка, в которой в матрице A(m,n), состоящей из целых чисел, нужно было найти простые числа (те,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.