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

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

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

Подскажите,пожалуйсто,где можно найти список интересных или олимпиадных(школьных) задач.
Заранее благодарен.
http://www.cyberforum.ru/cpp-beginners/thread980546.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2009, 21:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Интересные задачи для новичков. (C++):

Разъяснение алгоритмов задачи о рюкзаке для новичков
Есть несколько алгоритмов решения задачи о рюкзаке. Не могли бы вы написать...

Подскажите пожалуйста хорошую литературу для изучения с++, для новичков
Чтобы подошла человеку , который не сталкивался с программированием , а вот...

Вопросы для новичков
Я новичок. Ребята, помогите пожалуйста! Хочу заняться програмированием на C....

Тесты с++ для новичков
Добрый день!Ситуация в следующем,учусь заочно и не на програмиста, дали...

Массив для новичков
прошу объяснить и помочь с решением задачи 1) дан массив А(50).найти сумму и...

43
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 1
21.04.2009, 21:24 #2
Чем тебе этот раздел не список задач.(Валом)
0
rrrFer
Заблокирован
21.04.2009, 21:36 #3
для школьников, например, найти сумму ряда 1/(x*x) , x=1..100000000 точность до 14 цифр в дробной части. ответ 1.64472532272339 недостаточно точный, более точен 1.6449.. остальные цифры не пишу
0
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 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". (кто знает не спешите отвечать)
3
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
21.04.2009, 22:05 #5
> Постановка задачи: убрать с кода знаки "=". (Желательно, что бы оно ещё потом компилилось ).

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

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

Задача. Написать программу, которая будучи скомпилированной компилятором Си выдаст один результат (например, напечатает "Это Си"), а будучи скомпилированная компилятором Си++ выдаст другой результат (например, напечатает "Это Си++"). Условной компиляцией пользоваться нельзя. Т.е. тест на знание различного поведения одних и тех же конструкций на Си и Си++
0
Humanitis
175 / 167 / 27
Регистрация: 12.01.2009
Сообщений: 430
21.04.2009, 22:06 #6
http://www.cyberforum.ru/cpp/thread30970.html
автор этой темы постоянно где-то вытаскивает подобные задачи
1
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 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;
}
код нужно модифицировать так чтобы в нем не было знака "=", но результат остался не изменим.)
0
Monte-Cristo
2794 / 1380 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
21.04.2009, 22:33 #8
ISergey, мне 3 понравилась) 1 и 2, на мой взгляд, не представляют никакой сложности.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
21.04.2009, 22:36 #9
Цитата Сообщение от ISergey Посмотреть сообщение
код нужно модифицировать так чтобы в нем не было знака "=", но результат остался не изменим.)
Наверное я тупею, но всё равно не понял... Подозреваю, что "cout << 1 << endl;" - ответ неправильный, но не пойму, чем он противоречит условию
0
Monte-Cristo
2794 / 1380 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
21.04.2009, 22:41 #10
Evg, тем что, тебе не надо изменять код..а лишь модифицировать.. a,b,c должны остатся.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
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" опять-таки это не правильное решение, только вот объясните почему? Я просто пытаюсь в условие вникнуть
0
Monte-Cristo
2794 / 1380 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
21.04.2009, 23:11 #12
Цитата Сообщение от Evg Посмотреть сообщение
Тогда я наверное не понимаю слова "модифицировать". Замена "c=a+b" на "c=1" опять-таки это не правильное решение, только вот объясните почему? Я просто пытаюсь в условие вникнуть
нет, у тебя должны остатся эти переменные... но не должно быть знака равно...

p.s: скажу лишь, что я знаю два разных решения.
0
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 1
21.04.2009, 23:51 #13
Evg, Забыл сказать в Си такого не сделать(только С++)
PS я по поводу 1 задачи.
0
Monte-Cristo
2794 / 1380 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
22.04.2009, 00:08 #14
ISergey, ну не скажите... один из вариантов, ну это не тот, который вы подразумевали, компилируется и в си. я его потом придумал) ну он может не совсем тот)
0
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 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;
}
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
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 звёздочка была
2
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 1
22.04.2009, 17:23 #17
А здесь for(i = 0 ; i < N ; i--) точно i--
0
EnzoMatrix
120 / 120 / 14
Регистрация: 14.03.2009
Сообщений: 462
22.04.2009, 17:31 #18
Цитата Сообщение от ISergey Посмотреть сообщение
А здесь for(i = 0 ; i < N ; i--) точно i--
по идее правильно все должно быть
трех способов не нашел, но один знаю
1
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 1
22.04.2009, 17:43 #19
CartmanRules, Ух ты быстрый.(О уже удалил)

Добавлено через 8 минут 43 секунды
А второй нашел
0
Humanitis
175 / 167 / 27
Регистрация: 12.01.2009
Сообщений: 430
22.04.2009, 18:03 #20
Ну если вместо пробела можно символ поставить,тогда три способа нашел
0
22.04.2009, 18:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2009, 18:03
Привет! Вот еще темы с решениями:

программку не для новичков
Обучаюсь на первом курсе. Пытался решить но безуспешно. :wall:Мне бы образец...

IDE для новичков
Никак не могу найти себе подходящее IDE, особенно после простейшего Pascal ABC,...

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

Итераторы для новичков
Я только начинаю изучать язык c++ по книге &quot;Язык программирования С++. Базовый...


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

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

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