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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 158, средняя оценка - 4.96
Spy
0 / 0 / 0
Регистрация: 07.04.2009
Сообщений: 7
#1

Интересные задачи для новичков. - C++

21.04.2009, 21:19. Просмотров 20762. Ответов 43
Метки нет (Все метки)

Подскажите,пожалуйсто,где можно найти список интересных или олимпиадных(школьных) задач.
Заранее благодарен.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
21.04.2009, 21:24     Интересные задачи для новичков. #2
Чем тебе этот раздел не список задач.(Валом)
rrrFer
Заблокирован
21.04.2009, 21:36     Интересные задачи для новичков. #3
для школьников, например, найти сумму ряда 1/(x*x) , x=1..100000000 точность до 14 цифр в дробной части. ответ 1.64472532272339 недостаточно точный, более точен 1.6449.. остальные цифры не пишу
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
21.04.2009, 21:58     Интересные задачи для новичков. #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
тест на знание С++
C++
1
2
3
int a = 0;
int b = 1;
int c = a+b; /* результат == 1  */
Постановка задачи: убрать с кода знаки "=". (Желательно, что бы оно ещё потом компилилось ).

Добавлено через 2 минуты 44 секунды
2.Вот: зачем нужно перегружать стандартный оператор присваивания и конструктор копирования, при динамическом распределении памяти в классе?

Добавлено через 12 минут 24 секунды
И 3. при каком условии эта
C++
1
2
3
bool x_func(int x){
    return ((x != 0) && (x == -x)); 
}
функция вернет не "0". (кто знает не спешите отвечать)
Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
21.04.2009, 22:05     Интересные задачи для новичков. #5
> Постановка задачи: убрать с кода знаки "=". (Желательно, что бы оно ещё потом компилилось ).

А цель задачи какая? А то постановку задачи не особо понял

-------------------

Задача. Написать программу, которая будучи скомпилированной компилятором Си выдаст один результат (например, напечатает "Это Си"), а будучи скомпилированная компилятором Си++ выдаст другой результат (например, напечатает "Это Си++"). Условной компиляцией пользоваться нельзя. Т.е. тест на знание различного поведения одних и тех же конструкций на Си и Си++
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
21.04.2009, 22:06     Интересные задачи для новичков. #6
http://www.cyberforum.ru/cpp/thread30970.html
автор этой темы постоянно где-то вытаскивает подобные задачи
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
21.04.2009, 22:21     Интересные задачи для новичков. #7
Цитата Сообщение от Evg Посмотреть сообщение
А цель задачи какая? А то постановку задачи не особо понял
Имел в виду что этот
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main()
{
    int a = 0;
    int b = 1;
    int c = a + b;
    cout<<c<<endl;
    return 0;
}
код нужно модифицировать так чтобы в нем не было знака "=", но результат остался не изменим.)
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
21.04.2009, 22:33     Интересные задачи для новичков. #8
ISergey, мне 3 понравилась) 1 и 2, на мой взгляд, не представляют никакой сложности.
Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
21.04.2009, 22:36     Интересные задачи для новичков. #9
Цитата Сообщение от ISergey Посмотреть сообщение
код нужно модифицировать так чтобы в нем не было знака "=", но результат остался не изменим.)
Наверное я тупею, но всё равно не понял... Подозреваю, что "cout << 1 << endl;" - ответ неправильный, но не пойму, чем он противоречит условию
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
21.04.2009, 22:41     Интересные задачи для новичков. #10
Evg, тем что, тебе не надо изменять код..а лишь модифицировать.. a,b,c должны остатся.
Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
21.04.2009, 22:45     Интересные задачи для новичков. #11
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
ISergey, мне 3 понравилась) 1 и 2, на мой взгляд, не представляют никакой сложности.
3-я задача всё-тки читерская. В стандарте есть понятие "unspecified" - это когда стандарт чётко не оговаривает какие-то вещи и оставляет это на усмотрение компилятора. Т.е. за такую характеристику отвечает компилятор, а не стандарт, и компилятор выставляет это в своей документации. К таким характеристикам относятся, например, количетсво битов в байте, а также формат представления чисел

Ну так вот, данная задача имеет решение только в том случае, если используется двоичное представление целых знаковых чисел в дополнительном коде (что соотвествует "обычному" понятию, когда 0xfffff... это -1). Однако на некоторых сигнальных процессорах используется другие форматы представления целых чисел (не помню, как оно правильно называется). В этом формате отрицательное число получается из положительного взведением единицы в старший разряд (т.е. 0x80....01 это -1, 0x80....02 это -2)

Таким образом если подходить совсем честно, то задача имеет решение с оговоркой. Ну это так, к слову. Возможно, что кому-то будет полезно для самообразования

Добавлено через 1 минуту 36 секунд
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Evg, тем что, тебе не надо изменять код..а лишь модифицировать.. a,b,c должны остатся.
Тогда я наверное не понимаю слова "модифицировать". Замена "c=a+b" на "c=1" опять-таки это не правильное решение, только вот объясните почему? Я просто пытаюсь в условие вникнуть
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
21.04.2009, 23:11     Интересные задачи для новичков. #12
Цитата Сообщение от Evg Посмотреть сообщение
Тогда я наверное не понимаю слова "модифицировать". Замена "c=a+b" на "c=1" опять-таки это не правильное решение, только вот объясните почему? Я просто пытаюсь в условие вникнуть
нет, у тебя должны остатся эти переменные... но не должно быть знака равно...

p.s: скажу лишь, что я знаю два разных решения.
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
21.04.2009, 23:51     Интересные задачи для новичков. #13
Evg, Забыл сказать в Си такого не сделать(только С++)
PS я по поводу 1 задачи.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
22.04.2009, 00:08     Интересные задачи для новичков. #14
ISergey, ну не скажите... один из вариантов, ну это не тот, который вы подразумевали, компилируется и в си. я его потом придумал) ну он может не совсем тот)
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
22.04.2009, 00:11     Интересные задачи для новичков. #15
А решение уж больно простое
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main()
{
    int a(0);
    int b(1);
    int c(a + b);
    cout<<c<<endl;
    return 0;
}
Evg
Эксперт CАвтор FAQ
17309 / 5557 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
22.04.2009, 17:14     Интересные задачи для новичков. #16
Хорошо, по поводу первой задачи киньте ответ в личку. Может хоть глядя на ответ я пойму, а в чём задача-то состояла

Добавлено через 1 минуту 21 секунду
Цитата Сообщение от ISergey Посмотреть сообщение
А решение уж больно простое
Понятно... Я не берусь чётко сформулировать постановку задачи, но задача, на мой взгляд, неинтересная

Добавлено через 17 часов 1 минуту 14 секунд
Задача

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

C++
1
2
3
4
5
6
main()
{
       int i, N=20;
       for(i = 0 ; i < N ; i--)
               printf("*");
}
Мы в своё время нашли 3 способа. И ещё один, чтобы 21 звёздочка была
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
22.04.2009, 17:23     Интересные задачи для новичков. #17
А здесь for(i = 0 ; i < N ; i--) точно i--
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
22.04.2009, 17:31     Интересные задачи для новичков. #18
Цитата Сообщение от ISergey Посмотреть сообщение
А здесь for(i = 0 ; i < N ; i--) точно i--
по идее правильно все должно быть
трех способов не нашел, но один знаю
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
22.04.2009, 17:43     Интересные задачи для новичков. #19
CartmanRules, Ух ты быстрый.(О уже удалил)

Добавлено через 8 минут 43 секунды
А второй нашел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2009, 18:03     Интересные задачи для новичков.
Еще ссылки по теме:

C++ Задачи для новичков
Посоветуйте книгу по С++ для новичков. C++
Итераторы для новичков C++
C++ Разъяснение алгоритмов задачи о рюкзаке для новичков
C++ Тесты с++ для новичков

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

Или воспользуйтесь поиском по форуму:
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
22.04.2009, 18:03     Интересные задачи для новичков. #20
Ну если вместо пробела можно символ поставить,тогда три способа нашел
Yandex
Объявления
22.04.2009, 18:03     Интересные задачи для новичков.
Ответ Создать тему
Опции темы

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