Форум программистов, компьютерный форум CyberForum.ru

Нужны задачи для решения - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 405
24.08.2014, 23:17     Нужны задачи для решения #1
Здравствуйте. Если здесь есть студенты-программисты, то очень попрошу их сбросить сюда задания по С++, потому что все свои уже перерешал.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Памирыч
26.08.2014, 08:57     Нужны задачи для решения
  #41

Не по теме:

Тема хорошо развивается и без ТС, который больше не появлялся в теме

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexander_1
10 / 10 / 0
Регистрация: 18.08.2014
Сообщений: 58
26.08.2014, 09:00     Нужны задачи для решения #42
Бери книгу по программированию на С++ Павловской (она как раз для студентов) и решай все 20 вариантов для каждой главы. Задачи кстати хорошие. Книгу можешь в интернете найти
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,669
26.08.2014, 09:26     Нужны задачи для решения #43
Вода:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/////////////////////////////////////////////////////////////////////////////////////////
//Одномерный массив рендомно заполняется (длина от 20) числами от 0 до 9. На этот массив 
//якобы сверху льется вода и останьте только в "ямах". Найти объем воды.
//Условия - можно использовать:
//- 1 одномерный массив
//- 1 Цикл
//- Неограничено переменных. (в рамках разумного)
/////////////////////////////////////////////////////////////////////////////////////////
#include <cstdlib>
#include <ctime>
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    const   int     VAL_MAX     =   9;
    const   int     ARR_SIZE    =   7;
 
    srand(unsigned(time(0)));
 
    int     arr[ ARR_SIZE ];
 
    std::cout   <<  std::endl
                <<  std::endl
                <<  std::endl;
 
    for( int  i = 0; i < ARR_SIZE; ++i )
    {
        arr[i] = rand() % VAL_MAX + 1;
    }
 
    for( int  i = 0; i < ARR_SIZE; ++i )
    {
        std::cout   <<  arr[i]
                    <<  '\t';
    }
 
    std::cout   <<  std::endl;
 
    bool    _1_is_active    =   false;
    bool    _2_is_active    =   false;
    bool    _3_is_active    =   false;
 
    bool    _4_is_active    =   false;
    bool    _5_is_active    =   false;
    bool    _6_is_active    =   false;
 
    bool    _7_is_active    =   false;
    bool    _8_is_active    =   false;
    bool    _9_is_active    =   false;
 
    int     _1_counter      =   0;
    int     _2_counter      =   0;
    int     _3_counter      =   0;
 
    int     _4_counter      =   0;
    int     _5_counter      =   0;
    int     _6_counter      =   0;
 
    int     _7_counter      =   0;
    int     _8_counter      =   0;
    int     _9_counter      =   0;
 
    int     water           =   0;
 
    for( int  i = 0; i < ARR_SIZE; ++i )
    {
        switch( arr[i] )
        {
        case    0   :   if( _1_is_active )    { ++_1_counter; }
        case    1   :   if( _2_is_active )    { ++_2_counter; }
        case    2   :   if( _3_is_active )    { ++_3_counter; }
 
        case    3   :   if( _4_is_active )    { ++_4_counter; }
        case    4   :   if( _5_is_active )    { ++_5_counter; }
        case    5   :   if( _6_is_active )    { ++_6_counter; }
 
        case    6   :   if( _7_is_active )    { ++_7_counter; }
        case    7   :   if( _8_is_active )    { ++_8_counter; }
        case    8   :   if( _9_is_active )    { ++_9_counter; }
        default     :   ;
        }//switch
 
        if( i > 0 )
        {
            switch( arr[i] )
            {
            case    9   :   if( _9_is_active    &&  arr[i - 1] < 9 )    { water += _9_counter;  _9_is_active = false; }
            case    8   :   if( _8_is_active    &&  arr[i - 1] < 8 )    { water += _8_counter;  _8_is_active = false; }
            case    7   :   if( _7_is_active    &&  arr[i - 1] < 7 )    { water += _7_counter;  _7_is_active = false; }
 
            case    6   :   if( _6_is_active    &&  arr[i - 1] < 6 )    { water += _6_counter;  _6_is_active = false; }
            case    5   :   if( _5_is_active    &&  arr[i - 1] < 5 )    { water += _5_counter;  _5_is_active = false; }
            case    4   :   if( _4_is_active    &&  arr[i - 1] < 4 )    { water += _4_counter;  _4_is_active = false; }
 
            case    3   :   if( _3_is_active    &&  arr[i - 1] < 3 )    { water += _3_counter;  _3_is_active = false; }
            case    2   :   if( _2_is_active    &&  arr[i - 1] < 2 )    { water += _2_counter;  _2_is_active = false; }
            case    1   :   if( _1_is_active    &&  arr[i - 1] < 1 )    { water += _1_counter;  _1_is_active = false; }
            default     :   ;
            }//switch
        }//if
 
        if( i < ARR_SIZE - 1 )
        {
            switch( arr[i] )
            {
            case    9   :   if( arr[i + 1] < 9 )    { _9_is_active  =   true;   _9_counter  =   0;  }
            case    8   :   if( arr[i + 1] < 8 )    { _8_is_active  =   true;   _8_counter  =   0;  }
            case    7   :   if( arr[i + 1] < 7 )    { _7_is_active  =   true;   _7_counter  =   0;  }
 
            case    6   :   if( arr[i + 1] < 6 )    { _6_is_active  =   true;   _6_counter  =   0;  }
            case    5   :   if( arr[i + 1] < 5 )    { _5_is_active  =   true;   _5_counter  =   0;  }
            case    4   :   if( arr[i + 1] < 4 )    { _4_is_active  =   true;   _4_counter  =   0;  }
 
            case    3   :   if( arr[i + 1] < 3 )    { _3_is_active  =   true;   _3_counter  =   0;  }
            case    2   :   if( arr[i + 1] < 2 )    { _2_is_active  =   true;   _2_counter  =   0;  }
            case    1   :   if( arr[i + 1] < 1 )    { _1_is_active  =   true;   _1_counter  =   0;  }
            default     :   ;
            }//switch
        }//if
    }//for
 
    std::cout   <<  water
                <<  std::endl;
 
    system("pause");
}
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
26.08.2014, 09:32     Нужны задачи для решения #44
Mr.X, я извиняюсь, но это какая-то жесть. Куча переменных, никакого намека на генерализацию кода. Такая задача разбиралась тут: http://habrahabr.ru/post/200190/ и решение сильно короче.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,669
26.08.2014, 09:53     Нужны задачи для решения #45
Цитата Сообщение от 0x10 Посмотреть сообщение
Mr.X, я извиняюсь, но это какая-то жесть. Куча переменных, никакого намека на генерализацию кода. Такая задача разбиралась тут: http://habrahabr.ru/post/200190/ и решение сильно короче.
Ну, задним умом мы все крепки. Автор статьи не прошел же собеседование. А я-то "прошел".
Ну, а если серьезно, то спасибо за ссылку, интересное решение.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
26.08.2014, 10:52     Нужны задачи для решения #46
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
bool is_power_of_2 (int num)
{
* * *return !(num & (num - 1));
}
0 - не степень двойки
агерон
 Аватар для агерон
265 / 264 / 33
Регистрация: 12.10.2009
Сообщений: 1,031
28.08.2014, 23:17     Нужны задачи для решения #47
_Ivana, вы неверно понимаете задачу, не забывайте что тестовый набор данных 1Мб
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
29.08.2014, 00:44     Нужны задачи для решения #48
Ну порешайте Меньшикова тогда
http://informatics.mccme.ru/mod/stat...hapterid=611#1
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
29.08.2014, 07:32     Нужны задачи для решения #49
Цитата Сообщение от агерон Посмотреть сообщение
подсчета единичных битов в целом не отрицательном байте (символов).
А разве байт моет быть не целым? или отрицательным?
быстрая реализация табличный метод, таблица из 256 байтов
медленный цикл с делением на 2
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
int a=0;
while(n)
{
 if(n&1)
   a++;
n/=2;
}

извечная дилемма скорость/ память

компромисс: работать с полубайтами
Кликните здесь для просмотра всего текста
C++
1
2
3
            // 0 1  2 3  4  5  6   7  8 9 10 11 12 13 14 15
int arr[16]={0,1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3,  3,  4};
int a=arr[n&0xF]+arr[(n/16)&0x0F];
агерон
 Аватар для агерон
265 / 264 / 33
Регистрация: 12.10.2009
Сообщений: 1,031
29.08.2014, 13:25     Нужны задачи для решения #50
ValeryS, я рад что вы знаете решение этой задачи но вот предназначалась она не вам, а студенту который создал тему

Добавлено через 2 минуты
реализовать поиск подстроки в строке используя алгоритм Боуера-Мура, или аналогичный, строковыми библиотечными функциями не пользоваться

Добавлено через 3 минуты
P. P. S. уточнение на счет байта облегчало задачу, надеюсь вы в курсе что байты бывают не только 8 битные? и что запись signed byte также имеет право на существование? как и то что дробные числа в компьютере есть определенная трактовка тех же самых байт?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
29.08.2014, 13:57     Нужны задачи для решения #51
Цитата Сообщение от агерон Посмотреть сообщение
надеюсь вы в курсе что байты бывают не только 8 битные?
Ага
Байт это минимальная адресуемая ячейка
Цитата Сообщение от агерон Посмотреть сообщение
и что запись signed byte также имеет право на существование?
А что сия запись означает?
может все таки
C++
1
signed char
Цитата Сообщение от агерон Посмотреть сообщение
но вот предназначалась она не вам, а студенту который создал тему
А нехай учится
правда он как создал тему, так и пропал
но может другие узнают что такое табличный метод
_Ivana
2189 / 1394 / 124
Регистрация: 01.03.2013
Сообщений: 4,148
Записей в блоге: 2
29.08.2014, 16:18     Нужны задачи для решения #52
Цитата Сообщение от агерон Посмотреть сообщение
_Ivana, вы неверно понимаете задачу
И в чем же я, простите, неверно ее понимаю? Спровоцировали вы меня Вот без умножений/делений/остатков, выполнится хоть на АВР-Тини, где нет аппаратных умножений/делений, выполнится быстро, с имхо более разумным компромиссом скорость/память, без таблиц. Причем, подозреваю, что можно еще оптимизировать код - уменьшить количество операций, лень этим заниматься просто. Если надо - напишу для 32-битных переменных.
C++
1
2
3
4
5
6
7
8
9
    unsigned char m[10] = {0,1,2,3,4,5,6,7,8,9};
    unsigned int rez = 0;
    for (unsigned int i = 0; i<10; i++) {
        unsigned char c = m[i];
        c = (c & 85) + ((c>>1) & 85);
        c = (c & 51) + ((c>>2) & 51);
        c = (c & 15) + (c>>4);
        rez += c;
    }
ЗЫ это к тому, что "пусть студенты учатся" не только дилеммам "таблицы/математика в лоб", а не пренебрегают чуть менее тривиальной математикой и советами от других. Конкретно: Уоррен - Алгоритмические трюки для программистов - целая глава 5 посвящена теме подсчета битов в байтах/словах/массивах и приведены десятки алгоритмов, оптимальные каждый под свою платформу и систему команд процессора.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2016, 14:06     Нужны задачи для решения
Еще ссылки по теме:

Нужны задачи для их решения C++
Составить программу для решения математической задачи (для любых допустимых значений углов и сторон) C++
Нужны задачи для новичка или способ реализации кода C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Sisomagnit
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 2
09.06.2016, 14:06     Нужны задачи для решения #53
Цитата Сообщение от avatar1870 Посмотреть сообщение
Здравствуйте. Если здесь есть студенты-программисты, то очень попрошу их сбросить сюда задания по С++, потому что все свои уже перерешал.
1. Создать внешний файл данных структуры <инв.номер> <название оборудования> <цена> из 20 записей. Считать данные в массив. Описать функцию вывода массива на экран.
2. Описать функцию шейкерной сортировки массива на основе таблицы индексов сначала по <инв.номеру>, затем – по <названию оборудования> . Предусмотреть подсчет количества обменов М и сравнений С.
3. Проанализировать работу данного метода сортировки для случайного массива, для «лучшего» и «худшего» случаев.
Yandex
Объявления
09.06.2016, 14:06     Нужны задачи для решения
Ответ Создать тему
Опции темы

Текущее время: 23:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru