Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите нет ошибок но прогрмма не работает вот пример  (Прочитано 15047 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ergocom
Гость
« : 20-08-2006 20:55 » 

#include <iostream>
using namespace std;
int main()
{
   
   int number ;
   int number2;
   
   
   
   
   for(number=2; number<17; number++){

for(number2=2; number2<number; number2++)
{

   if((number%number2)!=0) continue;

   else
      number=true;
      
      break;
}
   }
   if(!number)

   {
   
   
      
         
      
         
         
         
      cout<<number;
}
   else

number=false;         
      
   return 0;
}


вроде моя програмка должна выводить простые числа тока она не работает, при проверки ошибок не нанаходит их!
что делать
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 21-08-2006 05:01 » 

ergocom, нет ничего удевительного в том, что код не работает
1. не кместу используете break/continue
2. присваеваете переменной int значение bool, вы уверены в том чему будет равна переменная после приваивания?
3. форматирование кода отдельный разговор
4. прочем некоторая логика есть Улыбаюсь
5. рекомендуется также использовать префиксный оператор ++ если вы не собираетесь использовать старое значение объекта в точке вызова оператора, постфиксный оператор ++ создаёт лишний временный объект.

я код немного поправил и вот что получилось Улыбаюсь
Код:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <sstream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
for(int number=2; number<17; ++number)
{
int number2;
for(number2=2; number2<number; ++number2)
if((number%number2)==0)
break;
if (number2 == number)
cout<<number<<"\n";
}

return 0;
}
Записан

Странно всё это....
ergocom
Гость
« Ответ #2 : 22-08-2006 01:17 » 

Код:
#include <iostream>
// выводит простые числа с 1 -19 !
using namespace std;



int main()

{


for(int i=1 ; i<21 ; i+=2)
cout<< i;


  return 0;
}
Сам наконец придумал как проще написать!
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #3 : 22-08-2006 04:38 » 

Код:
#include <iostream>
// выводит простые числа с 1 -19 !
using namespace std;



int main()

{


for(int i=1 ; i<21 ; i+=2)
cout<< i;


  return 0;
}
Сам наконец придумал как проще написать!

Улыбаюсь
ну-ну
если так проще то конечно,
вообще это не правильное решенье, попробуй использовать свою прогрммаму для поиска прочтых чисел <100 и посмотри как много там будет не простых чисел

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

Странно всё это....
ergocom
Гость
« Ответ #4 : 22-08-2006 05:00 » 

я тока учусь как лучше применить цыкл!
А так несомнено это не лучший вариант!
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #5 : 22-08-2006 05:31 » 

учись Улыбаюсь

вот тебе пример был очередной цикл в цикле Улыбаюсь
Записан

Странно всё это....
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #6 : 22-08-2006 10:43 » 

Код:
#include <iostream>
// выводит простые числа с 1 -19 !
using namespace std;



int main()

{


for(int i=1 ; i<21 ; i+=2)
cout<< i;


  return 0;
}
Сам наконец придумал как проще написать!


хм, а разве 9 и 15 простые числа?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 22-08-2006 11:34 » 

хм, а разве 9 и 15 простые числа?

ergocom хотел сказать НЕЧЁТНЫЕ! Улыбаюсь)
« Последнее редактирование: 22-08-2006 11:36 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
ergocom
Гость
« Ответ #8 : 22-08-2006 14:03 » 

ага цыкл не правильно работает!
на др форуме дали пример вместе с классом и обььектов!
ищу краткое решение этой задачи!
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #9 : 23-08-2006 06:40 » 

ergocom, какой задачи?
про простые числа или про нечетные числа?
с натуральными числами кратное решенье уже есть выше на несколько постов, переменные названны длинно но так оно вполне краткое
Записан

Странно всё это....
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #10 : 23-08-2006 08:56 » 

, а если про нечетные--твое решение правильное
Записан
ergocom
Гость
« Ответ #11 : 24-08-2006 02:55 » 

Вот как мона ище проще сделать
Код:
#include <iostream>
using namespace std;

int main() { 
_wsetlocale(LC_ALL, L"Russian");
  int i, j;
  bool prime;

  for(i=1; i < 100; i++) {
    prime = true; 

   
    for(j=2; j <= i/2; j++)
     
      if((i%j) == 0) prime = false;

    if(prime)
      cout << i << "  Простые числа с 1-100\n";
  }

  return 0;
}
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 24-08-2006 04:04 » 

Цитата: ergocom
for(j=2; j <= i/2; j++)
А ещё лучше не до i/2, а до sqrt(i).
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #13 : 24-08-2006 04:16 » 

Вот как мона ище проще сделать
Код:
#include <iostream>
using namespace std;

int main() { 
_wsetlocale(LC_ALL, L"Russian");
  int i, j;
  bool prime;

  for(i=1; i < 100; i++) {
    prime = true; 

   
    for(j=2; j <= i/2; j++)
    
      if((i%j) == 0) prime = false;

    if(prime)
      cout << i << "  Простые числа с 1-100\n";
  }

  return 0;
}

что же вы так код не читабельно форматируете
замена этого
Код:
    for(j=2; j <= i/2; j++)
     
      if((i%j) == 0) prime = false;

на вот это
Код:
    for(j=2; j <= i/2; j++)
        if((i%j) == 0)
        {
               prime = false;
               break;
      }
ускорит выполнение программы
Записан

Странно всё это....
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #14 : 24-08-2006 04:30 » new

а вот так еще быстрей Улыбаюсь

Код:
int _tmain(int argc, _TCHAR* argv[])
{
const int max_num = 100;
vector<int> simples;
simples.push_back(2);
for(int i=simples.front(); i<max_num; ++i)
{
bool simple = true;
for(vector<int>::iterator it = simples.begin(),it_end = simples.end(); it != it_end; ++it)
if((i%*it)==0)
{
simple = false;
break;
}

if (simple)
{
simples.push_back(i);
cout<<i<<"\n";
}
}

for(vector<int>::iterator it = simples.begin(),it_end = simples.end(); it != it_end; ++it)
cout<<*it<<"\n";

return 0;
}
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines