Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Алгоритмы и теория программирования


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Gluck
Статус: 10-й класс
Рейтинг: 458
∙ повысить рейтинг »
solowey
Статус: Бакалавр
Рейтинг: 169
∙ повысить рейтинг »
CradleA
Статус: Профессор
Рейтинг: 17
∙ повысить рейтинг »

∙ Алгоритмы и теория программирования

Номер выпуска:227
Дата выхода:23.12.2019, 18:45
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:28 / 13
Вопросов / ответов:3 / 5

Консультация # 180896: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:Дан текстовый файл.Вывести на экран строки файла в алфавитном порядке. Программа должна производить проверку особых ситуаций при операциях ввода-вывода ...
Консультация # 185541: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: У меня стоит ребром вопрос, по моделированию физических процессов. кратко суть вопроса в том, что у меня есть две фотографии границ зерен металла и мне нужно смоделировать 3D-модель такой структуры по двум (немножко разных) фотографиям. Я провел исследования на пробном образце железа и полу...
Консультация # 36897: Здравствуйте! Возникла проблема в понимании "нетривиального" кода: a[i>>SHIFT] & (1<<(i & MASK)) где a - массив интеджеров, i - интеджер, SHIFT = 5, MASK = 0х1F А что собственно говоря происходит? Если можно по шагам, или ссылочку где это по шагам рассписано... К примеру i = 10 ...

Консультация # 180896:

Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:Дан текстовый файл.Вывести на экран строки файла в алфавитном порядке. Программа должна производить проверку особых ситуаций при операциях ввода-вывода

Дата отправки: 23.11.2010, 01:34
Вопрос задал: Maverick (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует vladisslav:

Здравствуйте, Magma!
Такой вариант. На C. Передавать 1 аргумент - исследуемый файл.
Используется список сортировки (точнее таблицы).
Используется b+ дерево. (Быстро и при большом количестве одинаковых слов занимает меньше памяти.)
Под словами подразумевается то, что читает функция scanf("%s",word).
Комментарии на английском (не люблю переключать раскладку).

Приложение:

Консультировал: vladisslav
Дата отправки: 24.11.2010, 18:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует lamed (Академик):

Здравствуйте, Magma! G++/Code::Blocks. Файл читается в массив строк, массив сортируется "пузырьком", печатается на экран.

#include <stdio.h>
#include <string.h>

int main(void)
{
    enum {MAX_LINE_SIZE=100, MAX_VEC_SIZE=1000};
    char line[MAX_LINE_SIZE], tmp[MAX_LINE_SIZE];
    char v[MAX_VEC_SIZE][MAX_LINE_SIZE];
    char fname[40];
    int i, j, vec_size;
    FILE *f;

    printf("Файл " );
    scanf("%s", &fname);

    // Проверка открытия
    if ((f = fopen(fname, "r")) == NULL)
    {
        printf("Файл не найден\n");
        system("pause");
        return 1;
    }

    // Заполняем массив строк
    vec_size=0;
    while( fgets(line, MAX_LINE_SIZE, f) != NULL )
    {
        strcpy(v[vec_size++], line);
    }

    // Проверка закрытия
    if (fclose(f)!=0)
    {
        printf("Ошибка закрытия файла\n");
        system("pause");
        return 1;
    }

    // Сортируем массив строк
    // Правильней было бы сортировать массив указателей
    for (i=0; i<vec_size-1; i++)
        for (j=vec_size-1; j>i; j--)
            if (strcmp(v[j], v[j-1])<0)
            {
                strcpy(tmp, v[j]);
                strcpy(v[j], v[j-1]);
                strcpy(v[j-1], tmp);
            }

    printf("\nПосле сортировки\n");
    for (i=0; i<vec_size; i++)
        printf(v[i]);

    system("pause");
    return 0;
}

Исходный файл.
Richard Bach
Jonathan Livingston Seagull

To the real Jonathan Seagull,
who lives within us all.

Part One

It was morning, and the new sun sparkled gold across the ripples of a
gentle sea. A mile from shore a fishing boat chummed the water. and the
word for Breakfast Flock flashed through the air, till a crowd of a
thousand seagulls came to dodge and fight for bits of food. It was another
busy day beginning.
But way off alone, out by himself beyond boat and shore, Jonathan
Livingston Seagull was practicing. A hundred feet in the sky he lowered
his webbed feet, lifted his beak, and strained to hold a painful hard
twisting curve through his wings. The curve meant that he would fly
slowly, and now he slowed until the wind was a whisper in his face, until
the ocean stood still beneath him. He narrowed his eyes in fierce
concentration, held his breath, forced one... single... more... inch...
of... curve... Then his featliers ruffled, he stalled and fell.
Seagulls, as you know, never falter, never stall. To stall in the air
is for them disgrace and it is dishonor.
But Jonathan Livingston Seagull, unashamed, stretching his wings
again in that trembling hard curve - slowing, slowing, and stalling once
more - was no ordinary bird.
Most gulls don't bother to learn more than the simplest facts of
flight - how to get from shore to food and back again. For most gulls, it
is not flying that matters, but eating. For this gull, though, it was not
eating that mattered, but flight. More than anything else. Jonathan
Livingston Seagull loved to fly.


Пример работы
Файл test.txt
После сортировки



But Jonathan Livingston Seagull, unashamed, stretching his wings
But way off alone, out by himself beyond boat and shore, Jonathan
It was morning, and the new sun sparkled gold across the ripples of a
Jonathan Livingston Seagull
Livingston Seagull loved to fly.
Livingston Seagull was practicing. A hundred feet in the sky he lowered
Most gulls don't bother to learn more than the simplest facts of
Part One
Richard Bach
Seagulls, as you know, never falter, never stall. To stall in the air
To the real Jonathan Seagull,
again in that trembling hard curve - slowing, slowing, and stalling once
busy day beginning.
concentration, held his breath, forced one... single... more... inch...
eating that mattered, but flight. More than anything else. Jonathan
flight - how to get from shore to food and back again. For most gulls, it
gentle sea. A mile from shore a fishing boat chummed the water. and the
his webbed feet, lifted his beak, and strained to hold a painful hard
is for them disgrace and it is dishonor.
is not flying that matters, but eating. For this gull, though, it was not
more - was no ordinary bird.
of... curve... Then his featliers ruffled, he stalled and fell.
slowly, and now he slowed until the wind was a whisper in his face, until
the ocean stood still beneath him. He narrowed his eyes in fierce
thousand seagulls came to dodge and fight for bits of food. It was another
twisting curve through his wings. The curve meant that he would fly
who lives within us all.
word for Breakfast Flock flashed through the air, till a crowd of a

Если требуются разъяснения, пожалуйста, вопросы в мини-форум.

Консультировал: lamed (Академик)
Дата отправки: 25.11.2010, 21:03
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 185541:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
У меня стоит ребром вопрос, по моделированию физических процессов. кратко суть вопроса в том, что у меня есть две фотографии границ зерен металла и мне нужно смоделировать 3D-модель такой структуры по двум (немножко разных) фотографиям.
Я провел исследования на пробном образце железа и получил следующие фотографии к примеру границ зерен.
Мне необходимо создать объемную модель границ зерен металла. На неделе я сфотографирую непосредственно готовые образцы меди и железа и получу похожие фотографии, далее сниму шлиф и также сфотографирую, получатся примерно похожие фотографии, и тут стоит задача смоделировать поведение границ зерен используя две фотографии.
Чтобы было более понятно я нарисовал от руки примерную картинку: рисунок границ зерен до шлифа и после соответственно , и далее пострение в объеме модели .
Пожалуйста, помогите кто может, просто на данном этапе я и застрял, и не могу продвигаться без этого.
Очень надеюсь на вашу помощь!

Дата отправки: 04.03.2012, 19:55
Вопрос задал: Alejandro
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Павел Юрьевич:

Здравствуйте, Alejandro!

Алгоритм действий для получения 3D-модели с возможностью вращать модель и смотреть под любым углом:
1. Средствами GDI+ загружаем обе фотографии (при условии, что позиция по X и Y у них одинаковая - это единственное, что нужно проверить вручную, до загрузки в программу).
2. Средствами GDI+ накладываем фильтр с увеличением контрастности до максимума.
3. Строим два трехмерных массива, где X, Y - координата на фото, а Z - для первой фото = 0, а для второй = 6 (мкм, если фото будет в масштабе 1px = 1мкм, если нет, то вместо 6 указать нужный масштаб). Значения в массивах будут = 1, если цвет темный (менее серого) и равно 0, если цвет светлый (более серого).
4. Создаем массив полигонов, в который переносим замкнутые фигуры из двух предыдущих массивов.
5. В массив полигонов необходимо добавить соединяющие полигоны между двумя плоскостями, для этого пишем алгоритм поиска ближайших точек (относительно X,Y) между двумя плоскостями. П редполагается, что при шлифовке, структура меняется не слишком сильно (смещения линий происходит на расстояния < расстояния между линий / 2).
6. С помощью Direct3D и полученного массива полигонов строим 3D-модель, ставим освещение, задаем материал и здесь же назначаем "горячие" клавиши для поворота фигуры.

Консультировал: Павел Юрьевич
Дата отправки: 07.03.2012, 20:20
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 36897:

Здравствуйте!

Возникла проблема в понимании "нетривиального" кода:

a[i>>SHIFT] & (1<<(i & MASK))

где a - массив интеджеров, i - интеджер, SHIFT = 5, MASK = 0х1F

А что собственно говоря происходит? Если можно по шагам, или ссылочку где это по шагам рассписано...
К примеру
i = 10
10>>5
будет
..

Дата отправки: 06.03.2006, 17:47
Вопрос задал: Zitz
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Татьяна:

Здравствуйте, Zitz!
Ну это типичное применение битовых операций. Ну к примеру, я думаю, не надо говорить, что каждое число представляется в виде бит, т.е. к примеру
а = 10000000b - соответствует числу 128 в беззнаковом байте
>> - означает операцию битового сдвига, т.е. если применить ее к а, то получим
01000000 , что соответствует 64.
Аналогична операция <<
что касается &, то это битовое "И", т.е. 1&0=0 , 0&0=0, 1&1 = 1
а что касается представленного выражения, то это надо смотреть в контексте, по крайней мере нужные операции уже описаны :).
Желаю удачи

Консультировал: Татьяна
Дата отправки: 06.03.2006, 18:36
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Zitz!
У нас есть следующий масив:
a[j] = b31...b0, где a[j] - j-й 32-разрядный элемент массива а, b31...b0 - биты j-го элемента
Будем считать наш массив а массивом битов со сквозной нумерацией 0-(32*n-1), где n - размерность массива a

Так вот, происходит проверка заданного бита по его сквозному номеру в заданном массиве 32-битных значений.
Скорее всего, для использования в условном операторе.

Каким образом это работает? Да очень просто!
i = 10 = 0x0a
i>>5 = 0 (тоже самое - разделить на 2 в степени 5, т.е.32) - получили индекс
i&0x1f = 10 (тоже самое - остаток от деления на 32)
1<<10 = 0x00000400 (получили маску бита)
Ну и, наконец, a[0] & 0x00000400 даст нам состояние 10-го бита

i = 33 = 0x21
i>>5 = 1 (тоже самое - разделить на 2 в степени 5, т.е.32) - получили индекс
i&0x1f = 0x01 (тоже самое - остаток от деления на 32)
1<<1 = 0x00000002 (получили маску бита)
Ну и, наконец, a[1] & 0x00000002 даст нам состояние 33-го бита

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 06.03.2006, 18:43
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное