Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/35: Рейтинг темы: голосов - 35, средняя оценка - 4.91
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
1

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

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

Author24 — интернет-сервис помощи студентам
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2016, 15:40
Ответы с готовыми решениями:

В последовательности случайных чисел найти минимальное и максимальное число в каждой последовательности(без массивов)
Очень нужна помощь! В последовательности случайных чисел найти минимальное и максимальное число...

Найти минимальное и максимальное значение последовательности
Нужна помощь с задачей. Нужно разработать алгоритм и написать программный код в среде...

Найти максимальное и минимальное из чисел последовательности
Даны натуральное число n и вещественные числа x1, x2, ..., xn. Найти: а) максимальное из...

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

39
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 19:16 21
Лучший ответ Сообщение было отмечено Salah_Addin как решение

Решение

Author24 — интернет-сервис помощи студентам
Salah_Addin, Всё просто, min = 1, то если вы введёте 0, то программа закончится не успев приравнять min к 0, а если min = 0, то программа искала минимальный элемент, то есть если сказать по простому, то <0, а у вас при a <= 0 программа завершается.
1
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
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 19:20 23
Salah_Addin, Ну цикл можно завершить введя любой символ, отличный от числа. И поменяйте условие на
C++
1
while( cin >> a && a != 0 ) // так должно работать
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:23  [ТС] 24
Со вторым всё понятно. Теперь третье. Проверить, является ли число простым на числовом промежутке.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 19:24 25
Salah_Addin, От a до b?
Ну циклом я думаю
C++
1
2
for( int i = a; a < b; a++ )
...
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:24  [ТС] 26
Взял код для проверки одного числа и растянул проверку на промежуток. Проверяет неправильно. И ещё во втором надо вернуться к моменту, когда вводишь не число, а символ. Тогда программа зацикливает.
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:30  [ТС] 27
Циклом. Но в цикле неправильно считает. По субъективным ощущениям первое число числового промежутка проверяется верно, а остальные - нет.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
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
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:42  [ТС] 29
"...зацикливать не должно, если введёшь символ, то нарушится условие cin >> a".
Можно подробнее. Если я введу не "4", а "п", я не ввел "а"??
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 19:45 30
Salah_Addin, Суть тут в определении переменной a, она целочисленная, а поток cin возвращает true, если вводимый тип данных соответствует типу переменной, а если не соответствует, то возвращает false и цикл прекращается, ведь если расписать, то получится так.
C++
1
while( (cin >> a) == true && a != 0 )
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:52  [ТС] 31
Тут в параллельной теме советуют вместо условия использовать std::sort, std::max_element, std::min_element. Они есть в <iostream>? И вообще эта библиотека с командами из пространства std?

Добавлено через 3 минуты
" Суть тут в определении переменной a...". Т.е. в дальнейшем, если не хочу лишних сложностей, для ввода рекомендуется cin, а scanf - на свалку?
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 19:56 32
Salah_Addin, printf() и scanf() - это Сишные функции, а cout и cin - это уже С++. Свалка или нет решать вам, я не учил язык Си и поэтому их никогда не использовал.
Тут в параллельной теме советуют вместо условия использовать std::sort, std::max_element, std::min_element. Они есть в <iostream>? И вообще эта библиотека с командами из пространства std?
Для чего именно?

Добавлено через 18 секунд
И в iostream этих функций нет.
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 19:58  [ТС] 33
Советуют эти функции для нахождения минимального числа последовательности и максимального.
Сравнить n-чисел и найти максимальное и минимальное значение, не прибегая к if

Добавлено через 55 секунд
А какую библиотеку тогда подключать? Или std::sort, std::max_element, std::min_element в компилляторе?
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 20:00 34
Salah_Addin, Эти функции сортируют контейнеры. У вас просто числа вводятся. В никуда, кроме буфера, не попадающие.

Добавлено через 1 минуту
Цитата Сообщение от Salah_Addin Посмотреть сообщение
А какую библиотеку тогда подключать? Или std::sort, std::max_element, std::min_element в компилляторе?
<algorithm>( для std::sort и т.д. ) и <array> или <vector>( контейнеры stl ).
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 20:26  [ТС] 35
Тогда во втором вопросе всё прозрачно.

Добавлено через 14 минут
В вашем коде для третьего задания всё так ясно, что и вопросов не возникает. Так не интересно. Надо покритиковать что-нибудь.
У меня по условию в задачнике простое надо найти с использованием цикла do{}while. В этом случае изменять, думаю, надо так:
C++
1
2
3
4
5
6
7
8
9
bool Prostoe( int n ) {
    int i=2;
    do{
        if(n% i==0)return false;
    }while(i<n);
//  for(int i=2;i<=n/2;i++)
//       if(n%i==0)return false;
   return true;
}
Результат:
1
40
Value 1 is simple

1) Почему с вашим кодом нельзя копировать из командной строки?
2) Он проверил только одно число i, заданное по умолчанию. Как изменить, чтобы проверял всю последовательность?

Добавлено через 5 минут
Похоже, что теперь вообще не проверяет.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 20:30 36
Лучший ответ Сообщение было отмечено Salah_Addin как решение

Решение

Salah_Addin,
2) Он проверил только одно число i, заданное по умолчанию. Как изменить, чтобы проверял всю последовательность?
C++
1
2
3
4
5
6
7
8
9
10
bool Prostoe( int n ) {
int i=2;
do{
if(n% i==0)return false;
i++;
}while(i<=n/2);
//  for(int i=2;i<=n/2;i++)
// if(n%i==0)return false;
return true;
}
1) Почему с вашим кодом нельзя копировать из командной строки?
Можно, зайдите в настройки консоли, там есть такой пункт, у меня на английском, поэтому подсказать не могу.

Не по теме:

P.S. Код заключайте в теги, в редакторе есть кнопочка с надписью "C++", туда жмакаете и потом между тегами вставляете код.

0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 20:49  [ТС] 37
Да, надо было из for взять условие окончания, а не по памяти.
"Можно, зайдите в настройки..." Во время первого запуска два раза ПКМ нажимал - меню не было.

Вопрос решён. Спасибо за внимание.

Добавлено через 5 минут
*** Теги, к сожалению, не работают. В этом браузере, похоже javascript отключён, а в настройках его не видать. В Explorer мне ещё рано возвращаться, я слишком молод...***
А можете ещё пояснить, почему делим n/2
>> while(i<=n/2);

Добавлено через 2 минуты
Чтобы проверить, простое ли число, нужно знать, что оно делится без остатка только на 1 и на себя. В задачнике предлагают проверять делимость данного числа от самого себя и до 1. Почему мы завершаем цикл на половине.

 Комментарий модератора 

Salah_Addin, у всех работают, а у Вас вдруг "не работают".

Правила форума одинаковы для всех:
П. 4.9. Используйте тэги форматирования текста для удобства восприятия ваших сообщений другими пользователями.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
06.01.2016, 21:04 38
Salah_Addin, в конце концов, всегда можно тэги руками прописать (используйте латинские буквы в тэгах).

Пишите так:
[СРР]
#include <iostream>

int main()
{
// Ваш код

return 0;
}
[/СРР]

Получится так:
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    // Ваш код
 
    return 0;
}
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
06.01.2016, 21:17  [ТС] 39
"Salah_Addin, у всех работают, а у Вас вдруг "не работают"."
>>похоже javascript отключён, а в настройках его не видать.

" можно тэги руками прописать.."
>> Можете ещё написать теги для вывода из консоли?

Добавлено через 2 минуты
И как у вас получилось вывести пример с напечатанными от руки тегами, и текст показан неформатированным?
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.01.2016, 21:45 40
Цитата Сообщение от Salah_Addin Посмотреть сообщение
И как у вас получилось вывести пример с напечатанными от руки тегами, и текст показан неформатированным?
"CPP" - русские буквы.
А можете ещё пояснить, почему делим n/2
Потому что нет в этом никакого смысла, там делители такие же пойдут.
0
06.01.2016, 21:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2016, 21:45
Помогаю со студенческими работами здесь

В последовательности введенных с клавиатуры чисел найти минимальное и максимальное значения
1.Написать программу, которая в последовательности введенных с клавиатуры чисел находит минимальное...

дан массив чисел, найти значение функции y=x^3+5 для каждого числа; минимальное и максимальное значение; их сумму.
Здравствуйте, помогите пожалуйста написать программу. Задание: дан массив чисел, найти значение...

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

Найти максимальное и минимальное значение в массиве вещественных чисел
работал через StringGrid кое-что набросал, но код как-то работать не собирается. помогите плз


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru