Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 2744, средняя оценка - 4.89
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
#1

Задачи для тренировки и лучшего понимания - C++

15.07.2010, 05:53. Просмотров 361194. Ответов 1272
Метки нет (Все метки)

Ребят. Кто-нибудь может дать задачу для тренировки? Приблизительно по всему курсу С++. Буду благодарен за сложную задачу, но которую способен сделать новичок-любитель. Затраты сил-времени не важно. Главное, чтобы это было интересно и не слишком рутинно. + Если найдется человек который даст задачу просьба помогать с кодом, который я буду себя скидывать. Не переписывать за меня, но указывать на ошибки и желательно объяснять. Заранее спасибо.

Список задач, решение которых присутствует в данной теме:
43
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 05:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Задачи для тренировки и лучшего понимания (C++):

Прошу примеров для понимания INDY
Уважаемые коллеги и братья по интересу. Прошу примеров использования Indy UDP...

Ищу примеры для понимания взаимодействия Callback + event
Господа, подкиньте плиз какой-нибудь пример для понимания взаимодействия...

Элементарные программы, для лучшего понимания языка...
Здравствуйте. Вот сегодня решил что пора изучать с++. Есть пару задач. Начал...

Нужны задачи для тренировки
Киньте задачки на классы......а то в самоучителе, по которому я учу...

Нужны задачи для тренировки
Здравствуйте киньте пожалуйста задания по с++ для человека начинающего ...

Нужны простые задачи для тренировки
Добрый день всем:) Наверное подобных тем как я тут сотни,но всё же. Начал...

1272
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
04.08.2010, 15:05 #541
Цитата Сообщение от Nameless One Посмотреть сообщение
Сравнить размер какого-нибудь символа с размером char?
Что подразумевается под символом? Если тут замашка на юникод, то это не оно
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:06 #542
Цитата Сообщение от Evg Посмотреть сообщение
Что подразумевается под символом? Если тут замашка на юникод, то это не оно
sizeof(char)==sizeof('a')
3
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 15:08 #543
Цитата Сообщение от Evg Посмотреть сообщение
Думаю, что далеко не всем очевидно, что такое 2[a]
никогда такого не видел
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
04.08.2010, 15:09 #544
Цитата Сообщение от Nameless One Посмотреть сообщение
sizeof(char)==sizeof('a')
Ох...ть. Поясни?
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:09 #545
Цитата Сообщение от Evg Посмотреть сообщение
Ох...ть. Поясни?
C и C++
2
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
04.08.2010, 15:09 #546
Цитата Сообщение от niXman Посмотреть сообщение
никогда такого не видел
Курили не только авторы телепузиков, но и разработчики Си
1
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:10 #547
Цитата Сообщение от niXman Посмотреть сообщение
никогда такого не видел
Согласен. Впервые такое вижу.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
04.08.2010, 15:10 #548
Цитата Сообщение от Nameless One Посмотреть сообщение
C и C++
Да не, мне нужен не код, а пояснение того, почему sizeof('a') на Си не равно единице.
0
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 15:11 #549
Цитата Сообщение от Nameless One Посмотреть сообщение
sizeof(char)==sizeof('a')
это справедливо для с++, но не для Си.
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
04.08.2010, 15:12 #550
Цитата Сообщение от Evg Посмотреть сообщение
Да не, мне нужен не код, а пояснение того, почему sizeof('a') на Си не равно единице.
в Си символьный литерал преобразуется в 4байтовое целое?
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:12 #551
Цитата Сообщение от niXman Посмотреть сообщение
это справедливо для с++, но не для Си.
Это я привел критерий сравнения С и С++
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
04.08.2010, 15:12 #552
Просто по поводу Си и Си++ мы в своё время наскребли 4 решения, два из которых являются абсолютно честными, одно теоретически честное, а одно условно хакерское. А тут по ходу ещё одно решение, только причины пока так никто и не озвучил
0
onspeed
2 / 2 / 0
Регистрация: 22.07.2010
Сообщений: 29
04.08.2010, 15:14 #553
Вот интересная штука.
Код
   ПОРЯДОК РАСЧЕТА И ПРОВЕРКИ
                   КОНТРОЛЬНОГО КЛЮЧА В НОМЕРЕ ЛИЦЕВОГО СЧЕТА

          В соответствии с принятой структурой номера лицевого  счета  Банк
     России разъясняет порядок расчета контрольного ключа.

          1. Номер  лицевого счета должен включать в себя контрольный ключ,
     обеспечивающий возможность проверки правильности номера лицевого счета
     при автоматизированной обработке документов.
          2. Для  расчета  контрольного  ключа  в  номере  лицевого   счета
     используется  совокупность двух реквизитов - условного номера РКЦ (или
     кредитной организации) и номера лицевого счета.


                                   1-ый разряд кода валюты
                                ---------------------------
                                │         контрольный ключ
                                │        ------------------
                                │        │
          А Б В    Г Д Е Ж З    И К Л    М    Н О П Р    С Т У Ф Х Ц Ш
          --T--    -------------------T-------------------------------
            │                         │
            │                         │   Номер лицевого счета
            │                         L------------------------
            │
            │ Условный номер РКЦ или кредитной организации
            L----------------------------------------------


          3. Значение условного номера РКЦ соответствует  разрядам  5  и  6
     девятизначного  банковского  идентификационного  кода (БИК);  условный
     номер РКЦ дополняется слева нулем до трех разрядов.
          4. Значение  условного номера кредитной организации соответствует
     разрядам 7, 8 и 9 БИК.
          5. Контрольный   ключ   рассчитывается  на  основе  приписываемых
     каждому разряду весовых коэффициентов:

          А Б В    Г Д Е Ж З    И К Л    М    Н О П Р    С Т У Ф Х Ц Ш
          ------------------------------------------------------------
          7 1 3    7 1 3 7 1    3 7 1    3    7 1 3 7    1 3 7 1 3 7 1

          6. В случае  использования  в  номере  счета  алфавитно-цифрового
     значения  кода  клиринговой  валюты  первый  разряд  этого  кода  (И),
     заданный алфавитным значением,  заменяется на соответствующую цифру:
     А- 0, В - 1,  С - 2,  Е - 3, Н - 4, К - 5, М - 6, Р - 7, Т - 8, Х - 9.
     Любая другая буква в данном разряде является ошибкой.  В качестве букв
     могут   использоваться  символы  кириллицы  и  соответствующие  им  по
     написанию латинские буквы,  которые могут набираться как  на  верхнем,
     так   и  на  нижнем  регистре.  7.  На  основе  весовых  коэффициентов
     рассчитывается сумма произведений отдельных разрядов на  свой  весовой
     коэффициент  без учета контрольного ключа,  который принимается равным
     нулю ( М=0 ):

         А * 7 + Б * 1 + В * 3 + Г * 7 + Д * 1 + Е * 3 + Ж * 7 + З * 1 +
         И * 3 + К  * 7 +   Л * 1 + 0 * 3 + Н * 7 + О * 1 + П * 3 + Р * 7 +
         С * 1 + Т * 3 + У * 7 +  Ф * 1 + Х * 3 + Ц * 7 + Ш * 1

          8. Младший   разряд   полученной   суммы  умножается  на  весовой
     коэффициент контрольного ключа (т.е. на 3).
          9. Младший разряд полученного произведения принимается в качестве
     значения контрольного ключа.

          Примеры расчета контрольного ключа

          1. Пример расчета контрольного  ключа  в  лицевом  счете  клиента
     кредитной организации, сформированного с использованием цифрового кода
     валюты

           Условный номер кредитной организации                 7 4 6
           Весовые коэффициенты соответствующих разрядов        7 1 3

           Номер лицевого счета с нулевым значением
        контрольного ключа                        30101 002 0  0000 3100000
        Весовые коэффициенты                      71371 371 3  7137 1371371

          Рассчитывается сумма  произведений  отдельных  разрядов  на  свой
     весовой коэффициент без учета контрольного ключа (М=0)

           7 * 7 + 4 * 1 + 6 * 3 + 3 * 7 + 0 * 1 + 1 * 3 + 0 * 7 + 1 * 1 +
           0 * 3 + 0 * 7 + 2 * 1 + 0 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 +
           3 * 1 + 1 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 + 0 * 1 = 104

          Младший разряд равен 4. Умножая его на 3, получаем 4 * 3=12.
          Младший разряд  полученного  произведения  (2)  и  будет являться
     значением контрольного ключа.  В результате номер лицевого счета будет
     равен 30101 002 2 0000 3100000.

          Правильность расчета     контрольного     ключа    осуществляется
     обязательным  повторным  расчетом  суммы  произведений   разрядов   на
     приписанные  им  весовые  коэффициенты  с  учетом полученного значения
     контрольного ключа:

           7 * 7 + 4 * 1 + 6 * 3 + 3 * 7 + 0 * 1 + 1 * 3 + 0 * 7 + 1 * 1 +
           0 * 3 + 0 * 7 + 2 * 1 + 2 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 +
           3 * 1 + 1 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 + 0 * 1 = 110

          В результате получилось число,  кратное 10 (младший разряд  равен
     0), что подтверждает правильность расчета.


          2. Пример расчета контрольного ключа в лицевом счете клиента РКЦ,
     сформированного с использованием алфавитно-цифрового кода валюты

            Условный номер РКЦ                                    0 0 5
            Весовые коэффициенты соответствующих разрядов         7 1 3

          Номер лицевого счета с нулевым значением
          контрольного ключа                 30101 В84 0  0000 2900000

          Заменяем букву В соответствующей ей цифрой (1) и получаем:

          Номер лицевого счета  с преобразованным
          значением первого разряда кода валюты  30101 184  0  0000 2900000
          Весовые коэффициенты                   71371 371  3  7137 1371371

          Рассчитываем сумму  произведений  отдельных  разрядов   на   свой
     весовой коэффициент без учета контрольного ключа (М=0)

       0 * 7 + 0 * 1 + 5 * 3 + 3 * 7 + 0 * 1 + 1 * 3 + 0 * 7 + 1 * 1 +
       1 * 3 + 8 * 7 + 4 * 1 + 0 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 + 2 *
       1 + 9 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 + 0 * 1 = 132

          Младший разряд равен 2. Умножая его на 3, получаем 2 * 3=6.
          Младший разряд полученного  произведения  (6)  и  будет  являться
     значением  контрольного  ключа.  В  результате  номер лицевого счета с
     учетом представления первого разряда исходного кода клиринговой валюты
     в виде цифры будет равен

                            30101 184 6 0000 2900000

          Правильность расчета  контрольного ключа проверяется обязательным
     повторным расчетом  суммы  произведений  разрядов  на  приписанные  им
     весовые коэффициенты с учетом полученного значения контрольного ключа:

           0 * 7 + 0 * 1 + 5 * 3 + 3 * 7 + 0 * 1 + 1 * 3 + 0 * 7 + 1 * 1 +
           1 * 3 + 8 * 7 + 4 * 1 + 6 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 +
           2 * 1 + 9 * 3 + 0 * 7 + 0 * 1 + 0 * 3 + 0 * 7 + 0 * 1 = 150

          В результате  получилось число,  кратное 10 (младший разряд равен
     0),  что подтверждает правильность расчета.  Таким образом,  с  учетом
     первоначального  значения кода клиринговой валюты номер лицевого счета
     будет равен

                            30101_В84_6_0000_2900000.
Вот. На си написать программу для вычисления этого самого Ключа.
Если хотите могу дать пример на вижуалбейсике
1
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:17 #554
Цитата Сообщение от fasked Посмотреть сообщение
в Си символьный литерал преобразуется в 4байтовое целое?
Вроде того.

Добавлено через 2 минуты
Цитата Сообщение от Evg Посмотреть сообщение
только причины пока так никто и не озвучил
К сожалению, про причины говорить не могу, т.к. сам это решение где-то увидел, и почему символьные литералы занимают в С 4 байта, я не знаю.

Цитата Сообщение от Evg Посмотреть сообщение
Просто по поводу Си и Си++ мы в своё время наскребли 4 решения, два из которых являются абсолютно честными, одно теоретически честное, а одно условно хакерское.
Поделишься?
0
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 15:17 #555
Цитата Сообщение от Evg Посмотреть сообщение
пояснение того, почему sizeof('a') на Си не равно единице.
хз почему... но знаю, что в Си, символы трактуются как целые.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
04.08.2010, 15:18 #556
Цитата Сообщение от Nameless One Посмотреть сообщение
К сожалению, про причины говорить не могу, т.к. сам это решение где-то увидел, и почему символьные литералы занимают в С 4 байта, я не знаю.
Фигасе... хотя может быть, что тут должно быть не 4, а размер int'а. Но в этом случае решение будет неправильным, потому как в общем случае размер char'а не равен размеру int'а
0
onspeed
2 / 2 / 0
Регистрация: 22.07.2010
Сообщений: 29
04.08.2010, 15:22 #557
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function GetKey(account As String, bic As String) as Byte
  Dim temp As String
  Dim wght(0 to 2) As Byte
  Dim i As Byte
  Dim s As integer
 
  wght(0) = 3:wght(1) = 7:wght(2) = 1
  temp = Right(bic,3) & Left(account,8) & "0" & Right(account,11)
 
  s = 0
  For i = 1 to 32
    s = s + CByte(Mid(temp,i,1)) * wght(i Mod 3)
  Next i
 
 GetKey = ((s Mod 10)*3) Mod 10
End Function
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
04.08.2010, 15:22 #558
Цитата Сообщение от Evg Посмотреть сообщение
Фигасе... хотя может быть, что тут должно быть не 4, а размер int'а. Но в этом случае решение будет неправильным, потому как в общем случае размер char'а не равен размеру int'а
почему же неправильно, если в Си sizeof('a') == sizeof(int), а в Си++ sizeof('a') == sizeof(char)
0
Хохол
Эксперт С++
475 / 443 / 34
Регистрация: 20.11.2009
Сообщений: 1,292
04.08.2010, 15:36 #559
Цитата Сообщение от Evg Посмотреть сообщение
C++
1
2
3
int a[10];
int x;
x = 2[a];
Evg, объясните же, втфиго?
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
04.08.2010, 15:37 #560
Цитата Сообщение от Хохол Посмотреть сообщение
объясните же, втфиго?
http://www.cyberforum.ru/cpp-beginners/thread129939.html
1
04.08.2010, 15:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2010, 15:37
Привет! Вот еще темы с решениями:

Какая база требуется для понимания C++?
Доброго времени суток! Возникло желание научиться работать в Си, но одолели...

Какую литературу для первоначального понимания С++ нужно учить
Что первоначальное для понимания нужно учить и от куда лучше вычитывать? ...

Нужен пример рекурсивной функции для понимания ее назначения и практической пользы
Не могу понять пользу рекурсии, может ли кто привести код в пример.

Дайте задания для тренировки
День добрый. Учу C++. Я уверен, что тут есть люди которые с ним отлично...


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

Или воспользуйтесь поиском по форуму:
560
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru