Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/2345: Рейтинг темы: голосов - 2345, средняя оценка - 4.54
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
1

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

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

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

Список задач, решение которых присутствует в данной теме:
44
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2010, 05:53
Ответы с готовыми решениями:

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

Задачи для тренировки и лучшего понимания языка
Предлагаю в этой теме размещать задачи, которые помогут новичкам (и не только) более детально...

Литература для лучшего понимания сути программирования
Привет! Подскажите литературу, которая поможет разобраться в сути самого процесса программирования,...

Набор задачь для тренировки и улучшения понимания программирования
Добрый вечер всем. Если кто знает модскажите где можно найти подобный набор задачь...

1272
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
04.08.2010, 15:05 541
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Nameless One Посмотреть сообщение
Сравнить размер какого-нибудь символа с размером char?
Что подразумевается под символом? Если тут замашка на юникод, то это не оно
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:06 542
Цитата Сообщение от Evg Посмотреть сообщение
Что подразумевается под символом? Если тут замашка на юникод, то это не оно
sizeof(char)==sizeof('a')
3
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 15:08 543
Цитата Сообщение от Evg Посмотреть сообщение
Думаю, что далеко не всем очевидно, что такое 2[a]
никогда такого не видел
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
04.08.2010, 15:09 544
Цитата Сообщение от Nameless One Посмотреть сообщение
sizeof(char)==sizeof('a')
Ох...ть. Поясни?
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:09 545
Цитата Сообщение от Evg Посмотреть сообщение
Ох...ть. Поясни?
C и C++
2
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
04.08.2010, 15:09 546
Цитата Сообщение от niXman Посмотреть сообщение
никогда такого не видел
Курили не только авторы телепузиков, но и разработчики Си
1
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:10 547
Цитата Сообщение от niXman Посмотреть сообщение
никогда такого не видел
Согласен. Впервые такое вижу.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
04.08.2010, 15:10 548
Цитата Сообщение от Nameless One Посмотреть сообщение
C и C++
Да не, мне нужен не код, а пояснение того, почему sizeof('a') на Си не равно единице.
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 15:11 549
Цитата Сообщение от Nameless One Посмотреть сообщение
sizeof(char)==sizeof('a')
это справедливо для с++, но не для Си.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
04.08.2010, 15:12 550
Цитата Сообщение от Evg Посмотреть сообщение
Да не, мне нужен не код, а пояснение того, почему sizeof('a') на Си не равно единице.
в Си символьный литерал преобразуется в 4байтовое целое?
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:12 551
Цитата Сообщение от niXman Посмотреть сообщение
это справедливо для с++, но не для Си.
Это я привел критерий сравнения С и С++
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
04.08.2010, 15:12 552
Просто по поводу Си и Си++ мы в своё время наскребли 4 решения, два из которых являются абсолютно честными, одно теоретически честное, а одно условно хакерское. А тут по ходу ещё одно решение, только причины пока так никто и не озвучил
0
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
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 15:17 554
Цитата Сообщение от fasked Посмотреть сообщение
в Си символьный литерал преобразуется в 4байтовое целое?
Вроде того.

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

Цитата Сообщение от Evg Посмотреть сообщение
Просто по поводу Си и Си++ мы в своё время наскребли 4 решения, два из которых являются абсолютно честными, одно теоретически честное, а одно условно хакерское.
Поделишься?
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 15:17 555
Цитата Сообщение от Evg Посмотреть сообщение
пояснение того, почему sizeof('a') на Си не равно единице.
хз почему... но знаю, что в Си, символы трактуются как целые.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
04.08.2010, 15:18 556
Цитата Сообщение от Nameless One Посмотреть сообщение
К сожалению, про причины говорить не могу, т.к. сам это решение где-то увидел, и почему символьные литералы занимают в С 4 байта, я не знаю.
Фигасе... хотя может быть, что тут должно быть не 4, а размер int'а. Но в этом случае решение будет неправильным, потому как в общем случае размер char'а не равен размеру int'а
0
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
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
04.08.2010, 15:22 558
Цитата Сообщение от Evg Посмотреть сообщение
Фигасе... хотя может быть, что тут должно быть не 4, а размер int'а. Но в этом случае решение будет неправильным, потому как в общем случае размер char'а не равен размеру int'а
почему же неправильно, если в Си sizeof('a') == sizeof(int), а в Си++ sizeof('a') == sizeof(char)
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
04.08.2010, 15:36 559
Цитата Сообщение от Evg Посмотреть сообщение
C++
1
2
3
int a[10];
int x;
x = 2[a];
Evg, объясните же, втфиго?
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
04.08.2010, 15:37 560
Цитата Сообщение от Хохол Посмотреть сообщение
объясните же, втфиго?
It is alive!
1
04.08.2010, 15:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2010, 15:37
Помогаю со студенческими работами здесь

Проверить на правильность и закомментировать весь код для лучшего понимания
Всем здравствуйте. Условие задачи - Заданная матрица целых чисел размером (N, N). Найти среднее...

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

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

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


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

Или воспользуйтесь поиском по форуму:
560
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru