Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 02:15   #1
Eshiru
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 13
Вопрос В моем коде ошибка. Задача:вывод простых чисел (С++). Код с моим комментарием прилагается. Р.S.: код стал читабельным.

Код:
#include <iostream>
using namespace std;

int main()
{setlocale (LC_ALL, "Rus");

  short Chislo1, Chislo2, Ostatok;
   cout<<"Введите диапазон чисел для нахождения простых: "<<endl;  
     cin>>Chislo1; cin>>Chislo2;
		
	for (;Chislo1<Chislo2;Chislo1++)
	    {
	       for (int i=2; 10>i&&i<Chislo1; i++) //число "і" до девятки проверяю сознательно, поскольку, по большому счету, откуда мне знать, что достаточна проверка деления без остатка на 2, 3, 5, 7?
                          {
		 Ostatok=Chislo1%i;

		          if (Ostatok==0) //При выполнении программы присутствуют некоторые непростые числа, например, 15. Почему не срабатывает break (отмечаю его звездочкой "*"), когда i=3?
                             {
			break; //* вот этот break, по идее, должен срабатывать, когда i=3, i=5. При его срабатывании, как мне кажется, Chislo1 должно увеличиваться на единицу. Т.е. при работе программы число 15 выводиться как простое не должно, а оно выводится. Вопрос: почему?
                             }
                          else
			     { 
			  cout<<Chislo1<<"\t";
				break;
			     }
				
		   }
					
							
	}
		

return 0;

Последний раз редактировалось Eshiru; 27.11.2012 в 14:58.
Eshiru вне форума Ответить с цитированием
Старый 27.11.2012, 02:37   #2
Eshiru
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 13
По умолчанию

Да, забыл добавить, что интересна реализация этой программы именно с помощью вложенного цикла. С помощью простого цикла у меня проблем не возникло. Правда в условиях if я указывал конкретное деление по остатку на 2, 3, 5, 7.
Eshiru вне форума Ответить с цитированием
Старый 27.11.2012, 02:47   #3
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию

подойдет?
http://brucha.ru/poisk-prostyx-chisel-c/
svkpro вне форума Ответить с цитированием
Старый 27.11.2012, 11:47   #4
Eshiru
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 13
По умолчанию

Спасибо, SVKPRO. Но, если честно, то больше интерестно не готовое решение, а нахождение ошибки в моем коде. Готовое решение - это результат чужой деятельности. А я хочу разобраться именно со своим. Проблема в том, что, вроде как логика в моем решении есть и программа должна работать корректно, а она, зараза, правильно не работает.
С этим хочу и разобраться.
Буду благодарен более опытным товарищам.
Eshiru вне форума Ответить с цитированием
Старый 27.11.2012, 11:49   #5
Eshiru
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 13
По умолчанию

"Более опытным товарищам" относилось не к тебе, SVKPRO. Имелось в виду, что более опытным, чем я.
Eshiru вне форума Ответить с цитированием
Старый 27.11.2012, 11:56   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
10>i<Chislo1
Хороший язык Си, только опасный. Это выражение читается как (10>i)<Chislo1. Пусть Chislo1=12, i=7. Сначала вычисляется (10>i). Результат... true. Согласно стандарту, это некоторое ненулевое значение. К примеру, 13 - хорошее ненулевое значение. Дальше вычисляется 13<Chislo1, результат вычисления выражения - false, он же 0. Выход из цикла.
Abstraction вне форума Ответить с цитированием
Старый 27.11.2012, 12:03   #7
Eshiru
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 13
По умолчанию

Abstraction, это условие я могу записать и так: 10>i&&i<Chislo1, но мне кажется, что мою проблему это не решит. Сейчас, к сожалению, попробовать возможности нет. Приду домой - обязательно попробую.
Eshiru вне форума Ответить с цитированием
Старый 27.11.2012, 12:08   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Up phụ bạn hiền, chúc bạn hiền đắt khách
*Заинтересованно*
Сдаюсь. Что за кодировка?
Abstraction вне форума Ответить с цитированием
Старый 27.11.2012, 12:10   #9
Eshiru
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
*Заинтересованно*
Сдаюсь. Что за кодировка?
Инопланетный разум.
Eshiru вне форума Ответить с цитированием
Старый 27.11.2012, 14:03   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Инопланетный разум.
практически, да..

автор из Vietnam, Ho Chi Minh City
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о нахождении простых чисел в матрице alexamazzing Помощь студентам 1 26.10.2012 02:11
Вывод на экран N простых чисел. Renge Помощь студентам 2 13.09.2011 18:53
задача по массивам // Delphi //код прилагается Makotya Помощь студентам 2 20.05.2009 22:04
Вывод простых чисел. MAKEDON Помощь студентам 1 10.03.2009 16:55
Где ошибка в моем коде? artemavd БД в Delphi 12 22.09.2008 14:28