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

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

Войти
Регистрация
Восстановить пароль
 
 
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
#1

Найти минимальное и максимальное значение в последовательности простых чисел - C++

06.01.2016, 15:40. Просмотров 1345. Ответов 39
Метки нет (Все метки)

1) У меня не работает void main().
>> [Error] '::main' must return 'int'

Пишешь
C++
1
2
3
4
int main()
{
return 0;
}
- работает без нареканий, а c void - нет.

2) Хочу добавить нахождение минимального значения. Вместе они не хотят работать. И ещё. Когда вводишь не число, а символ, программа зацикливается. Есть стандартные средства противодействия такому безобразию или меня спасет только проверка условием? И для всех последующих программ нужно делать набор таких условий?
// Detecting maximum number from series of whole positive numbers.
// The length of the series number is not limit.
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
75
76
77
78
#include <iostream>
 
int main()
{
    int n=0, a;
    int max=0, min = a; 
    printf("Detecting maximum number from series of whole");
    printf("positive numbers. The length of the series number is not limit.\n");
    do
        {
            printf("-> ");
            scanf("%i", &a);
            if (a)
            {
                if ( a > max)
                    max = a;
                if ( a < min)
                    min = a;
                n++;
            }           
        }
    while ( a > 0);
    printf("Numbers were entered: %i.\n", n);
    printf("Maximum number is %i\n", max);
    printf("Minimum number is %i\n", min);
    system("pause");
    return 0;
}
 
3) Когда проверяешь одно число, всё правильно считает, а если хочется выяснить наличие простых чисел на промежутке - ошибка. То, что не работает, в многострочном комментарии.
// Program checks up if a number is simple.
#include <iostream>
int main()
{
    int a, answ, i, p, l;
    printf("Program checks up if a number is simple.\n");
//  printf("Do you want to check up your number or to see the series of simple numbers?\n");
//  printf("Your number = 0, other = 1: ");
//  scanf("%i", &answ);
    p =2; // Start to divide on two.
/*  if (answ)
    {
        printf("Input down limin of the series number: ");
        scanf("%i", &i);
        printf("Input up limit of the series number: ");
        scanf("%i", &l);
        for ( i; i <= l; i++)
        {   
            if(i>=p)
            {
                do
            {
                a = i % p;
                if ( a != 0) p++;
            }while ( a != 0);
            if (p==i)
                printf("%i is a simple number.\n", i);
            else 
                printf("%i is not a simple number.\n", i);  
            }           
        }
    }
    else
    {*/
        printf("Input whole number: ");
        scanf("%i", &i);
        do
        {
            a = i % p;
            if ( a != 0) p++;
        }
        while ( a != 0);
        if (p==i)
            printf("%i is a simple number.\n", i);
        else printf("%i is not a simple number.\n", i);
    system("pause");
    return 0;
}
Win7.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2016, 15:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти минимальное и максимальное значение в последовательности простых чисел (C++):

Задана последовательность чисел длиной n. Определить минимальное и максимальное значение этой последовательности ... - C++
Задана последовательность чисел длиной n. Определить минимальное и максимальное значение этой последовательности ... В паскале вроде...

Сравнить n-чисел и найти максимальное и минимальное значение, не прибегая к if - C++
Надо сравнить n-чисел и найти максимальное и минимальное значение, не прибегая к ужасным разветлению оператора if?

Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел - C++
Здравствуйте,уважаемые программисты!) Помогите решить,пожалуйста, данную задачку в С++: Дан одномерный целочисленный массив А из N...

Превышает ли максимальное из чисел последовательности минимальное не более чем на 25? - C++
Даны натуральные число n и целые числа a1, a2,...,an. Верно ли, что максимальное из чисел ai превышает минимальное не более чем на 25.(C++)

Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных. - C++
Есть массив А, который вводится с клавиатуры. Нужно найти минимальное значение среди позитивных чисел и максимальное среди отрицательных....

Вычислить минимальное и максимальное число в последовательности целых чисел, вводимых с клавиатуры - C++
Написать программу, которая вычисляет минимальное и максимальное число последовательности целых чисел вводимых с клавиатуры.

39
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 18:54  [ТС] #16
А зачем тему переименовали? Смысл. Ещё есть третья задача. Опять будете утруждать себя, когда мы к ней дойдем?
0
GbaLog-
06.01.2016, 18:55
  #17

Не по теме:

Salah_Addin, Я не модератор, не я переименовал.

0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:02  [ТС] #18
Ваша идея у меня барахлит. Я сначала сделал эту задачу без вложенного условия (искал только максимальное) в do{}while, и обнаружил, что программа считает последний ноль (для выхода из цикла) как число, которое тоже принимает участие в последующих действиях ( поиск максимального). Если делать с условием, то число для выхода не считается. Пример без условия в цикле:
Detecting maximum number from series of wholepositive numbers. The length of the
series number is not limit.
-> 5
-> 1
-> 6
-> 8
-> 0
Numbers were entered: 5.(!!!)

С условием:
Detecting maximum number from series of wholepositive numbers. The length of the
series number is not limit.
-> 5
-> 1
-> 6
-> 8
-> 0
Numbers were entered: 4.(!!!)
То есть max (а, значит, теперь и min) ищется среди чисел, введенных до 0.
Таким образом, минимум в числовой последовательности никто не искал. А если min = 1, он выводит число, заданное при инициализации (1, или ранее - 0).
0
GbaLog-
Любитель чаепитий
3011 / 1379 / 334
Регистрация: 24.08.2014
Сообщений: 4,896
Записей в блоге: 1
Завершенные тесты: 2
06.01.2016, 19:09 #19
Попробуйте сделать min = 10 и введите те же цифры, что и сейчас, вы увидите, что всё работает.

Добавлено через 2 минуты
А вообще, если бы я хотел сделать ту же задачу, что и вы, то я бы сделал так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
//#include <cmath>
 
using namespace std;
 
int main() {
    int a, n = 0, max = 0, min = 0;
    while( cin >> a || a != 0 ) {
        if( a > max ) max = a;
        if( a < min ) min = a;
        n++;
    }
    cout << ...
    cin.get();
    return 0;
}
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:11  [ТС] #20
Запустил при min = 10 - работает. Как объясните это при min=1 или =0 ?
..... is not limit.
-> 5
-> 3
-> 20
-> 0
Numbers were entered: 3.
Maximum number is 20
Minimum number is 1
0
GbaLog-
Любитель чаепитий
3011 / 1379 / 334
Регистрация: 24.08.2014
Сообщений: 4,896
Записей в блоге: 1
Завершенные тесты: 2
06.01.2016, 19:16 #21
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Salah_Addin, Всё просто, min = 1, то если вы введёте 0, то программа закончится не успев приравнять min к 0, а если min = 0, то программа искала минимальный элемент, то есть если сказать по простому, то <0, а у вас при a <= 0 программа завершается.
1
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:18  [ТС] #22
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() {
    int a, n = 0, max = 0, min = 0;
    printf("Detecting maximum number from series of whole ");
    printf("positive numbers. The length of the series number is not limit.\n");
    while( cin >> a || a != 0 ) {
        if( a > max ) max = a;
        if( a < min ) min = a;
        n++;
    }
    printf("Numbers were entered: %i.\n", n);
    printf("Maximum number is %i\n", max);
    printf("Minimum number is %i\n", min);
    cin.get();
    return 0;
}
Всё, что изменено - добавил вывод для пользователя. Программа зацикливает, нуль не завершает цикл.
0
GbaLog-
Любитель чаепитий
3011 / 1379 / 334
Регистрация: 24.08.2014
Сообщений: 4,896
Записей в блоге: 1
Завершенные тесты: 2
06.01.2016, 19:20 #23
Salah_Addin, Ну цикл можно завершить введя любой символ, отличный от числа. И поменяйте условие на
C++
1
while( cin >> a && a != 0 ) // так должно работать
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:23  [ТС] #24
Со вторым всё понятно. Теперь третье. Проверить, является ли число простым на числовом промежутке.
0
GbaLog-
Любитель чаепитий
3011 / 1379 / 334
Регистрация: 24.08.2014
Сообщений: 4,896
Записей в блоге: 1
Завершенные тесты: 2
06.01.2016, 19:24 #25
Salah_Addin, От a до b?
Ну циклом я думаю
C++
1
2
for( int i = a; a < b; a++ )
...
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:24  [ТС] #26
Взял код для проверки одного числа и растянул проверку на промежуток. Проверяет неправильно. И ещё во втором надо вернуться к моменту, когда вводишь не число, а символ. Тогда программа зацикливает.
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:30  [ТС] #27
Циклом. Но в цикле неправильно считает. По субъективным ощущениям первое число числового промежутка проверяется верно, а остальные - нет.
0
GbaLog-
Любитель чаепитий
3011 / 1379 / 334
Регистрация: 24.08.2014
Сообщений: 4,896
Записей в блоге: 1
Завершенные тесты: 2
06.01.2016, 19:34 #28
Salah_Addin,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
bool Prostoe( int n ) {
    for(int i=2;i<=n/2;i++)
       if(n%i==0)return false;
   return true;
}
 
int main() {
    int a, b;
    cin >> a >> b;
    for( int i = a; i < b; i++ ) {
        if( Prostoe( i ) ) cout << "Value " << i << " is simple\n";
    }
}
Добавлено через 3 минуты
Во-втором в моём варианте зацикливать не должно, если введёшь символ, то нарушится условие cin >> a и цикл прекратится.
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:42  [ТС] #29
"...зацикливать не должно, если введёшь символ, то нарушится условие cin >> a".
Можно подробнее. Если я введу не "4", а "п", я не ввел "а"??
0
GbaLog-
Любитель чаепитий
3011 / 1379 / 334
Регистрация: 24.08.2014
Сообщений: 4,896
Записей в блоге: 1
Завершенные тесты: 2
06.01.2016, 19:45 #30
Salah_Addin, Суть тут в определении переменной a, она целочисленная, а поток cin возвращает true, если вводимый тип данных соответствует типу переменной, а если не соответствует, то возвращает false и цикл прекращается, ведь если расписать, то получится так.
C++
1
while( (cin >> a) == true && a != 0 )
0
06.01.2016, 19:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2016, 19:45
Привет! Вот еще темы с ответами:

Найти максимальное и минимальное значение - C++
Задание элементарное, только никак не могу догадаться. На ввод N раз идет целое число s, нужно найти среди всех введенных чисел...

Найти минимальное и максимальное значение в массиве - C++
Что то я не пойму почему этот код не находит минимальное и максимальное значение в массиве const int SIZE=5; int mas={9,5,7}; ...

Найти максимальное и минимальное значение функции - C++
Просьба решить задачку, так как я сам ни бум бум...=( А через пару недель нужно перездать зачет. Очень прошу помочь!! Составить...

Найти максимальное и минимальное значение элементов массива - C++
Описать функции формирования элементов одномерного массива с по- мощью генератора случайных чисел и определения среднеарифметического ...


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

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

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