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

Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр - C++

Восстановить пароль Регистрация
 
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 13:25     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #1
В файле есть числа, вывести на экран все простые числа, в которых нет двух подряд идущих одинаковых цифр.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 13:25     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр
Посмотрите здесь:

Вывести все четырехзначные числа, в десятичной записи которых нет двух одинаковых цифр. C++
C++ Вывести все четырехзначные числа в записи которых нет двух одинаковых цифр
Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр C++
Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел. C++
Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
19.06.2014, 14:45     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #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
39
40
41
42
43
44
45
#include <iostream>
#include <cmath>
#include <sstream>
#include <fstream>
#include <conio.h>
 
bool neededPrime(int num)
{
    std::string str;   
    std::ostringstream convert;   
    convert << num;
    str = convert.str();
    for(int i = 0; i < str.size() - 1; i++)
        if(str[i] == str[i + 1]) return false;
    return true;
}
 
bool isPrime(int num)
{
    if(num <= 1) return false;
    for(int i = 2; i < sqrt(num); i++)
            if(!(num % i)) return false;
    if(neededPrime(num)) return true;
}
 
int main()
{
    std::ifstream file("file.txt");
    if(file)
    {
        int num;
        while(file >> num)
        {
            if(isPrime(num)) 
                std::cout << num << std::endl;
        }
        file.close();
    }
    else
        perror("Error");
    
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 21:47  [ТС]     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #3
А можно если не сложно, подписать что и где, и какую роль выполняет.
Общая картина ясна, но что бы не перепутать на будущее.
Спасибо!
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
19.06.2014, 22:32     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #4
evreyizada
Кликните здесь для просмотра всего текста
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
bool neededPrime(int num) // Функция поиска нужных простых чисел
{
    // Конвертируем число в string, для поиска соседей
    std::string str;   
    std::ostringstream convert; // Используем поток ostringstream,
    convert << num;             // в который записываем число
    str = convert.str();        // и конвертируем в string
    for(int i = 0; i < str.size() - 1; i++)
        if(str[i] == str[i + 1]) return false; // Если соседи равны return false
    return true; // Иначе return true
}
 
bool isPrime(int num) // Функция поиска простых чисел
{
    if(num <= 1) return false; // Если число меньше двух, то оно непростое
    for(int i = 2; i < sqrt(num); i++)   // Если хоть одно число кратно числу,
            if(!(num % i)) return false; // в интервале от 2 до корня данного числа,
                                         // то число непростое
    // Если neededPrime(num) возвращает true, возвращаем true
    if(neededPrime(num)) return true;
}
 
int main()
{
    std::ifstream file("file.txt"); // Поток считывания
    if(file) // Если файл существует
    {
        int num;
        while(file >> num) // Считываем поэлементно из file
        {
            if(isPrime(num)) // Если isPrime(num) возвращает true, печатаем число
                std::cout << num << std::endl;
        }
        file.close(); // Закрываем файл
    }
    else
        perror("Error"); // Ошибка при открытии файла
    
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 22:34  [ТС]     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #5
Всё успешно компилирует, но нет вывода самих чисел на экран
либо у меня что-то не верно выполняется, либо я косячу
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
19.06.2014, 22:36     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #6
evreyizada, а в file.txt есть числа?
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 22:37  [ТС]     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #7
да, конечно.
создал файл, внес числа
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
19.06.2014, 22:39     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #8
evreyizada, странно, у меня выводит.
Поделитесь содержимым файла
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 22:48  [ТС]     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #9
Ну, обычный набор чисел. http://vk.com/doc5805834_309895902?h...d6591ce74cee8c
"113 345 567 554 789 665 183 175 896 554 905 974 896 778 883" Думаю тут накосячить я не мог.
Только выдает: "Operation succeeded".
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
19.06.2014, 22:53     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #10
evreyizada, ну здесь же нет ни одного числа, которое подходит по условию,
поэтому ничего и не выводит. Попробуйте следующие числа
Код
2 5 3 46 23 685 30 123 45 4863
13 241 654 32 74 856 2 564 32 0 5 48 4523
113 11117
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 22:58  [ТС]     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #11

Но так-же тут присутствуют числа с двумя одинаковыми цифрами подряд.
При выводе чисел на экран.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
19.06.2014, 23:07     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #12
evreyizada, где это вы компилируете, что за IDE.
У меня всё выводит правильно, в функциях ничего не меняли?
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 23:12  [ТС]     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #13
через онлайн компилятор http://www.onlinecompiler.net/ccplusplus
обычно работаю через visual studio, но под рукой его не оказалось
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
19.06.2014, 23:27     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #14
evreyizada, что-то я не доверяю этому компилятору.
http://www.compileonline.com/compile_cpp_online.php
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cmath>
#include <string>
#include <sstream>
#include <fstream>
 
bool neededPrime(int num)
{
    std::string str;   
    std::ostringstream convert; 
    convert << num;             
    str = convert.str();        
    for(int i = 0; i < str.size() - 1; i++)
        if(str[i] == str[i + 1]) return false;
    return true;
}
 
bool isPrime(int num)
{
    if(num <= 1) return false;
    for(int i = 2; i < sqrt(num); i++)
            if(!(num % i)) return false; 
    if(neededPrime(num)) return true;
}
 
int main()
{
    std::ifstream file("input.txt");
    if(file)
    {
        int num;
        while(file >> num)
        {
            if(isPrime(num))
                std::cout << num << std::endl;
        }
        file.close();
    }
    else
        perror("Error");
    
    return 0;
}
evreyizada
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 11
19.06.2014, 23:41  [ТС]     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #15
Более менее разобрался.
Если не сложно, можно на последок объяснить поподробнее принцип работы данного элемента:
std::string str;
std::ostringstream convert;
convert << num;
str = convert.str();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2014, 00:09     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр
Еще ссылки по теме:

C++ Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр
Циклы: напечатать в убывающем порядке все трехзначные числа, в записи которых нет одинаковых цифр C++
Найти все простые числа, не превосходящие N, в десятичном представлении которых, нет совпадающих цифр C++

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

Или воспользуйтесь поиском по форуму:
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
20.06.2014, 00:09     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр #16
C++
1
2
3
4
std::string str;            // Создаём переменную string (string - грубо говоря, массив из char)
std::ostringstream convert; // Создаём поток для преобразования
convert << num;             // Вставляем текстовое представление числа в поток
str = convert.str();        // В значение str устанавливаем содержимое потока
Добавлено через 11 минут
evreyizada, в общем, это преобразование int в string
Yandex
Объявления
20.06.2014, 00:09     Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр
Ответ Создать тему
Опции темы

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