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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Лена96
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 7
#1

Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел - C++

23.01.2014, 12:56. Просмотров 1260. Ответов 12
Метки нет (Все метки)

Здравствуйте,уважаемые программисты!) Помогите решить,пожалуйста, данную задачку в С++:
Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел.
________________________________________________________________________________________________
(К сожалению, откровенно говоря, я учусь на 1м курсе вечерней форме обучения, и преподавательница по программированию не внятно объясняла всем, поэтому никто в группе кроме 2ух человек не решали задачи,другим всем помогали именно эти 2 товарища во время зачета,я отсутствовала на последнем занятии по уважительным причинам,и к сожалению,совершенно не знаю С++, хотела бы от вас помощи, либо же хотя бы каких-либо наставлений и рекомендаций по литературе,которую можно прочитать. (сама в интеренете читаю на сайтах про С++ с нуля,но не могу понять некоторые команды и слова),в любом случае помимо решения данной задачки,мне необходимо будет её разъяснить преподу,поэтому мне нужно будет понять как её решить...)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 12:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел (C++):

Целочисленный массив: найти элементы, произведение которого с предыдущим максимальное среди всех элементов - C++
Задать целочисленный массив. Найти элементы, произведение которого с предыдущим максимальное среди всех элементов. Вывести эти элементы...

Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов - C++
//Дан целочисленный массив размера N. //Найти максимальное количество его одинаковых элементов.

2) Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов - C++
2) Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов.

Дан целочисленный массив А[п], среди элементов есть одинаковые. Создать массив из различных элементов А[п] - C++
Помогите пожалуйста с поставленной задачей: Дан целочисленный массив А, среди элементов есть одинаковые. Создать массив из различных...

Ввести целочисленный массив 4х4 и определить максимальное среди элементов массива - C++
Ввести целочисленный массив 4х4 и определить максимальное среди элементов массива.

Дан целочисленный одномерный массив А, состоящий из 14 элементов. вычислить и напечатать сумму парши элементов - C++
дано целочисленный одномерный массив А, состоящий из 14 элементов. вычислить и напечатать сумму парши элементов, на нечетных местах и их...

12
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
23.01.2014, 13:15 #2
для начала составь план
что нужно для решения этой задачи
первое что нужно создать функцию для проверки простоты числа
знаешь что такое простое число?

я предлагаю такой алгоритм
ввести размер массива
выделить память под два массива, обнулить их
ввести значения с клавиатуры( из файла) и записать их в первый массив
проверить значение на простоту
если число простое записать во второй массив
найти максимальное число во втором массиве
вывести его на экран
алгоритм не самый оптимальный но самый понятный

теперь скажи что ты из этого не умеешь?
0
Лена96
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 7
23.01.2014, 13:35  [ТС] #3
лучше б спросить, что я из этого умею,эх(.
спасибо большое за план,хоть так я понимаю что искать поэтапно в интернете)))
0
OksiL
3 / 3 / 0
Регистрация: 19.03.2013
Сообщений: 14
23.01.2014, 19:56 #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
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <locale>
using namespace std;
int main()
{
    setlocale (0, "rus");
    int n = 0, i = 0, m = 0, size = 0;
    cout << "Введите кол-во элементов массива - ";
    cin >> n;
    double *mas = new double [n];
    cout << "Заполните массив элементами." << endl;
    for (i = 0; i < n; i++)
    {
        cout << i + 1 << "-й элемент = ";
        cin >> mas[i];
    }
    cout << "Известный массив: ";
    for (i = 0; i < n; i++)
        cout << mas[i] << " ";
    int *mas2 = new int [n];
    bool flag = true;
    for (i = 0; i < n; i++)
    {
        flag = true;
        for(int j = 2; j < mas[i]; j++)
            if(fmod(mas[i],j) == 0)
            {
                flag = false;
                break;
            }
        if(flag == true)
        {
            mas2[size] = mas[i];
            size++;
        }
    }
    cout << "\nМассив простых чисел: ";
    for (i = 1; i < size; i++)
        cout << mas2[i] << " ";
    int max = 0;
    max = mas2[0];
    for (i = 0; i < size; i++)
        if (mas2[i] > max)
            max = mas2[i];
    cout << "\nМаксимальное число = " << max << endl;
    cout << endl;
    delete [] mas;
    delete [] mas2;
    cin.sync();
    cin.ignore();
    return 0;
}
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
23.01.2014, 20:05 #5
Цитата Сообщение от OksiL Посмотреть сообщение
double *mas = new double [n];
конкретный вопрос
Цитата Сообщение от Лена96 Посмотреть сообщение
целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел.
дубля целочисленный? а среди них может быть простое число?
Цитата Сообщение от OksiL Посмотреть сообщение
for(int j = 2; j < mas[i]; j++)
* * * * * * if(fmod(mas[i],j) == 0)
это так ты остаток от деления ищешь?
не ну с такими друзьями и врагов не надо
1
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
23.01.2014, 20:08 #6
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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
bool simply (int n)
{
     if (n<2)
        return false;
     else
     {
         for (int i=2; i<=n/2; i++)
             if (n%i==0)
                return false;
         return true;
     }
        
}
 
int main()
{
    unsigned int n;
    std::cout <<"N = ";
    std::cin >> n;
    int *a = new int[n];
    std::srand (time(0));
    bool flag = false;
    for (int i=0; i<n; i++)
    {
        a[i]=rand()%57+1;
        if (simply(a[i]))
           flag = true;
        std::cout <<a[i] <<' ';
    }
    std::cout <<std::endl;
    if (!flag)
       std::cout <<"V massive new prostyx chisel\n";
    else 
    {
         int max = 2;
         for (int i=0; i<n; i++)
             if (simply(a[i]) && a[i]>max)
                max = a[i];
         std::cout <<max <<std::endl;
    }
    delete [] a;
    return 0;
}
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.01.2014, 20:09 #7
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
bool isSimpleNumber(int number);
 
int main()
{
    std::srand((size_t)(std::time)(nullptr));
 
    size_t arraySize;
    std::cout << "N: ";
    std::cin >> arraySize;
 
    int maximal = -1;
    int *array = new int [arraySize];
    std::cout << "Array: " << std::endl;
    for (size_t i = 0; i < arraySize; i++) {
        std::cout << (array[i] = std::rand() % 50) << ' ';
        maximal = isSimpleNumber(array[i]) ? array[i] : maximal;
    }
    std::cout << std::endl;
 
    std::cout << "Simple numbers: " << std::endl;
    for (size_t i = 0; i < arraySize; i++) {
        if (isSimpleNumber(array[i])) {
            std::cout << array[i] << ' ';
            maximal = maximal < array[i] ? array[i] : maximal;
        }
    }
    std::cout << std::endl << "Maximal of simple numbers: " << maximal << std::endl;
    
    delete [] array;
    array = nullptr;
 
    std::system("pause");
    return 0;
}
 
bool isSimpleNumber(int number)
{
    if (number < 2) {
        return false;
    }
    for (int i = 2; i <= number / 2; i++) {
        if (!(number % i)) {
            return false;
        }
    }
    return true;
}
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 20:12 #8
Ev[G]eN, в цикле проверки на наличие делителей достаточно дойти до sqrt(number), а не до половины.
2
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
23.01.2014, 20:44 #9
Arkaniy,
абсолютно согласен
и тема поднималась не один раз
для начала
для упрощения
C++
1
2
3
4
5
6
7
8
9
bool Primitiv(unsigned int n)
{
 if(n%2==0)
  return false;
  if(i=3;i< sqrt(n);i+=2)
     if ((n%i)==0)
       return false;
return true;
}
есть более эффективные алгоритмы и они здесь не раз описывались

Цитата Сообщение от ValeryS Посмотреть сообщение
алгоритм не самый оптимальный
но с разными вариациями
тогда бы хоть рассказали что каждая строчка делает
более эффективный ( но не самый крутой)
использовать динамический массив vector
и при вводе числа проверять простое или нет
если простое добавить в вектор(массив) если нет проигнорировать
а потом найти максимум в векторе
Лена96,
тебе уже здесь показали пару вариантов проверку на простоту числа
можешь сама сейчас функцию написать?

Добавлено через 2 минуты
еще проще чтобы не задействовать библиотеку
C++
1
2
3
for(int i=3;i*i<n;i+=2)
   if(n%i==0)
     return false;
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 23:01 #10
ValeryS, а разве в цикле строгое условие? По-моему там нестрогое должно быть.
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
23.01.2014, 23:15 #11
Arkaniy,
ты насчет корня????
да действительно так по правильному должно быть
C++
1
for(int i=3;i*i<=n;i+=2)
описался ( ударение каждый ставит как хочет), знаете ли
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 23:17 #12
ValeryS, именно за корень и говорил
0
Лена96
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 7
24.01.2014, 11:05  [ТС] #13
если честно,я конечно вижу уже решение готовое,но не понимаю значение каждой строки...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 11:05
Привет! Вот еще темы с ответами:

Дан одномерный массив A (n) подсчитать кол-во не совершенных чисел в нём (совершенные = сумме своих делителей - C++
Дан одномерный массив A (n) подсчитать кол-во не совершенных чисел в нём (совершенные = сумме своих делителей)

Дан одномерный массив из 10 чисел определить номер 1 из встретившихся элементов, значение которого равно 0 - C++
11. Дан одномерный массив из 10 чисел определить номер 1 из встретившихся элементов, значение которого равно 0. Помогите составить блок...

Среди простых чисел найти найти такое, в двоичной записи которого максимальное число единиц. - C++
Помогите пожалуйста! Среди простых чисел, не превосходящих n, найти такое, в двоичной записи которого максимальное число единиц.

Найти минимальное значение среди элементов, стоящих над главной диагональю, и максимальное среди элементов - C++
Дана действительная матрица 7x7. Найти минимальное значение среди элементов, стоящих над главной диагональю, и максимальное среди...


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
24.01.2014, 11:05
Ответ Создать тему
Опции темы

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