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

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

Войти
Регистрация
Восстановить пароль
 
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
#1

В чём ошибка? - C++

20.11.2013, 19:23. Просмотров 268. Ответов 8
Метки нет (Все метки)

Доброго времени суток!
Есть задачка, есть кривое решение.
Суть задачки такова: найти все простые числа до 1000 и вывести их на экран.
Помогите, пожалуйста, новичку, подправьте код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
    int i,j;
    for (i=2; i<1000; i++) {
        for (j=2; j<i; j++) if (!(i%j)) break;
        cout<<j<<" простое число.\n";
        }
          
    system ("pause");
    return 0;
}
Извиняюсь за размножение идентичных тем
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 19:23     В чём ошибка?
Посмотрите здесь:

в чём ошибка? - C++
Не могу разобраться в этом. Нужно составить программу вычисляющую в зависимости от знака(с) сумму/разность двух двузначных чисел(xx+yy) ...

в чём ошибка? - C++
Программа не дописанная. #include &lt;iostream&gt; // подключение библиотеки ввода-вывода #include &lt;conio.h&gt; // подключение библиотеки...

В чём ошибка? - C++
#include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;climits.h&gt; #include &lt;cstring.h&gt; unsigned arr, larr; bool...

В чём ошибка - C++
собственно вот. программа должна вывести логин, но не выводит его. по каким средствам можно заставить программу вывести логин #include...

В чём ошибка? - C++
Здравствуйте, у меня проблемы... В консоли пишу 2, &quot;Для продолжения нажмите любую клавишу...&quot;. Я думаю что это из-за if (o == 2) в...

В чём ошибка? - C++
Здравствуйте! Хотел написать программу для смены пароля на тот что имеется в указаном файле но почему-то она не работает можете подсказать...

в чём ошибка? - C++
не пойму в чём ошибка! :( выдаёт неправильное значение... Даны натуральное число n, действительное число х. Вычислить: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Only_Loko
10 / 10 / 0
Регистрация: 20.09.2013
Сообщений: 22
20.11.2013, 19:53     В чём ошибка? #2
В твоей программе break; выводит только из внутреннего цикла. Поэтому j у тебя будет печататься на каждой итерации.
Одно из решений этой проблемы завести флажочек, который контролирует простое это число или нет. Например, если выполняется if, то флаг делаешь false, а j выводить в том случае, если flag==true.

Добавлено через 9 минут
Например вот так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include<iomanip>
 
using namespace std;
 
int main()
{
    bool flag;
    for(int i=2; i<1000; i++){
        flag=true;
      for(int j=2; j<=i/2; j++)
           if(i%j==0) { flag=false; break;}
 
       if(flag==true) cout<<setw(4)<<i;
    }
    return 0;
}
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
20.11.2013, 20:55  [ТС]     В чём ошибка? #3
Only_Loko, спасибо!

Не по теме:


Тут ещё вопрос есть
Не могу разобраться почему не выполняется цикл for

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
 
using namespace std;
 
int main()
{
    for (;;) {
        cout<<"10 random numbers (1..100): "<<endl;
        srand(time(NULL));
        for (int i=0;i<10;i++) cout<<rand() % 100 + 1<<" ";
        cin.get();
        cout<<endl;
        if (!kbhit()) break;
        }
        
    system ("pause");
    return 0;
}

zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,183
Завершенные тесты: 1
20.11.2013, 21:14     В чём ошибка? #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
int main()
{
    for (;;) 
    {
        cout<<"10 random numbers (1..100): "<<endl;
        srand(time(NULL));
        for (int i=0;i<10;i++) cout<<rand() % 100 + 1<<" ";
        cout<<endl<<"exit?";
        if (_getch()=='y') break;
    }
    return 0;
}
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
20.11.2013, 21:36  [ТС]     В чём ошибка? #5
zss, спасибо)
Работоспособность кода была не очень важна, просто не понятно где ошибка: в коде что-то не так или с логикой не очень хорошо. И как должно быть?
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,183
Завершенные тесты: 1
20.11.2013, 21:41     В чём ошибка? #6
if (!kbhit()) break; означает, что, если клавиша не нажата, то выйти из цикла.
Не думаю, что Вы успеете так быстро нажать клавишу,
что цикл повториться.
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
20.11.2013, 22:08  [ТС]     В чём ошибка? #7
zss, извините, был не внимателен)
Действительно, должно быть так:
C++
1
if (kbhit()) break;
Кликните здесь для просмотра всего текста
Если я не ошибаюсь Функция kbhit() возвращает 0 до тех пор пока не будет нажата клавиша, т.е. как только клавиша будет нажата выполнится выход из цикла.

Но цикл for всё равно не работает.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,183
Завершенные тесты: 1
21.11.2013, 19:31     В чём ошибка? #8
Может быть kbhit() срабатывает учитывая предыдущее нажатие клавиш.
Перед опросом их надо как-то сбросить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 20:51     В чём ошибка?
Еще ссылки по теме:

В чём ошибка - C++
Программа вылетает когда я пытаюсь по модулю найти. Объясните где я ошибся! // 2.cpp: определяет точку входа для консольного приложения. ...

в чём ошибка? - C++
Спичечная модель Профессор Самоделкин решил изготовить объемную модель кубиков из спичек, используя спички для рёбер кубиков....

В чём ошибка???((( - C++
Програма для нахождения площади интеграла #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; void main(){ double...

в чём ошибка ? - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; void replace(string &amp;str, char c,) { ...

в чём ошибка - C++
void load_file (queue *q) { char path; int count=0; system(&quot;cls&quot;); printf (&quot;\nVvedite put', imja i rashirenie...


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

Или воспользуйтесь поиском по форуму:
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
24.11.2013, 20:51  [ТС]     В чём ошибка? #9
zss, думаю это может быть связано с привязкой ко времени, т.к. никакой инф-ции по сбросу kbhit() не нашёл.
Хотя мне сложно судить о первопричинах данной проблемы
Yandex
Объявления
24.11.2013, 20:51     В чём ошибка?
Ответ Создать тему
Опции темы

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