Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/2010: Рейтинг темы: голосов - 2010, средняя оценка - 4.88
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,556
1

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

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

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

Список задач, решение которых присутствует в данной теме:
43
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2010, 05:53
Ответы с готовыми решениями:

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

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

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

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

1272
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,556
23.07.2010, 04:59  [ТС] 181
MikeSoft, Спасибо! Продолжим?
0
Эксперт С++
3936 / 1801 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
23.07.2010, 05:08 182
Lavroff, небольшая, на указатели:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//---------------------------------------------------------------------------
#include <iostream>
using namespace std;
//---------------------------------------------------------------------------
int main()
{
  int *pTest;
  *pTest = 5;
 
  cout << "Value is: " << *pTest << endl;
 
  system("pause");
  return 0;
}
//---------------------------------------------------------------------------
Будет ли работать? Если да, то правильно ли? Если нет - то почему? Присутствуют ли ошибки?
0
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,556
23.07.2010, 05:12  [ТС] 183
Мм.. Память же под указатель не выделена. Не должна бы.

А вот так корректно вроде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
//---------------------------------------------------------------------------
int main()
{
  int *pTest=new int;
  *pTest = 5;
 
  cout << "Value is: " << *pTest << endl;
 
  system("pause");
  return 0;
}
//----------------------------------------------------------------------------------------------------------------------
0
Эксперт С++
3936 / 1801 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
23.07.2010, 05:14 184
Цитата Сообщение от Lavroff Посмотреть сообщение
Память же под указатель не выделена.
Правильно. Объект не инициализирован. Память не выделена.
Но указатель, тем не менее, указывает на случайную ячейку в памяти.
Поэтому, программа будет работать! Но её последствия - непредсказуемы.
1
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,556
23.07.2010, 05:17  [ТС] 185
MikeSoft, Ну да. В ВС она запускается, но тут же выдается debug ошибка, что использована неинициализированная переменная. А вот так:
int *pTest=0;
ошибку выводит только когда прогоняешь пошагово.

Еще будут?)
0
MikeSoft
23.07.2010, 05:23
  #186

Не по теме:

Lavroff, :) наверное хватит на сегодня ... у меня уже светать начинает, нужно поспать.

0
ForEveR
23.07.2010, 05:25  [ТС]
  #187

Не по теме:

MikeSoft, Спокойной ночи) У меня тоже светает потихоньку... Часиков в 6-7 надо будет уйти. Спасибо за задачи! Было очень интересно!

0
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
23.07.2010, 08:28 188
Цитата Сообщение от MikeSoft Посмотреть сообщение
Перед "www" начинается область комментария, то есть дальнейшая область не учитывается.
А вот "http:" рассматривается как обычная метка.
супер!
а когда знаешь, как просто!
про коментарии догадался сразу, а потом думал пол-часа, "чо за http: ???..."

Добавлено через 6 минут

Не по теме:

а я не верил что кодеры "просиживают" ночи за компом... :D :D :D

0
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
23.07.2010, 10:33 189
MikeSoft

Не корректность программы в том, что после того как память освобождается
C++
1
delete pTestObject;
в программе остается ссылка rTestObject на не существующий обьект, а ссылка всегда длжна являться псевдонимом реального обьекта, если в программе существует ссылка на нулевой обьект то мина замедленного действия уже ожидает своего часа...
1
1992 / 1592 / 488
Регистрация: 31.05.2009
Сообщений: 2,980
23.07.2010, 10:39 190
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdio>
 
struct A
{
    A(int a) { puts("A(int)"); }
    A(int a, int b) { puts("A(int, int)"); }
};
 
struct B
{
    B(A a){}
};
 
int main()
{
    int m = 0;
    int n = 0;
 
    B b1( A(m) );
    B b2( A(m, n) );
    return 0;
}
Что быдет выведено на экран при запуске данной программы и почему?
1
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
23.07.2010, 12:26 191
Что выводит, я посмотрел, но почему так??? Я уже не знаю что думать

Добавлено через 32 минуты
Ничего не понимаю, если сделать так:
C++
1
B b1(A((int)m));
то работает, как и предполагается
0
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,556
23.07.2010, 16:38  [ТС] 192
Быть может вызов B2(int int) перекрывает вызов B1 (int) и поэтому выводится
A(int a, int b) { puts("A(int, int)");
?

Вот что по вызову для b1 говорит :

1>c:\documents and settings\admin\мои документы\visual studio 2005\projects\перенос на ноут\ent\ent.cpp(20) : warning C4930: 'B b1(A)': prototyped function not called (was a variable definition intended?)

Вот эту строку: B b1( A(m) );
компилятор просто проходит мимо. Мол нет такой функции, с таким прототипом

А вот так работает:
кто нить объяснит почему так?

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
#include <cstdio>
#include <cstdlib>
 
struct A
{
    A(int a) { puts("A(int)"); }
    A(int a, int b) { puts("A(int, int)"); }
};
 
struct B
{
    B(A a){}
};
 
int main()
{
    int m = 0;
    int n = 0;
 
    B b1( A(0) );
    B b2( A(m, n) );
    system("pause");
    return 0;
}
0
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
23.07.2010, 17:36 193
Цитата Сообщение от Lavroff Посмотреть сообщение
А вот так работает: ...
Я тоже так пробовал, и еще всяко разно. Эксперементальным путем пришел к выводу, что объект b1 даже не создается, по всей видимости это влияние каких-то темных сил)) Если кто-нибудь объяснит причину, буду очень признаетлен!
0
1992 / 1592 / 488
Регистрация: 31.05.2009
Сообщений: 2,980
24.07.2010, 01:22 194
Цитата Сообщение от Kastaneda Посмотреть сообщение
Ничего не понимаю, если сделать так:
C++
1
B b1(A((int)m));
то работает, как и предполагается
На самом деле приведение типа делать не нужно, достаточно использовать скобки
C++
1
B b1( (A(m)) );
В противном случае запись
C++
1
B b1( A(m) );
будет рассматриваться, как прототип функции b1, которая возвращает объект типа B и принимает в качестве параметра переменную m типа A

Добавлено через 22 минуты
Кстати, если не ошибаюсь, в новом стандарте эта проблема решена.
5
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
24.07.2010, 07:28 195
rangerx, а почему тогда так работает?
C++
1
B b1( A(0) );
почему компилятор понимает, что это вызов конструктора, а не переменная 0 типа А ?
0
1992 / 1592 / 488
Регистрация: 31.05.2009
Сообщений: 2,980
24.07.2010, 17:31 196
Цитата Сообщение от Kastaneda Посмотреть сообщение
почему компилятор понимает, что это вызов конструктора, а не переменная 0 типа А ?
Потому что имя переменной не может начинаться с цифры?
0
buugman
24.07.2010, 19:44
  #197

Не по теме:

Давным давно нашел книгу в нете называется "Этюды для программиста" автор Ч. Уэзерелл книжка старая и там есть очень интересные задачи, над которыми порой и не один денек посидеть надо будет.

2
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,556
25.07.2010, 15:29  [ТС] 198
buugman, Сами делали оттуда задачи? Они там кстати действительно довольно мощные

Добавлено через 12 часов 35 минут
Что-т тема опять мрет потихоньку.
0
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
25.07.2010, 15:33 199
Цитата Сообщение от buugman Посмотреть сообщение
Не по теме:
Давным давно нашел книгу в нете называется "Этюды для программиста" автор Ч. Уэзерелл книжка старая и там есть очень интересные задачи, над которыми порой и не один денек посидеть надо будет.
будь добр, скинь в лс линк
0
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,556
25.07.2010, 15:37  [ТС] 200
nikkka, Заходишь в инет пишешь этюды для программистов, скачиваешь. Первая программа там как раз задание про "Жизнь". Книга в формате djvu
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2010, 15:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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