Форум: Форум C++Разное
Новые темы: 00
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Первые два четных и первое нечетное избыточные числа

Сообщения:  [1-10]   [11-11] 

 
 автор: Cena   (25.12.2011 в 18:39)   письмо автору
 
   для: cheops   (25.12.2011 в 14:09)
 

Огромное Вам спасибо. С программой я разобрался.

  Ответить  
 
 автор: cheops   (25.12.2011 в 14:09)   письмо автору
 
   для: Cena   (25.12.2011 в 02:54)
 

Этим мы говорим, если число избыточное, то выполнить содержимое if-блока.

  Ответить  
 
 автор: Cena   (25.12.2011 в 02:54)   письмо автору
 
   для: cheops   (25.12.2011 в 01:45)
 

Спасибо, а вот этим условием if(is_isbyt_number(i)), что мы хотим сказать?

  Ответить  
 
 автор: cheops   (25.12.2011 в 01:45)   письмо автору
 
   для: Cena   (24.12.2011 в 20:27)
 

>И вот эта строчка if(!(i % 2) && flgeven < 2) может ли быть записана как if(i%2==0 && flgiven<2)?
Да, вполне, так даже лучше с точки зрения стилистики, так как считается, что отрицания плохо воспринимаются.

  Ответить  
 
 автор: cheops   (25.12.2011 в 01:44)   письмо автору
 
   для: Cena   (24.12.2011 в 20:27)
 

>И как эту строчку понять в программе if(i % 2 && flgodd == 0)?
Это читается как если число нечетное (в этом случае остаток от деления % на 2, будет давать 1) И (&&) одновременно с этим переменная flgodd равна 0, тогда выполнить тело оператора if. Т.е. оба условия должны быть одновременно справедливы и flgodd равно 0 и число i быть нечетным.

  Ответить  
 
 автор: cheops   (25.12.2011 в 01:40)   письмо автору
 
   для: Cena   (24.12.2011 в 20:27)
 

>Здрасвуйте, подскажите пожалуйста, а возможно ли вэтой программе поменять цикл do while на
>for в главной функции?
Да, это возможно.
#include <stdio.h>
#include <iostream>
using namespace std;

// Прототип функции
int is_isbyt_number(int);
// Главная функция
int main()
{
  int i = 0;
  // Флаги для прекращения поиска
  int flgodd = 0, flgeven = 0;
  for(i = 0; flgeven < 2 || flgodd < 1; i++)
  {
    if(is_isbyt_number(i))
    {
      if(i % 2 && flgodd == 0)
      {
        // Нечетное число
        flgodd++;
        cout << "Первое нечетное избыточное число - " << i << endl;
      }
      if(!(i % 2) && flgeven < 2)
      {
        // Четное число
        flgeven++;
        if(flgeven == 1) cout << "Первое четное избыточное число - " << i << endl;
        if(flgeven == 2) cout << "Второе четное избыточное число - " << i << endl;
      }
    }
  }
  // Пауза перед закрытием
  system("PAUSE");
  return 0;
}
// Является ли число избыточным?
int is_isbyt_number(int number)
{
  int i = 1, total = 0;
  if(number <= 0) return 0;
  for(i = 1; i <= number; i++)
  {
    if(!(number % i)) total += i;
  }
  if(total > 2 * number) return 1;
  else return 0;
}

  Ответить  
 
 автор: Cena   (24.12.2011 в 20:27)   письмо автору
 
   для: cheops   (10.12.2011 в 18:28)
 

Здрасвуйте, подскажите пожалуйста, а возможно ли вэтой программе поменять цикл do while на for в главной функции? И как эту строчку понять в программе if(i % 2 && flgodd == 0)? И вот эта строчка if(!(i % 2) && flgeven < 2) может ли быть записана как if(i%2==0 && flgiven<2)?

  Ответить  
 
 автор: cheops   (10.12.2011 в 18:28)   письмо автору
 
   для: Cena   (10.12.2011 в 18:26)
 

На самом деле это переменная - в ней мы храним сумму делителей, которую потом сравниваем с удвоенным значением числа number (n).

[поправлено модератором: новый вопрос выделен в новую тему Ошибка: a function-definition is not allowed here before '{' token]

  Ответить  
 
 автор: Cena   (10.12.2011 в 18:26)   письмо автору
 
   для: cheops   (10.12.2011 в 18:23)
 

Спасибо, а total - это что за команда?

  Ответить  
 
 автор: cheops   (10.12.2011 в 18:23)   письмо автору
 
   для: Cena   (10.12.2011 в 17:55)
 

Можно начать отталкиваться от следующей программы
#include <stdio.h>
#include <iostream>
using namespace std;

// Прототип функции
int is_isbyt_number(int);
// Главная функция
int main()
{
  int i = 0;
  // Флаги для прекращения поиска
  int flgodd = 0, flgeven = 0;
  do
  {
    i++;
    if(is_isbyt_number(i))
    {
      if(i % 2 && flgodd == 0)
      {
        // Нечетное число
        flgodd++;
        cout << "Первое нечетное избыточное число - " << i << endl;
      }
      if(!(i % 2) && flgeven < 2)
      {
        // Четное число
        flgeven++;
        if(flgeven == 1) cout << "Первое четное избыточное число - " << i << endl;
        if(flgeven == 2) cout << "Второе четное избыточное число - " << i << endl;
      }
    }
  }
  while(flgeven < 2 || flgodd < 1);
  // Пауза перед закрытием
  system("PAUSE");
  return 0;
}
// Является ли число избыточным?
int is_isbyt_number(int number)
{
  int i = 1, total = 0;
  if(number <= 0) return 0;
  for(i = 1; i <= number; i++)
  {
    if(!(number % i)) total += i;
  }
  if(total > 2 * number) return 1;
  else return 0;
}

  Ответить  

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования