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

Какой правильный алгоритм решения?:) - C++

Восстановить пароль Регистрация
 
andr1981
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 28
30.10.2010, 11:44     Какой правильный алгоритм решения?:) #1
Даны натуральные числа n и a(1), a(2), ... a(n) .. Найти максимальное простое число.
Всем доброго дня
Помогите пожалуйста с алгоритмом программы=работает неверно=просто выводит максимальное число из массива и всё Надо=чтобы учитывала=есть ли вообще в массиве простые числа по функции prime,
а потом выводила как результат максимальное из простых чисел...
Помогите пожалуйста

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
#include <iostream>
using namespace std;
bool prime(int a)
{
    bool flag=true;
    for(int i=2; i<=a/2; ++i)
    {
         if(a%i==0)
         {
             flag=false;
             break;
         }
     }
     return true;
}
int main()
{
    int n;
    cout<<"insert n: ";
    cin>>n;
    int*mass=new int[n];
    int SSize=0;
    for(int i=0; i<n; ++i)
    {
        cin>>mass[i];
    }
    for(int i=0; i<n; ++i)
    {
        if(prime(mass[i]))
        SSize++;
    }
    if(SSize==0)
    {
         cerr<<"There is no prime numbers";
         return 0;
    }
    for(int i=0, j=0; i<n; ++i)
    {
         if(prime(mass[i]))
         {
             mass[j]=mass[i];
             ++j;
         }
     }
     int Max=mass[0];
     for(int i=0; i<SSize; ++i)
     {
         if(mass[i]>Max)
             Max=mass[i];
     }
     cout<<"max from prime number is: "<< Max <<'\n';
     delete[] mass;
     return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
30.10.2010, 12:47     Какой правильный алгоритм решения?:) #2
Попробуйте:
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
#include <iostream>
 
using namespace std;
 
bool prime(int a)
{
    bool flag=true;
    if(a<=1) flag=false;
    else for(int i=2;i<=a/2;i++) if(a%i==0) { flag=false; break; }
    return flag;
}
 
int main()
{
    int i,n,max,size=0;
    bool r=false;
    cout<<"  n=";
    cin>>n;
    int* mass=new int [n];
    int* pr=new int [n];
    cout<<"  Enter elements: ";
    for(i=0;i<n;i++) 
    { 
        cin>>mass[i]; 
        if(prime(mass[i])) { r=true; pr[size]=mass[i]; size++; }
    }
    if(r==false) cout<<"\n\n  There is no prime numbers"<<endl;
    else 
    {
        max=pr[0];
        for(i=1;i<size;i++) if(pr[i]>max) max=pr[i];     
        cout<<"\n\n  max from prime number is: "<<max<<endl;
    }
    delete [] mass;
    delete [] pr;
    system("pause");
    return 0;
}
andr1981
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 28
30.10.2010, 12:54  [ТС]     Какой правильный алгоритм решения?:) #3
Большое спасибо=счас буду разбираться)
andr1981
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 28
30.10.2010, 13:11  [ТС]     Какой правильный алгоритм решения?:) #4
Спасибо Работает
Только ещё один ВАЖНЫЙ вопрос:
А Вообще=можно ли написать алгоритм только с одним массивом mass, а не с двумя массивами?

Помогите ещё с этим=если это вообще возможно=у меня просто условие такое=что работа должна быть с одним массивом...
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
30.10.2010, 13:24     Какой правильный алгоритм решения?:) #5
Цитата Сообщение от andr1981 Посмотреть сообщение
Спасибо Работает
Только ещё один ВАЖНЫЙ вопрос:
А Вообще=можно ли написать алгоритм только с одним массивом mass, а не с двумя массивами?
Помогите ещё с этим=если это вообще возможно=у меня просто условие такое=что работа должна быть с одним массивом...
Все что пожелаете:
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
#include <iostream>
 
using namespace std;
 
bool prime(int a)
{
    bool flag=true;
    if(a<=1) flag=false;
    else for(int i=2;i<=a/2;i++) if(a%i==0) { flag=false; break; }
    return flag;
}
 
int main()
{
    int i,n,max,size=0;
    bool r=false;
    cout<<"  n=";
    cin>>n;
    int* mass=new int [n];
    cout<<"  Enter elements: ";
    for(i=0;i<n;i++) 
    { 
        cin>>mass[i]; 
        if(prime(mass[i])) { r=true; mass[size]=mass[i]; size++; }
    }
    if(r==false) cout<<"\n\n  There is no prime numbers"<<endl;
    else 
    {
        max=mass[0];
        for(i=1;i<size;i++) if(mass[i]>max) max=mass[i];     
        cout<<"\n\n  max from prime number is: "<<max<<endl;
    }
    delete [] mass;
    system("pause");
    return 0;
}
andr1981
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 28
30.10.2010, 13:29  [ТС]     Какой правильный алгоритм решения?:) #6
КАК элегантно получилось))) Огромное спасибо за помощь!
Yandex
Объявления
30.10.2010, 13:29     Какой правильный алгоритм решения?:)
Ответ Создать тему
Опции темы

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