Re: Задача
От: Кодт Россия  
Дата: 14.12.04 09:57
Оценка: +4
Здравствуйте, Patriarh, Вы писали:

P>Пожалуйста, напишите прогу!!!

P>Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

Уважаемый! Мы можем помочь в отладке программы, в разработке алгоритмической части, в оптимизации... Но только с твоим участием.

Код, наброски, мысли в студию!
Перекуём баги на фичи!
Re[3]: Задача
От: Кодт Россия  
Дата: 14.12.04 14:04
Оценка: :))) :)
Здравствуйте, hemmul, Вы писали:

H>на крайняк можно было схитрить и в этюды запостить


Убю!
Перекуём баги на фичи!
Re[4]: Задача
От: Аноним  
Дата: 14.12.04 14:36
Оценка: :))) :)
Здравствуйте, Кодт, Вы писали:

К>Убю!


Чтой-то на RSDN маньяков
Автор: Kupaev
Дата: 28.11.04
развелось...
Зайду-ка я пока анонимом... На всякий пожарный...
Re[2]: Задача
От: hemmul США  
Дата: 14.12.04 13:51
Оценка: :)))
Здравствуйте, Кодт, Вы писали:

К>Уважаемый! Мы можем помочь в отладке программы, в разработке алгоритмической части, в оптимизации... Но только с твоим участием.


на крайняк можно было схитрить и в этюды запостить

vox clamantis in deserto
Задача
От: Patriarh  
Дата: 12.12.04 18:02
Оценка: -2
Пожалуйста, напишите прогу!!!
Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

13.12.04 00:45: Перенесено из 'C/C++'
Re[2]: Задача
От: Кодт Россия  
Дата: 14.12.04 14:56
Оценка: :)
Здравствуйте, Аноним, Вы писали:

P>>Пожалуйста, напишите прогу!!!

P>>Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

А>Вот текст. Проверял под VS.NET 2003. Вроде работает


Работает, но, во-первых, неправильно, а во-вторых, не на Си
Попробуй ввести число 19. И ты утверждаешь, что оно делится на 9?
Перекуём баги на фичи!
Re: Задача
От: korzhik Россия  
Дата: 14.12.04 21:58
Оценка: -1
Здравствуйте, Patriarh, Вы писали:

P>Пожалуйста, напишите прогу!!!

P>Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

случилась тут у меня бессоница, решил помочь.
Вот:
#include <stdio.h>

#define FALSE   0
#define TRUE    1
typedef int BOOL;

BOOL check(int value)
{
    int val = value;
    do 
    {
        unsigned r = (unsigned)(val % 10);
        
        if (r && value % r) 
            return FALSE;

        val /= 10;      

    } while (val > 0);

    return TRUE;
}

int main()
{
    int n = 0;

    printf("%s", "Enter natural number: ");
    scanf("%d", &n);
    printf("%s","---------------------------------------\n");

    while (n > 0)
    {
        if (check(n))
            printf("%d\n", n);
        --n;
    }
    return 0;
}
Re: Задача
От: Аноним  
Дата: 14.12.04 10:04
Оценка:
Здравствуйте, Patriarh, Вы писали:

P>Пожалуйста, напишите прогу!!!

P>Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

Napisati — bez problem, a chito za eto mne budet, ili mne nasharik mozg napryagati ?
Re: Задача
От: Аноним  
Дата: 14.12.04 13:42
Оценка:
Здравствуйте, Patriarh, Вы писали:

P>Пожалуйста, напишите прогу!!!

P>Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

Вот текст. Проверял под VS.NET 2003. Вроде работает
Можно еще дополнительные проверки вставить, но ты сам с этим справишься.

#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
  int bigNumber;
  int curNumber = 1;
  int counter = 0;
  cout<<"Enter a number";
  cin>>bigNumber;

  while (curNumber>0 && bigNumber>0)
  {
    cout<<"Please enter next number that is not bigger than "<<bigNumber<<endl
        <<" and делится на каждую из своих цифр, отличных от нуля";
    cin>>curNumber;
    cout<<"The next number that is ->"<<curNumber<<endl;
  }
  cout<<"Thank you for your co-operation!!!"<<endl;

    return 0;
}
Re[5]: Задача
От: hemmul США  
Дата: 14.12.04 14:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Зайду-ка я пока анонимом... На всякий пожарный...

бесполезно... всё-равно выследят

vox clamantis in deserto
Re[3]: Задача
От: hemmul США  
Дата: 14.12.04 15:03
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Работает, но, во-первых, неправильно, а во-вторых, не на Си

К>Попробуй ввести число 19. И ты утверждаешь, что оно делится на 9?

а кто сказал что можно ввести 19? там же русским по серому написано:
Please enter next number that is not bigger than "<<bigNumber<<endl<"and делится на каждую из своих цифр, отличных от нуля

так что программа идеальна! разьве что не на СИ

vox clamantis in deserto
Re[2]: Задача
От: migel  
Дата: 15.12.04 06:40
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, Patriarh, Вы писали:


P>>Пожалуйста, напишите прогу!!!

P>>Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

K>случилась тут у меня бессоница, решил помочь.

ИМХО зря
... << RSDN@Home 1.1.4 beta 3 rev. 214>>
Re[3]: Задача
От: korzhik Россия  
Дата: 15.12.04 08:05
Оценка:
Здравствуйте, migel, Вы писали:

K>>случилась тут у меня бессоница, решил помочь.

M>ИМХО зря

не факт.
кто хочет действительно чему то учиться, тот будет решать задачи сам,
а кто учится для бумажки, тот всегда найдёт способ списать.
Ну а то, что я ему помог... мне не жалко, делов то на 10 минут.
Re[4]: Задача
От: Кодт Россия  
Дата: 15.12.04 08:35
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Ну а то, что я ему помог... мне не жалко, делов то на 10 минут.


Брутфорс, конечно, рулит...
Твоё решение имеет сложность O(N*log(N)^2): перебор всех чисел — O(N), разложение по основанию 10 — O(lg(N)) и проверка делимости — O(log(N)).
Можно ли быстрее? Предположим, что нам нужно найти все 100-разрядные числа, делящиеся на свои цифры?
Перекуём баги на фичи!
Re[5]: Задача
От: korzhik Россия  
Дата: 15.12.04 08:42
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, korzhik, Вы писали:


K>>Ну а то, что я ему помог... мне не жалко, делов то на 10 минут.


К>Брутфорс, конечно, рулит...

что такое брутфорс? полный перебор что ли?


К>Твоё решение имеет сложность O(N*log(N)^2): перебор всех чисел — O(N), разложение по основанию 10 — O(lg(N)) и проверка делимости — O(log(N)).

К>Можно ли быстрее? Предположим, что нам нужно найти все 100-разрядные числа, делящиеся на свои цифры?
интересно будет подумать над более оптимальном алгоритмом, но это вечером.
Re: Задача
От: JenekX Россия  
Дата: 15.12.04 17:52
Оценка:
Здравствуйте, Patriarh, Вы писали:

P>Пожалуйста, напишите прогу!!!

P>Найти натуральные числа, не превосх заданного и делящиеся на каждую из свойх цифр, отличных от нуля(прога должна быть ра C)

Ну, реализацию тебе хрен кто напишет, а вот алгоритм Я тебе
подскажу:

Во-первых объявляешь массив (например: int a[20]), далее пишешь функцию,
которая разбивает данное число на разряды (функция возвращает массив)
далее перебираешь полученные цифры, проверяя при этом условия, что цифра не
превоходит заданного числа, при этом лучше всего завести переменную, типа Bool
Если все условия учтены, то выводить на печать.

Ну вот и все!!!
Re[2]: Задача
От: Кодт Россия  
Дата: 16.12.04 09:46
Оценка:
Здравствуйте, JenekX, Вы писали:

JX>Во-первых объявляешь массив (например: int a[20]), далее пишешь функцию,

JX>которая разбивает данное число на разряды (функция возвращает массив)
JX>далее перебираешь полученные цифры, проверяя при этом условия, что цифра не
JX>превоходит заданного числа, при этом лучше всего завести переменную, типа Bool
JX>Если все условия учтены, то выводить на печать.

JX>Ну вот и все!!!


Ну вот не всё. Что значит "перебираешь полученные цифры"?
Проверка условия — для одного числа эта задача тривиальна, и массив здесь нафиг не нужен.
Для серии чисел — я уже говорил, тупое решение занимает O(log(N)^2) на каждое число.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.