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

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

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

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

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

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

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

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

1272
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 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
3957 / 1812 / 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
3957 / 1812 / 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
3957 / 1812 / 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
3957 / 1812 / 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
3957 / 1812 / 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
3957 / 1812 / 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
Закрытая тема Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru