Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/421: Рейтинг темы: голосов - 421, средняя оценка - 4.63
zss
Модератор
Эксперт С++
7062 / 6606 / 4180
Регистрация: 18.12.2011
Сообщений: 17,410
Завершенные тесты: 1
#1

Распространенные ошибки

21.09.2014, 17:33. Просмотров 75848. Ответов 63
Метки нет (Все метки)

Оглавление

Ошибки этапа компиляции
Программа не компилируется или компилируется с предупреждениями.
  1. Попытка модифицировать константу через указатель
  2. Неправильное понятие приведения
  3. Лишняя точка с запятой
  4. Отсутствие точки с запятой после определения классового типа
  5. Отсутствие возврата значения из функции
  6. Использование комментариев в #define
  7. Компилятор не находит iostream.h
  8. Внутри switch ошибка Case bypasses initialization of a local variable
  9. Передача двумерных массивов и указателей в функцию
  10. Не удается открыть файл stdafx.h
  11. Ошибка "unresolved external symbol _WinMain@16"
  12. Ошибка "This function or variable may be unsafe"
Ошибки этапа выполнения
Программа прекращает работу с сообщением об ошибке
  1. Выделение памяти без дальнейшего освобождения или неверное освобождение
  2. Возврат ссылки/указателя на локальную переменную
  3. Использование неинциализированной переменной
  4. Выход за пределы массива
  5. Ошибки при использовании функции scanf()
  6. Работа с локальной копией объекта, вместо работы с самим объектом
  7. Интерпретация одиночного char символа как символьной строки
  8. Ошибка преобразования: type ** в const type **
Неправильное поведение программы на этапе исполнения
Программа исполняется, но не так, как хотелось.
  1. Неожиданное закрытие окна
  2. "Неожиданное" целочисленное деление в арифметических выражениях
  3. Ошибки в логических выражениях
  4. Лишняя точка с запятой
  5. switch без break
  6. Сравнение вещественных чисел при вычислениях
  7. Сравнение char массивов
  8. Использование чисел, записанных в других системах счисления
  9. Проверки на принадлежность значения определенному интервалу
  10. Неверный аргумент тригонометрических функций
  11. Сравнение знаковой переменной с беззнаковой
  12. Использование запятой для отделения дробной части
  13. Забытое выделение тела цикла for, while и операторов if else
  14. Определение размера массива, переданного в качестве аргумента функции
  15. Порядок вычисления аргументов при вызове функции
  16. Некорректное использование логических переменных
  17. Вычисленное значение косинуса не совпадает с ожидаемым
  18. Локальная переменная экранирует переменную с таким же именем из вышестоящей области видимости
  19. Неправильное использование memset
Алгоритмические ошибки
Ошибки, допущенные при разработке алгоритма
  1. Двойная перестановка строк или элементов массива
  2. Использование символа цифры вместо числа
Ошибки ввода-вывода
  1. Оставление символа '\n' в потоке ввода
  2. Ошибки при использовании функции scanf()
  3. При работе с fgetc чтение файла обрывается при достижении буквы 'я'
  4. При считывании из файла последний элемент читается дважды
Ошибки, связанные с отклонением от стандарта языка
  1. Неверный тип функции main()

Ошибки проектирования АТД (классов).
  1. Вызов виртуальной функции из конструктора
  2. Отсутствие точки с запятой после определения класса/структуры
  3. Неверный вызов конструктора базового класса из конструктора производного
  4. Неверный порядок при инициализации
  5. Нарушение правила ТРЕХ.
  6. Отсутствие виртуального деструктора в базовом классе
  7. Неправильное обращение к конструктору по умолчанию
  8. Не очевидные моменты с вызовом конструктора базового класса
  9. Неявно объявленный конструктор по умолчанию
  10. Перегрузка оператора >>
Ошибки при использовании STL контейнеров
  1. Невалидные ссылки/указатели, при перемещении объектов
  2. Ошибки связанные с итераторами (кэширование размера контейнера)
  3. Ошибки связанные с итераторами (удаление элементов по итератору в циклах)
  4. Ошибки связанные с итераторами (префикс-постфиксные инкременты при удалении элементов в цикле)
27
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2014, 17:33
Ответы с готовыми решениями:

Вывести самые распространенные мужские и женские имена
Имеется массив записей о студентах, каждая из которых включает поля: фамилия,...

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

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

с2079 и с2228 ошибки при компиляции ниже участок кода, с которым праблема и скрины ошибки
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ bool game = true; // КЛАССЫ class Me; class...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include <iostream> using namespace std; ...

63
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7045 / 3346 / 452
Регистрация: 04.12.2011
Сообщений: 9,304
Записей в блоге: 5
19.03.2016, 10:48 #61
Цитата Сообщение от Croessmah Посмотреть сообщение
если в потоке не будет '\n', то безнадежно испортим поток.
Я же говорю, для примера написал. Если нет '\n' то должно очистить до конца ведь?
Цитата Сообщение от Croessmah Посмотреть сообщение
так что пришлось делать get два раза, чтобы оно работало.
Это древний и вполне звонкий бубен.
0
QuakerRUS
470 / 427 / 204
Регистрация: 30.10.2017
Сообщений: 1,370
Завершенные тесты: 3
05.03.2018, 01:38 #62
zss, не совсем понимаю в чем проблемность этой конструкции? cin игнорирует же символ конца строки. На двух компиляторах у меня проблем не возникает, может я просто чего то недопонимаю.

C++
1
2
3
4
cout << "введите n:";
int n; cin >> n;    // вводится число после нажатия Enter
cout << "введите символ:";
char c; cin >> c;   // хотим ввести символ из новой строки, но вместо него вводится '\n'
0
zss
Модератор
Эксперт С++
7062 / 6606 / 4180
Регистрация: 18.12.2011
Сообщений: 17,410
Завершенные тесты: 1
05.03.2018, 06:54  [ТС] #63
QuakerRUS, а попробуйте
C++
1
2
3
4
cout << "введите n:";
int n; cin >> n;    // вводится число после нажатия Enter
cout << "введите текст:";
char c[100]; cin.getline(c,100); // вводится пустая строка
C++
1
2
3
4
cout << "введите n:";
int n; cin >> n;    // вводится число после нажатия Enter
cout << "введите символ:";
char c; cin.get(c);   // хотим ввести символ из новой строки, но вместо него вводится '\n'
1
QuakerRUS
470 / 427 / 204
Регистрация: 30.10.2017
Сообщений: 1,370
Завершенные тесты: 3
05.03.2018, 16:11 #64
zss, на счет этих двух вариантов, да, согласен. cin оставляет в потоке символ конца страницы, а cin.get и cin.getline его считывают и получают пустое значение в итоге. Речь была именно о том варианте, где два cin, он указан в распространенных ошибках.

Добавлено через 1 час 4 минуты
zss, в нижних двух примерах проблема так же будет наблюдаться, когда число вводится перед нажатием Enter

C++
1
// вводится число после нажатия Enter
Добавлено через 3 часа 51 минуту
zss, в исправлении к этой ошибке в шестой строчке тоже старый вариант.

C++
1
2
3
4
5
6
cout << "введите n:";
int n;
(cin >> n).get();   // вводим число и пропускаем один символ
cout << "введите символ:";
char c;
cin> > c;           // вводится символ на новой строке ( !!!  '\n' второй строки еще не прочитали).
Добавлено через 6 минут
zss, я имел ввиду, что
C++
1
cin >> c;
неплохо бы заменить на
C++
1
cin.get(c)
1
05.03.2018, 16:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2018, 16:11

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не...

Распространенные ошибки
Оглавление Ошибки этапа компиляции (В процессе компиляции выдается либо...

безопасность и распространенные ошибки
Тут наткнулся на очень интересные тексты: ...


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

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

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