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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 2744, средняя оценка - 4.89
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
15.07.2010, 05:53     Задачи для тренировки и лучшего понимания #1
Ребят. Кто-нибудь может дать задачу для тренировки? Приблизительно по всему курсу С++. Буду благодарен за сложную задачу, но которую способен сделать новичок-любитель. Затраты сил-времени не важно. Главное, чтобы это было интересно и не слишком рутинно. + Если найдется человек который даст задачу просьба помогать с кодом, который я буду себя скидывать. Не переписывать за меня, но указывать на ошибки и желательно объяснять. Заранее спасибо.

Список задач, решение которых присутствует в данной теме:
Лучшие ответы (59)
Сообщение: #857841 Сообщение: #857861 Сообщение: #858352 Сообщение: #859371 Сообщение: #860160 Сообщение: #860255 Сообщение: #860259 Сообщение: #860317 Сообщение: #860368 Сообщение: #860466 Сообщение: #860508 Сообщение: #860720 Сообщение: #861091 Сообщение: #862174 Сообщение: #862617 Сообщение: #867259 Сообщение: #870298 Сообщение: #872053 Сообщение: #876456 Сообщение: #880114 Сообщение: #882889 Сообщение: #884418 Сообщение: #886414 Сообщение: #886989 Сообщение: #887733 Сообщение: #888464 Сообщение: #888487 Сообщение: #888941 Сообщение: #888947 Сообщение: #889040 Сообщение: #889450 Сообщение: #889587 Сообщение: #891772 Сообщение: #891790 Сообщение: #891862 Сообщение: #897758 Сообщение: #897782 Сообщение: #906325 Сообщение: #907991 Сообщение: #943672 Сообщение: #943700 Сообщение: #967735 Сообщение: #1053777 Сообщение: #1054209 Сообщение: #1083853 Сообщение: #1083928 Сообщение: #1131058 Сообщение: #1131359 Сообщение: #1273743 Сообщение: #1275465 Сообщение: #1276743 Сообщение: #1279215 Сообщение: #1282583 Сообщение: #1309088 Сообщение: #1315633 Сообщение: #1366395 Сообщение: #1550164 Сообщение: #1603678 Сообщение: #1604364
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 05:53     Задачи для тренировки и лучшего понимания
Посмотрите здесь:

C++ Какой компилятор выбрать для лучшего изучения С++ по книге Берна Страуструпа?п
C++ Элементарные программы, для лучшего понимания языка...
Нужны задачи для тренировки C++
C++ Киньте задачки для тренировки
C++ Нужны простые задачи для тренировки
Нужны задачи для тренировки C++
На соревнованиях по фигурному катанию оценки заносятся в компьютер. Составить программу для вывода на экран лучшего результата после каждого выступлен C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
04.11.2010, 00:09  [ТС]     Задачи для тренировки и лучшего понимания #821
Somebody,
Попытка
Если я еще не совсем убился - то
qq1(0)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
04.11.2010, 00:26     Задачи для тренировки и лучшего понимания #822
Цитата Сообщение от fasked Посмотреть сообщение
Не то чтобы это задачка, но все же напишу.

Сегодня наткнулся на неожиданное отличие Си от Си++ (для меня во всяком случае).
Вот такой код отлично компилируется g++.
C++
1
2
3
4
5
int main()
{
        int a = 0, b = 0;
        a == 1 ? a = 0 : b = 1;
}
И тот же самый код при компиляции gcc приводит к такой ошибке:
Код
main.c:4:2: error: lvalue required as left operand of assignment
Теперь, чтобы сообщение содержало хоть какой-то вопрос.
Как избавиться от ошибки при компиляции?
Эту хрень мы уже обсуждали. Вот нашёл только одну ссылку (начало где-то в той же теме, но сентенция в указанном посте).
Приведите 10 примеров непереносимого кода
Но вроде бы где-то ещё было
Somebody
2775 / 1588 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
04.11.2010, 12:27     Задачи для тренировки и лучшего понимания #823
ForEveR, правильно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
04.11.2010, 12:38     Задачи для тренировки и лучшего понимания #824
C
1
2
3
4
5
6
main() 
{ 
       int i, N=20; 
       for(i = 0 ; i < N ; i--) 
               printf("*"); 
}
Найдите три способа поменять в этом коде один символ, чтобы в результате код печатал 20 звездочек. Менять можно только по одному символу, ничего нельзя переставлять или передвигать

