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

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

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

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

Список задач, решение которых присутствует в данной теме:
44
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2010, 05:53
Ответы с готовыми решениями:

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

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

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

1272
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
04.11.2010, 16:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Evg, есть еще одно решения в том же духе.
Навскидку кроме этого в голову больше ничего не лезет (если смотреть именно разные подходы к решению, а не разные вариации решения):

Тыц
C
1
2
3
4
5
int f (int n)
{
  static int a[3] = { -1, 2, 1 };
  return a[n];
}
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 16:38
Операторы ветвления, арифметические операторы, массивы. Есть еще варианты.

P.S. Задача с собеседования по C++.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
04.11.2010, 16:47
Ещё так можно:

Код
C
1
2
3
4
int f(int n)
{
    return 4 + ~n;
}


Вообще с побитовыми операциями можно кучу примеров придумать...
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 16:51
silent_1991, да, побитовые операции еще один вариант решения.

Код
C
1
2
3
int f(int n) {
  return n ^ 0x3;
}


Опять же есть еще как минимум один способ решения.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
04.11.2010, 16:54
CyBOSSeR, вы имеете ввиду общий способ (т.е. на ровне с массивами, ветвлениями, побитовыми операциями и т.д.), или в пределах перечисленных?

Не по теме:

P.S. Извиняюсь, что не использую теги, у меня форум подглючивает и почему-то неактивны кнопки тегов, смайлов, вообще большинство скриптов

0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 16:57
Цитата Сообщение от silent_1991 Посмотреть сообщение
вы имеете ввиду общий способ
Да, за пределами тех, что уже использовались.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
04.11.2010, 17:01
silent_1991, вычитание, побитовые операции и т.п. - это всё один и тот же способ - придумать функцию (в математическом смысле), чтобы для 1 она возвращала 2, а для 2 - 1

Добавлено через 23 секунды
А про ещё один способ, с учётом собеседования по Си++ - надо подумать...

Добавлено через 2 минуты
может так?
Я не знаю, есть ли специализация шаблона по константному значению (а не по типу). Если есть, то через специализацию шаблонной функции
2
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 17:04
Evg,
в точку
template<int n>
int f() {
return n;
}

template<>
int f<1>() {
return 2;
}

template<>
int f<2>() {
return 1;
}
.
3
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
04.11.2010, 19:01
Этого варианта по-моему еще не было:
C++
1
2
3
4
int f(int n)
{
    return 2 / n;
}
Добавлено через 13 минут
Еще вариант:
C++
1
2
3
4
int f(int n)
{    
    return 2 * n % 3;
}
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
04.11.2010, 20:23
Кроме уже перечисленного ничего в голову не приходит... разве что
C++
1
2
3
4
int func(int n)
{
    return !(n-1)+1;
}
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 20:31
Mr.X, rangerx, все известные мне способы решения:
1. Условные операторы:
C++
1
2
3
int f(int n) {
  return n == 1? 2 : 1;
}
2. Арифметические операторы:
C++
1
2
3
int f(int n) {
  return 3 - n;
}
3. Побитовые операторы:
C++
1
2
3
int f(int n) {
  return n ^ 0x3;
}
4. Массивы:
C++
1
2
3
4
int f(int n) {
  int arr[] = { 0, 2, 1 };
  return arr[n];
}
5. Специализация шаблона:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<int n>
int f() {
  return n;
}
 
template<>
int f<1>() {
  return 2;
}
 
template<>
int f<2>() {
  return 1;
}
Возможно есть еще способы не входящие в данный список, но мне они не известны.
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
04.11.2010, 20:35
а так?
C++
1
sqrt(25-30*n+9*n*n);
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 20:37
nikkka, это опять же математические операции.
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
04.11.2010, 20:38
или так?
C++
1
sqrt((n*n-3)*(n*n-3));
Добавлено через 27 секунд
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
это опять же математические операции
ну да. а разве нельзя?
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
04.11.2010, 20:40
Так можно взять произвольную математическую функцию, принимающую хотя бы два различных значения, сдвигом и умножением заставить ее проходить через точки (1; 2) и (2; 1). Будем перебирать все варианты?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 20:41
Цитата Сообщение от nikkka Посмотреть сообщение
а разве нельзя?
Можно, конечно, но возможно есть способ решения не входящий в этот список. Именно способ, а не формула.
Цитата Сообщение от Хохол Посмотреть сообщение
Будем перебирать все варианты?
Это опять же математика.
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
04.11.2010, 20:42
Ну я типа объясняю, почему еще одна формула - неинтересно.
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
04.11.2010, 21:50
Цитата Сообщение от Evg Посмотреть сообщение
Нашли ещё один способ, при котором печатается 21 звёздочка
Вот способ,при котором ничего не печатается
способ
C
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0 ; i << N ; i--)
               printf("*");
}
C
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0 ; i > N ; i--)
               printf("*");
}


Добавлено через 14 минут
Evg, у меня даже вопрос встречный появился,пока придумывал (я сжульничал,решал с компилятором)
Как,изменив один символ в исходном коде задачи,вызвать предупреждение в gcc:
Code
1
warning: value computed is not used
решилась
C
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0; i + N ; i--)
               printf("*");
}
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
04.11.2010, 21:52
#pragma, но самое смешное то, что это один из трёх вариантов решения (звёздочка напечатается 20 раз))) )
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.11.2010, 21:56  [ТС]
#pragma, да собсна тут любое подойдет. И такое
C++
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0; i - N ; i--)
               printf("*");
}
C++
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0; i / N ; i--)
               printf("*");
}
C++
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0; i * N ; i--)
               printf("*");
}
C++
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0; i % N ; i--)
               printf("*");
}
И так далее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2010, 21:56

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
860
Закрытая тема Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru