Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 165, средняя оценка - 4.83
Доктор ТуамОсес
Заблокирован
#1

Список вопросов по C++ для желающих проверить свои знания C++ - C++

08.12.2010, 23:29. Просмотров 21472. Ответов 328
Метки нет (Все метки)

Я пишу книгу "Сборник тестовых вопросов и задач на знание C++ и умение его применять для решения конкретных задач.".
Предлагаю Вашему вниманию её текущую версию (бильд).
12
Вложения
Тип файла: rar FAQ C++ (Build6)20101208231403.rar (31.2 Кб, 654 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2010, 23:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Список вопросов по C++ для желающих проверить свои знания C++ (C++):

Контрольная работа(( проверь свои знания):D - C++
помогите пожалуйста сделать контрольную работу, мне нада сделать её хорошо или незачёт((( очень прошу... я в классах ниочём( ...

Как подтверждать свои знания при устройстве на работу? - C++
Добрый день! Вопрос к тем кто уже работает программистами или кем-то другим. Как вы подтверждали свои знания С++ при устройстве на...

Реальная задача для реального проекта для желающих покодить - C++
Привет:) Попросили сделать парсер сайта по-дружески, но у меня реально времени на него нет. Если кому-то интересно, могу двигать в...

Список вопросов по Borland C - C++
Помогите решить,скоро перездача,а я только начал готовиться......Все вопросы-в фото...

Где можно протестировать свои знания JS для резюме? - JavaScript
подскажите сайт где можно оценить свои знания в js, чтобы смело можно было добавить его в свое резюме.

Испытай свои знания - QBasic
По информатике задали задание на массивы. Я ваще в них не вдупляю Вот они: Задачи для дополнительных занятий 27. Линейная таблица...

328
grizlik78
Эксперт С++
1957 / 1450 / 116
Регистрация: 29.05.2011
Сообщений: 3,012
19.08.2011, 23:57 #31
Цитата Сообщение от Доктор ТуамОсес Посмотреть сообщение
Так или иначе, но я лично видел людей, которые пренебрегали такой вот несущественной "ерундой"
Но при этом вопрос о представлении чисел никак не связан с языком C++, так как стандарт оставляет вопросы машинного представления чисел с плавающей точкой (как и других, впрочем) на усмотрение реализации. Тогда уж конкретный формат указывать надо, например IEEE 754. Но, в общем-то, при чём здесь C++?
2
ISergey
Maniac
Эксперт С++
1375 / 886 / 52
Регистрация: 02.01.2009
Сообщений: 2,661
Записей в блоге: 1
20.08.2011, 00:32 #32
4.1.1.1.14 [#Почему в нижеприведённой программе не подавляется печать варнинга C4700? А как его можно подавить? #]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main ()
{
 
int         int_A , int_B ;
 
#pragma warning ( disable: 4700 )  // warning C4700 должен быть подавлен
int_A = int_B ;                          // warning C4700: local variable 'int_B'
 
// used without having been initialized
 
cout << "main running " << endl ;
 
return 0 ;
}
!*
Подавить можно переместив строку "#pragma warning ( disable: 4700 )" перед
скобкой '{' тела функции main
Это особенность конкретного компилятора.

4.1.1.1.39 [#Зачем в определении My_Type p = new My_Type нужно два раза писать "My_Type"? #]
!*
Потому что если My_Type класс, входящий в иерархию классов, то где-нибудь в другом месте программы p может указывать не на объект класса My_Type, а на объект класса-потомка
*!
My_Type *p = new My_Type // Не хватает *
Оператору new нужно просто знать сколько памяти выделить.
И..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
struct X {
    X(const int & _x, const int & _y): x(_x), y(_y){}
    int x; 
    int y;
};
 
int main()
{
    int *p = (int*) new X(10, 15);
    X *p2 = (X*)p;
 
    std::cout << p2->x << " " << p2->y << std::endl;
 
    delete p;
 
    return 0;
}
0
grizlik78
Эксперт С++
1957 / 1450 / 116
Регистрация: 29.05.2011
Сообщений: 3,012
20.08.2011, 00:51 #33
Цитата Сообщение от ISergey Посмотреть сообщение
C++
1
2
3
int *p = (int*) new X(10, 15);
// ...
delete p;
Тогда уж
C++
1
delete (X*)p;
или
C++
1
delete p2;
Игры с указателями до добра не доводят
0
ISergey
Maniac
Эксперт С++
1375 / 886 / 52
Регистрация: 02.01.2009
Сообщений: 2,661
Записей в блоге: 1
20.08.2011, 01:03 #34
grizlik78, В данном случаи мало важно, а вобще ты прав, нужно для вызова нормального деструктора =)
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
20.08.2011, 01:16 #35
Цитата Сообщение от grizlik78 Посмотреть сообщение
Тогда уж
C++
1
delete (X*)p;
или
C++
1
delete p2;
Игры с указателями до добра не доводят
это кстати правда судя по спеке
1 The delete-expression operator destroys a most derived object (1.8) or array created by a new-expression.
delete-expression:
::opt delete cast-expression
::opt delete [ ] cast-expression
The first alternative is for non-array objects, and the second is for arrays. The operand shall have a pointer
type
, or a class type having a single conversion function (12.3.2) to a pointer type. The result has type
void.
тут ок - указатель
2 If the operand has a class type, the operand is converted to a pointer type by calling the above-mentioned
conversion function, and the converted operand is used in place of the original operand for the remainder of
this section. In either alternative, if the value of the operand of delete is the null pointer the operation
has no effect. In the first alternative (delete object), the value of the operand of delete shall be a pointer
to a non-array object or a pointer to a sub-object (1.8) representing a base class of such an object (clause
10). If not, the behavior is undefined.
первая часть про использование операторов приведения для классов (что кстати для смарт поинтеров работает)
вторая про то, каким должен быть указатель -> behavior is undefined
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
20.08.2011, 08:58 #36
Цитата Сообщение от Доктор ТуамОсес Посмотреть сообщение
а потом они долго удивлялись
Если проблема не решается использованием epsilon при сравнениях, то это ошибка проектирования и нужно было использовать числа с фиксированной точкой.

Цитата Сообщение от Доктор ТуамОсес Посмотреть сообщение
которые пренебрегали
Я не говорил, что погрешностью нужно пренебречь. Но считая погрешность представления... Тогда нужно для каждой мат операции проверять погрешность. Ведь записал ты а и б без погрешности (проверив это на листочке), но а+б сохраняетс с погрешностью и ты этого не учёл и программа сосчитала не правильно, а ты этого не предполагал, ну и т.д. Не майся дурью в общем. И не сравнивай на "равно" и будет мир и счастье и красивая радуга.

Добавлено через 8 минут
Цитата Сообщение от ISergey Посмотреть сообщение
4.1.1.1.39 [#Зачем в определении My_Type p = new My_Type нужно два раза писать "My_Type"? #]
!*
Потому что если My_Type класс, входящий в иерархию классов, то где-нибудь в другом месте программы p может указывать не на объект класса My_Type, а на объект класса-потомка
*!
Потому что первое (с ошибкой) объявляет указатель на объект типа My_Type, а второе создаёт в пуле объект типа My_Type. Это два, совершенно не зависимых My_Type. И не нужно никаких контекстно-зависимых рассуждений о каких-то других местах программы, где бабка может быть дедкой.
0
Доктор ТуамОсес
Заблокирован
21.08.2011, 18:09  [ТС] #37
Блин. Не все ответы удалил в бильде.
"Поспешишь людей насмешишь"
0
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
21.08.2011, 19:56 #38
Было бы всё это в удобной программе ну или chm справочнике
а так за идею +
0
Доктор ТуамОсес
Заблокирован
21.08.2011, 21:25  [ТС] #39
Цитата Сообщение от TBIKC Посмотреть сообщение
Было бы всё это в удобной программе ну или chm справочнике
а так за идею +
Ну это, так сказать, мой стартап в написании книг по программированию.
Поэтому не судите слишком строго
Со временем я конечно "заматерею" в этом деле.
И "перелезу" на что-нибудь более серьёзное.
Но это в будущем.
0
Доктор ТуамОсес
Заблокирован
23.08.2011, 15:29  [ТС] #40
Deviaphan
[читаем правила] Вам примерчик
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 15:36 #41
Цитата Сообщение от Доктор ТуамОсес Посмотреть сообщение
Вам примерчик
Пример более показателен с точки зрения использования оптимизации. В MSDN, кстати, очень красиво про это написано. Особенно про strict и fast для вещественных чисел.

Я же не отрицаю проблемы с потерей точности. Наоборот! Если с точностью есть проблемы нужно использовать числа с фиксированной точкой. В большинстве реальных задач величиной отличающейся на 16 порядков (как в примере) можно принебреч.
Тем более, что этот пример показывает бессмысленность ручной проверки двоичного представления вещественных чисел, т.к. что получится в действительности зависит как от архитектуры, компилятора и параметров компиляции. Т.е. в общем случае никто не может сказать, как в действительности будет представлено в памяти число. И всем это безразлично, т.к. погрешность пренебрежимо мала, а ели не мала, то используются числа с фиксированной точкой.
0
Доктор ТуамОсес
Заблокирован
23.08.2011, 16:32  [ТС] #42
Я не говорю, что нужно всем срочно решать эти проблемы. А о том, что что нужно быть хотя бы в курсе, что такого рода проблемы вообще существуют.

А то я сталкивался с тем, что программисты, имеющие по 10 лет опыта, на такого рода задачах, показывают, мягко говоря плачевные результаты.

А всё потому, что тоже считали, что это всё ерунда, что нужно учить более высокоуровневые вещи.

А вот поручили им решить чиста расчётно-математическую задачу и они "сели в лужу".
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 16:36 #43
Цитата Сообщение от Доктор ТуамОсес Посмотреть сообщение
А всё потому, что тоже считали, что это всё ерунда, что нужно учить более высокоуровневые вещи.
Безусловно, это нужно знать. Но! Проверять двоичное представление в программе... Для практических целей достаточно знать того, что лучше не смешивать в вычислениях вещественные числа сильно различающегося порядка (а это известно ещё на этапе проектирования) и в случае возникновения такой необходимости принимать меры.
0
Доктор ТуамОсес
Заблокирован
24.08.2011, 00:13  [ТС] #44
Цитата Сообщение от Deviaphan Посмотреть сообщение
Для практических целей достаточно знать того, что лучше не смешивать в вычислениях вещественные числа сильно различающегося порядка
2.75 и 2.30 - "числа сильно различающегося порядка"®?О_о
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
24.08.2011, 00:30 #45
Цитата Сообщение от Доктор ТуамОсес Посмотреть сообщение
2.75 и 2.30 - "числа сильно различающегося порядка"®?О_о
если вы в вычислениях используете 2.75 и 2.30 - то нестрашно, а если 2.75 и 1e-16 - то уже можно думать
очевидно же
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2011, 00:30
Привет! Вот еще темы с ответами:

Все дружно проверяем свои знания!!!:-) - Delphi
1. (60c.) Какое из имен используется для задания текста процедур, функций, методов? (один ответ) 1) LABEL 2) INTERFACE 3)...

Написание тетриса на winapi поможет сильно улучшить свои умения/знания? - C++ WinAPI
Где-то читал, что написать тетрис на winapi поможет сильно улучшить свои умения/знания Так ли это?

Посоветуйте оpen source проект, чтобы была возможность реализовать свои знания на практике - C#
Здравствуйте, прочитал книжку Г. Шилтда, хочется реализовать свои знания на практике. Сам придумать ничего не могу, думаю вступить в...

Список студентов, желающих слушать дисциплину X - MS Access
помогите пожалуйста написать программу в Access, которая печатает список студентов, желающих послушать дисциплину Х. Если число желающих...


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

Или воспользуйтесь поиском по форуму:
45
Yandex
Объявления
24.08.2011, 00:30
Закрытая тема Создать тему
Опции темы

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