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

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

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

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

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

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

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

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

1272
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:03
Лучший ответ Сообщение было отмечено как решение

Решение

Студворк — интернет-сервис помощи студентам
Lavroff, Быстро вы сдались ...

Ну так и быть, попробую обьяснить.
Самый лучший способ понять результат - это последовательно, строчка за строчкой прокрутить её у себя в голове.

Итак, поехали...

Первое и второе действия - тривиальны.
C++
1
2
char buf1[100] = "Hello";
char buf2[100] = "World";
Объявлен массив типа char размерностью в 100 единиц.
Массивы инициализированы текстом.

Третие действие:
C++
1
char *ptr1 = buf1+2;
Обьявляем указатель ptr1, который будет указывать на адрес buf1 со смещением в две единицы.
Для наглядности убираем из buf1 два символа и видим, что ptr1 указывает на первую букву "l" в слове "Hello".

Четвёртое действие аналогично третьему:
C++
1
char *ptr2 = buf2+3;
Вычёркиваем из buf2 первые три символа и видим, что указатель ptr2 будет указывать на букву "l" в слове "World".

Пятое действие:
C++
1
strcpy(ptr1, buf2);
Функция strcpy выполняет копирование. Разберёмся что и куда копировать...
Копировать в ptr1 (который указывает на первую букву "l" в слове "Hello") из buf2 (buf2 мы не трогали, потому там есть слово "World").
Следовательно, в ptr1 у нас будет просто слово "World".
Вот здесь не нужно забывать, что ptr1 всего лишь указывает на адрес buf1 со смещением в две единицы.
Именно поэтому buf1 теперь содержит результат: "HeWorld".
Указатель ptr1, в свою очередь будет указывать на "World" (которое мы только что скопировали из buf2)

Шестое действие:
C++
1
strcpy(ptr2, buf1);
Аналогичное действие.
Указатель ptr2 указывает на букву "l" в слове "World".
В предыдущем действии мы выяснили, что в buf1 хранится "HeWorld".
После выполнения данной операции buf2 будет содержать "WorHeWorld"
А указетель ptr2 так и будет указывать на начало текста "HeWorld".

Седьмое действие:
C++
1
cout << ptr1 << endl << ptr2 << endl;
Тривиальный вывод на экран.
Указатель ptr1 указывает на "World".
А Указатель ptr2 указывает на "HeWorld"

Их и выводим на экран.
25
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.07.2010, 19:11  [ТС]
MikeSoft, Ну да. Значит в итоге я понял примерно правильно. Спасибо!
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 19:15
Цитата Сообщение от nikkka Посмотреть сообщение
а разве есть разница? :-S
главное ведь подключить их правельно.
да?
nikkka, ответ в посте #15. И еще - в программировании не бывает мелочей.
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:29
Lavroff, вот вам ещё задачка ... здесь больше на логику.
Даны две переменных:
C++
1
2
int a = 10;
int b = 25;
Не используя третью переменную добиться результата:
C++
1
2
a = 25;
b = 10;
То есть, поменять значения местами.
У задачи существует как минимум три решения (может и больше, но мне в голову пришли три)
2
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.07.2010, 19:30  [ТС]
MikeSoft, Я читал это не так давно в какой-то теме. Задачки из Кнута кидаете?)

...
Ради шутки.

int a=10+15;
int b=25-10;
0
16.07.2010, 19:31

Не по теме:

а нельзя прописать в коде a=25; b=10;
не нужны 3тие переменные, и даже нач. значения)))

0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:32
Lavroff, Нет. Эта задачка когда-то была у меня на олимпиаде ... А предыдущую год назад прислал знакомый.

Цитата Сообщение от nikkka Посмотреть сообщение
а нельзя прописать в коде a=25; b=10;
Конечно нельзя Это ж жульничество.
Переменные может вводить пользователь.
Подумайте в сторону математических действий.
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 19:33
a=a+b;
b=a-b;
a=a-b;
так?
2
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.07.2010, 19:33  [ТС]
MikeSoft, Окей. Ща подумаю над решением. На логику или все же на знание синтаксиса языка?
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 19:34
Цитата Сообщение от Lavroff Посмотреть сообщение
MikeSoft, Окей. Ща подумаю над решением. На логику или все же на знание синтаксиса языка?
неа, чисто логика.
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:35
Лучший ответ Сообщение было отмечено как решение

Решение

nikkka, да, именно так ...
Одно решение есть ... Ну а на остальные выйти уже несложно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// первый вариант
a += b;
b = a-b;
a -= b;
 
// второй вариант
a *= b;
b = a/b;
a /= b;
 
// третий вариант
a ^= b;
b = a^b;
a ^= b;
6
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 19:37
MikeSoft, а ну да))
вместо + и - везде * и /, да?

Не по теме:

ещё, ещё!...
больше бы таких задач.
: )

0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:43
nikkka, вот вам ещё одна задачка ... опять же, задачка на честность!
Не открывая IDE, попробуйте найти решение:
C++
1
2
3
4
5
6
int x = 1;
while(++x < 10) {
  if(!(x % 2)) continue;
  if(!(x % 2)) break;
}
cout << x << endl;
Будет ли она работать?
Eсли да, то чему равен х и сколько раз выполнится цикл?
Решение прокомментируйте.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.07.2010, 19:52  [ТС]
Such?
MikeSoft, Работать будет...
Второе условие цикла не выполнится никогда.
Цикл выполнится 4 раза видимо. Всмысле пройдет полностью.
x=10.


Изменено
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:53
Lavroff, нет, ответ неправильный.
И не забывайте указывать, сколько раз выполнится цикл.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
16.07.2010, 19:53
А я думаю x будет равен 10, это префиксная операция.
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:54
neske, прокомментируйте ваше решение
И сколько раз выполнится цикл?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
16.07.2010, 19:55
Цикл выполнится 9 раз.
2
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 19:55
Цитата Сообщение от MikeSoft Посмотреть сообщение
И сколько раз выполнится цикл?
При хорошем оптимизаторе - ни разу.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
16.07.2010, 19:57
После 9 инерции цикла x=9. Далее провряется условие, но т.к. операция префиксная, х становится равный 10. Но т.к. условие не соблюдается, цикл заканчивается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2010, 19:57
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru