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

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

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

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

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

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

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

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

1272
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.07.2010, 14:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от лендер Посмотреть сообщение
Сообщение от MikeSoft
Lavroff, вот вам ещё задачка ... здесь больше на логику.
Даны две переменных:
Код C++1
2 int a = 10;
int b = 25;
Не используя третью переменную добиться результата:
Код C++1
2 a = 25;
b = 10;
То есть, поменять значения местами.
У задачи существует как минимум три решения (может и больше, но мне в голову пришли три)
Т.к. 10 и 25 помещаются в 1 байт, то можно так:
C++
1
2
3
4
5
6
a<<8
a+=b;
b=a;
b&=0xFF00;
b>>8;
a&0xFF
правда код конечно длинее, нозача ж на логику)
2
18.07.2010, 15:08
Лучший ответ Сообщение было отмечено как решение

Решение

Не по теме:

Цитата Сообщение от MikeSoft Посмотреть сообщение
Даны две переменных:
C++
1
2
int a = 10;
int b = 25;
Не используя третью переменную добиться результата:
C++
1
2
a = 25;
b = 10;
C++
1
std::swap(a, b);
И хрен поспоришь:D

6
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.07.2010, 15:24
лендер, именно так!
CyBOSSeR, да, с этим трудно поспорить ...

Kastaneda, идея со сдвигом интересная, но в коде у вас небольшой недочёт при сдвиге. Работать будет так:

C++
1
2
3
4
5
6
a <<= 8;
a += b;
b = a;
b &= 0xFF00;
b >>= 8;
a &= 0xFF;
2
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2010, 16:20
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main(){
  int a=10, b=25;
  a+=b;
  b=a-b;
  a-=b;
  std::cout << a << " " << b;
  return 0;
}
например
1
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.07.2010, 16:22
MikeSoft, да, точно, наверно от жары мозги плавиться начали))

Пол дня сижу на задачей про шахматы, не могу найти ошибку
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
18.07.2010, 16:23
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main(){
* int a=10, b=25;
* a+=b;
* b=a-b;
* a-=b;
* std::cout << a << " " << b;
* return 0;
}
например
неа, такой вариант уже был
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2010, 16:24
Цитата Сообщение от nikkka Посмотреть сообщение
неа, такой вариант уже был
аа, дак оно не самое правильное?
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
18.07.2010, 16:26

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
MikeSoft, да, точно, наверно от жары мозги плавиться начали))
Пол дня сижу на задачей про шахматы, не могу найти ошибку
выложите, вместе подумаем :) :) :)



Добавлено через 1 минуту
alex_x_x, оно то правельное, просто такой вариант уже был...

Не по теме:

в суме "накопилось" 5 решений.
5, кто больше? :)

0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.07.2010, 16:30
Цитата Сообщение от alex_x_x Посмотреть сообщение
аа, дак оно не самое правильное?
Правильно, конечно

Просто nikkka вёл к тому, что вариант уже был и интересно посмотреть, как можно ещё решить эту задачу.
Пару решений есть в этом посте: Задача для тренировки и лучшего понимания
0
18.07.2010, 16:32

Не по теме:

Цитата Сообщение от MikeSoft Посмотреть сообщение
Просто nikkka вёл к тому, что вариант уже был и интересно посмотреть, как можно ещё решить эту задачу.
точниссимо :)

0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.07.2010, 16:46
а я ее решил
Задача про шахматы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>    
using namespace std;
class Chess{
    int chessboard[9][9];
    public:
        Chess(){
             for(int i=0;i<9;i++)
                for(int j=0;j<9;j++)
                chessboard[i][j]=0;}
    void stephorse(int,int);
    bool correct (int,int);
    void somechessman(int,int);
    string operator^(Chess);
};
void Chess::stephorse (int a,int b){
     if(correct((a-2),(b+1)))
        chessboard[a-2][b+1]=1;
     if(correct((a-2),(b-1)))
        chessboard[a-2][b-1]=1;
     if (correct((a+2),(b-1)))
        chessboard[a+2][b-1]=1;
     if(correct((a+2),(b+1)))
        chessboard[a+2][b+1]=1;   
     if(correct((a+1),(b-2)))
        chessboard[a+1][b-2]=1;
     if(correct((a-1),(b-2)))
        chessboard[a-1][b-2]=1;
     if(correct((a-1),(b+2)))
        chessboard[a-1][b+2]=1;
     if(correct((a+1),(b+2)))
        chessboard[a+1][b+2]=1;         
     } 