Добавлено через 4 минуты
Пишу "три способа", потому как в своё время мы только три нашли. Фиг знает, может есть ещё. Нашли ещё один способ, при котором печатается 21 звёздочка
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2010, 12:42     Задачи для тренировки и лучшего понимания #825
1 способ
C
1
2
3
4
5
6
main() 
{ 
       int i, N=20; 
       for(i = 0 ;-i < N ; i--) 
               printf("*"); 
}
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.11.2010, 12:46     Задачи для тренировки и лучшего понимания #826
Самый очевидный
C
1
2
3
4
5
6
int main() 
{
        int i, N = 20; 
        for(i = 0 ; i < N; N--)
                printf("*"); 
}
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2010, 12:47     Задачи для тренировки и лучшего понимания #827
fasked, под кат, пожалуйста)))
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
04.11.2010, 13:01     Задачи для тренировки и лучшего понимания #828
http://www.cyberforum.ru/cpp-beginne...tml#post877346
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.11.2010, 13:02     Задачи для тренировки и лучшего понимания #829
silent_1991, тогда
вот так
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main() 
{
        int i, N = 20;
        for(i = 0; ~i < N; i--)
                printf("*"); 
}
тоже можно
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2010, 13:17     Задачи для тренировки и лучшего понимания #830
fasked, так получается 21 звёздочка)))
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.11.2010, 13:20     Задачи для тренировки и лучшего понимания #831
Цитата Сообщение от silent_1991 Посмотреть сообщение
так получается 21 звёздочка)))
да, и правда, я как-то не посчитал сначала даже
Цитата Сообщение от Evg Посмотреть сообщение
Нашли ещё один способ, при котором печатается 21 звёздочка
видимо это он
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
04.11.2010, 14:08     Задачи для тренировки и лучшего понимания #832
Цитата Сообщение от Хохол Посмотреть сообщение
Однако боян
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 15:37     Задачи для тренировки и лучшего понимания #833
Недавно одному из коллег на собеседовании попалась такая забавная задачка:
Написать функцию принимающую число и возвращающую 1, если была передана 2 и возвращающую 2, если была передана 1. Напишите все варианты решения.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
04.11.2010, 15:41     Задачи для тренировки и лучшего понимания #834
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Напишите все варианты решения.
Чем-то мне такая постановка задачи напоминает историю про барометр
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2010, 16:06     Задачи для тренировки и лучшего понимания #835
CyBOSSeR, слишком уж фраза неоднозначная - "все варианты решения". Их разве не бесконечное множество?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 16:07     Задачи для тренировки и лучшего понимания #836
Цитата Сообщение от silent_1991 Посмотреть сообщение
Их разве не бесконечное множество?
Их несколько.
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2010, 16:21     Задачи для тренировки и лучшего понимания #837
Ну скажем, вот три:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int foo1(int n)
{
    return (n << 1 == 2) ? 2 : 1;
}
 
int foo2(int n)
{
    return n / 2 ? 1 : 2;
}
 
int foo3(int n)
{
    return n == 1 ? 2 : 1;
}
Но только можно ещё через ifы, switchи и т.д...
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
04.11.2010, 16:23     Задачи для тренировки и лучшего понимания #838
Сообщение было отмечено автором темы, экспертом или модератором как ответ
silent_1991, глядя на твои решения я понял суть вопроса и почему его задали на собеседовании. Для меня казалось очевидным самое простое решение, но у тебя его нет

Типа так
int f (int n) { return 3 - n; }
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2010, 16:23     Задачи для тренировки и лучшего понимания #839
silent_1991, операторы ветвления (if, switch не важно) - это лишь одно из возможных способов решиния. Есть и другие.
Evg, есть еще одно решения в том же духе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2010, 16:34     Задачи для тренировки и лучшего понимания
Еще ссылки по теме:

C++ Какая база требуется для понимания C++?
C++ Нужен пример рекурсивной функции для понимания ее назначения и практической пользы
C++ Builder Прошу примеров для понимания INDY
Книги для тренировки/развития котелка и просто убийства времени C++
Дайте задания для тренировки C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2010, 16:34     Задачи для тренировки и лучшего понимания #840
Evg, хм, и вправду, я идиот...

Добавлено через 10 минут
есть еще одно решения в том же духе
Вроде этого?

C
1
2
3
4
int f(int n)
{
    return 2 - (n / 2);
}
Yandex
Объявления
04.11.2010, 16:34     Задачи для тренировки и лучшего понимания
Закрытая тема Создать тему
Опции темы

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