bool Chess::correct(int a,int b){
    return (a>=1)&&(a<=8)&&(b>=1)&&(b<=8) ? true : false;
} 
void Chess::somechessman(int a,int b){
    chessboard[a][b]=1;
} 
string convert(int a,int b){
    string S;
    string mas[]={"0","A","B","C","D","E","F","G","H"};
    string ms[]={"0","1","2","3","4","5","6","7","8"};
    S=mas[a]+ms[b]+"\n";
    return S;
}   
string Chess::operator^(Chess b){
    string S;
    for(int i=0;i<9;i++)
       for(int j=0;j<9;j++)
           if((chessboard[i][j]==1)&&(b.chessboard[i][j]==0))
             S+=convert(i,j);      
     return S;
 } 
int deconvert(char a){
    char mas[]={'A','B','C','D','E','F','G','H'};
    for (int i=0;i<8;i++)
       if(mas[i]==toupper(a))
       return (i+1);
   }                              
int main (){  
   Chess white;
   Chess black;
   black.somechessman(deconvert('b'),7); //обозначаем черного коня на поле
   black.somechessman(deconvert('b'),3); //обозначаем пешку на поле
   black.somechessman(deconvert('e'),2); //обозначаем белого короля на поле
   black.somechessman(deconvert('h'),7); //обозначаем черного короля на поле
   white.stephorse(deconvert('c'),4); //просчитываем ходы белого коня
   black.stephorse(deconvert('b'),7); //просчитываем ходы черного коня
   cout<<"White horse can go to :"<<endl<<(white^black)<<endl;
system("pause");
return 0;    
}
Выводит:
White horse can go to :
A3
B2
B6
D2
E3
E5
Добавлено через 2 минуты
Вопрос к людям более опытным, почему вот в этом участке:
C++
1
2
3
4
5
6
7
class Chess{
    int chessboard[9][9];
    public:
        Chess(){
             for(int i=0;i<9;i++)
                for(int j=0;j<9;j++)
                chessboard[i][j]=0;}
Не получается сделать просто
C++
1
int chessboard[9][9]={0};
Компилятор на такое ругался.
2
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
18.07.2010, 16:51
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не получается сделать просто
Код C++
1
int chessboard[9][9]={0};
Компилятор на такое ругался.
нельзя писать chessboard[9][9]. не забывайте, отсчёт ведётся с нуля, по этому максимальный индекс 9-элементного массива 8.
поправьте, плиз если что :S
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.07.2010, 16:56
Цитата Сообщение от nikkka Посмотреть сообщение
нельзя писать chessboard[9][9]. не забывайте, отсчёт ведётся с нуля, по этому максимальный индекс 9-элементного массива 8.
поправьте, плиз если что :S
))Да это я знаю, я не про то. Почему не получается инициализировать массив нулями, а приходится делать это через цикл?
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
18.07.2010, 16:59
Цитата Сообщение от Kastaneda Посмотреть сообщение
))Да это я знаю, я не про то. Почему не получается инициализировать массив нулями, а приходится делать это через цикл?
а это вообще возможно??... : O
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.07.2010, 17:03
Вне класса это можно сделать именно так:
C++
1
int chessboard[9][9]={0};
А вот в классе почему так не получатся
0
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
18.07.2010, 17:07
Kastaneda,наверно это надо делать в конструкторе без аргументов, например.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.07.2010, 17:10
Цитата Сообщение от besstiaa Посмотреть сообщение
Kastaneda,наверно это надо делать в конструкторе без аргументов, например.
А можно код? А то что-то мне кроме цикла ни чего в голову не лезет.
0
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
18.07.2010, 17:17
Kastaneda,просто предположение. Попробовать не на чем, так с массивом ранее не приходилось сталкиваться.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 17:22
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
int chessboard[9][9]={0};
Здесь ты проинициализировал нулем только нулевой элемент матрицы, остальные были проинициализированы значением по умолчанию, к счастью, тоже нулем.
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
2
3
for(int i=0;i<9;i++) 
  for(int j=0;j<9;j++) 
    chessboard[i][j]=0;}
Здесь нет инициализации - просто заполнение нулями.
Инициализация:
C++
1
2
3
4
5
int matrix[3][3] = {
  { 0, 0, 0 },
  { 0, 0, 0 },
  { 0, 0, 0 }
};
Цитата Сообщение от besstiaa Посмотреть сообщение
Kastaneda,наверно это надо делать в конструкторе без аргументов, например.
К сожалению, в C++ пока нет средств для инициализации массивов полей класса.
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2010, 17:25
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
К сожалению, в C++ пока нет никаких средст для инициализации массивов полей класса.
однако как я понимаю при описании
int chessboard[9][9];
при конструировании объекта вызовется конструктор по умолчанию, что в данном случае означает заполнение нулями
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2010, 17:25
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
120
Закрытая тема Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru