Форум программистов, компьютерный форум, киберфорум
Шутки юмора
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/214: Рейтинг темы: голосов - 214, средняя оценка - 4.60
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887

Глупые ошибки и опечатки в коде

11.02.2010, 22:41. Показов 44276. Ответов 157
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может и была подобная тема, но всё таки.

Как известно, процесс отладки процесс более сложный, чем первоначальное написание кода. И иногда он просто выносит мозг.
Дак вот, предлагаю здесь писать о глупых ошибках, которые были допущены Вами и затягивали процесс отладки на долгие часы.


=====================================
Начну.
Сегодня часа 4 отлаживал прогу, чуть на стену не лез.
В общем, копирую рабочий код из консолки на Си в визуальную среду, всё правильно копирую - ctrl+c ctrl+v, все библиотеки подключаю. И не работает. КОпирую назда в консольку - сразу работает. Дошло до того, что в ручную заного всю прогу переписал. Проверял каждую строчку. Ну всё верно - и не работает. Магия прям.
Оказалось, проблема в указателях. В консолке почемуто не инициализированные указателя по умолчанию равны 0, а в виз. среде равны числу. Хотя компилятор один и тот же. Вот так, 5 часов потратил на эту глупость.
4
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2010, 22:41
Ответы с готовыми решениями:

Ошибки в коде стоят денег!
Изучив простейшие арифметические действия, начинающий программировать может написать конвертер хотя бы 3-4 валют. Можно поиграть с этим:...

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

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include <conio.h> #include <stdio.h> #include...

157
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
15.12.2010, 14:54  [ТС]
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
FILE *fp;
int ch;
 
while (!feof(fp))
{
   ch = fgetc (fp);
   ....
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21283 / 8308 / 637
Регистрация: 30.03.2009
Сообщений: 22,670
Записей в блоге: 30
15.12.2010, 15:13
darkAngel, твой вариант менее красивый. И, абстрагируясь от того, что побайтное чтение медленно само по себе, твой вариант, условно говоря, в два раза медленнее, потому что на каждый прочитанный символ дополнительно вызывается feof. Это я всё к тому, что "из принципа" обойти присваивание внутри условия можно всегда, но результат выйдет менее аккуратный. Т.е. ситуация ровно та же, что и с goto: если использовать с умом, то можно в удобном виде написать программу, если принципиально не пользоваться, то простую вещь можно превратить в сложно запутанную кишку
0
Человек
 Аватар для mustardandrew
97 / 82 / 7
Регистрация: 16.06.2009
Сообщений: 229
31.12.2010, 17:52
Никогда не оставляйте на завтра то, что можно сделать сегодня
PHP
1
2
3
4
5
6
//...
  protected function getRandomNumber(){
    // потом напишу
    return 4;
  }
//...
0
610 / 93 / 4
Регистрация: 08.07.2010
Сообщений: 1,893
05.01.2011, 20:30
Java
1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        int o, c;
        for (int i=0; i < 100; i+_+ /* Опечатался +_+*/) { 
            
        }
    }
 
}
0
 Аватар для Dimazzzzzz
589 / 96 / 6
Регистрация: 24.01.2009
Сообщений: 379
09.01.2011, 17:49
Вспоминается одна история, которая произошла со мной в школе (это лет 12 назад), как раз в тему.

В 10-м и 11-м классах мы изучали информатику и Бейсик в качестве основ программирования. Преподаватель казался мне мужиком серьезным и вдумчивым, и в случае, если у меня возникал вопрос "почему не работает очередная программа", всегда говорил: "Дима, чудес не бывает: что написано в программе, то и происходит на экране".

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

Пришло время набирать программу на компьютере. Все набивают то, что рассказал учитель, а я свой код - у всех заработала, у меня нет. Белая точка должна была перемещаться при нажатии на клавиши (их было 4 штуки: L-влево, P-вправо, V-вверх и N-вниз). При нажатии на 2 клавиши, например, на L+V, точка должна была ехать по диагонали. Я выбрал другие клавиши, отличные от этих, и точка упорно отказывалась перемещаться по одной из диагоналей: по одной перемещалась, по другой нет.

Тут я вспомнил свой давний вопрос к учителю: "Почему не работает, вроде всё правильно?". Он, как всегда, сходу ответил: "Чудес не бывает: что написано в программе, то и происходит", и стал присматриваться к моему коду. Потом сказал мне: "Исправь вот эту строчку и эту, как у меня на доске". Я исправил - не работает. Снова он подходит ко мне, снова смотрит на код и снова говорит: "Исправь эту строчку и эту". Я исправил - снова не работает.

Потом учитель решил прибегнуть к решительному шагу и говорит мне: "Давай исправим всю программу на то, что написано на доске". Он стоял рядом и смотрел, как я по буковке вывожу то, что должно было заработать. Исправил весь код, запускаем - не работает. Препод вдруг сказал: "Что за чудеса". Ни я ни он не ожидали, что подобное заявление может быть сказано в данном помещении.

Я то исправил код на то, что он мне предложил (даже строку с комментарием написал), только не весь - клавиши для управления точкой остались те, которые я выбрал, а не L P V N. И вот когда я переправил эти клавиши, всё заработало.

Что явилось причиной сего происшествия - для меня остается загадкой. Мы "сошлись" во мнении, что коды клавиш, которые я выбрал, конфликтовали друг с другом и поэтому не работали.
Главное, учитель поверил в то, что чудеса есть
0
10.01.2011, 13:54

Не по теме:

Цитата Сообщение от DreamWolf Посмотреть сообщение
PHP
1
2
3
4
5
6
//...
  protected function getRandomNumber(){
    // потом напишу
    return 4;
  }
//...
Обычно, в каментах к подобному коду пишут что-то типа: "Только что кубик бросил: "4" - 100% случайное число", и оставляют, так как есть :D

1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.01.2011, 09:47
Цитата Сообщение от Evg Посмотреть сообщение
С одной стороны сие опечаткой не является, с другой стороны такой код можно считать недоразумением и засчитать за большую опечатку.
Сейчас вошло в моду вместо "if (x == 5)" писать "if (5 == x)". Типа того, что если вдруг ошибёшься и вместо "==" напишешь "=", то компилятор выдаст ошибку. Однажды у нас работал один товарищ. Вроде бы серьёзный человек, кандидат наук. Но сел на эту заразу. И, будучи кандидатом наук, решил, что во всём надо быть последовательным и для других типов сравнений тоже писать таким вот образом: "if (5 != x)", "if (5 > x)" и т.д. Что привело к маразмам (потому что такой код нельзя читать без поллитры) типа "if (0 <= a) && (10 >= a)". Маразм превратился в полный маразм, когда вместо констант использовались элементы enum'ов типа "if (C == Lang || CPlusPlus == Lang)". Я специально привожу только короткие сравнения, чтобы показать, что уже на них ломается мозг при чтении. Когда идёт сложное сравнение с комбинацией && и ||, то пока ручками не переписать в обратную сторону, понять это невозможно в принципе. Полный маразм превратился в тотальный маразм, когда он начал менять местами аргументы, передаваемые в strcmp: "if (!strcmp("abc", str) || !strcmp("qwe",str))". И всё это исключительно ради того, чтобы раз в сто лет не ошибиться и не написать "=" вместо "==".
К чему я всё это написал. Граждане, не слушайте кандидатов и докторов наук, академиков и прочих теоретиков, и не превращайте код в гавнокод на ровном месте.
У нас это бывает. Кстати, такие сравнения легко читаю, но ни когда не сравниваю константу слева, потому, что хоть это и защищает от ошибок, но не логично, поэтому гарантирует тормоза при наборе. Предлагаю обозвать этот стиль еврейским.

Добавлено через 27 минут
Цитата Сообщение от Dimazzzzzz Посмотреть сообщение
Главное, учитель поверил в то, что чудеса есть
Чудеса есть, иначе нельзя объяснить существование недопрограмеров, умудряющихся вместо одной задачи правильно решить совсем другую.
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
12.02.2011, 23:23
Пишу декстопную программу на .NET для обработки сигналов, наваял некую новую форму добавил контролы ну и вызываю нужный мне метод и класса логики. Постоянно вываливается null.
Достало, прошелся дебагом, вхожу в некий очередной вызов уже в глубине алгоритма и вижу:
C#
1
2
3
4
5
6
public static SimpleSignal GetCorrelation(PolySignal first, PolySignal second)
        {
            SimpleSignal result = null;
            //TODO: realize logic
            return result;
        }
потом вспомнил что ночью писал и оставил
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
19.02.2011, 13:19
По учебе нужно было написать несколько контрольных на Fortran'е, поскольку все свободное время пишу на С++, Фортран пришлось осваивать в рекордно сжатые сроки (2 вечера). Нужно было написать ф-цию (подпрограмму блин) считающюю факториал. Написал, запустил - результат неверный. Я 5 (!) часов переписывал ее и так и сяк, пока не заметил, что вместо factorial у меня переменная внутри ф-ции называется factoriat в которую собственно и записывается результат перед возвратом из ф-ции. Дело в том, что в Fortran'e считается нормальным, если посередине программы вдруг от куда не возьмись появляется новая переменная, ее тип определяется по первой букве, и все это спокойно компилится. После этого я понял всю прелесть языков с жесткой типизацией и предварительным объявлением)
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21283 / 8308 / 637
Регистрация: 30.03.2009
Сообщений: 22,670
Записей в блоге: 30
19.02.2011, 15:59
Цитата Сообщение от Kastaneda Посмотреть сообщение
Дело в том, что в Fortran'e считается нормальным, если посередине программы вдруг от куда не возьмись появляется новая переменная
Как и в бэйсике и многих других языках
0
Путешественник вселенной
 Аватар для Просто лис
189 / 161 / 119
Регистрация: 01.03.2011
Сообщений: 664
20.06.2011, 11:59
Эх а у меня косяков ещё не было хотя было время когда я воевал с Pascal ABC.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.06.2011, 12:11
PureBasic
1
2
3
4
5
6
7
10 input xmin, xmax, "y=";y$
20 FOR x:=xmin TO xmax STEP 0.1
30 IF x< 0 THEN GOTO 60
40 PLOT 128+ABS(x)*10, 176-val(y)*10
50 GOTO 70
60 PLOT ABS(x)*10, 176-val(y)*10
70 NEXT x
Добавлено через 43 секунды
Левая часть графика оказывалась отражена по горизонтали и прижата к левому краю экрана.

Добавлено через 2 минуты
Цитата Сообщение от darkAngel Посмотреть сообщение
Оказалось, проблема в указателях. В консолке почемуто не инициализированные указателя по умолчанию равны 0, а в виз. среде равны числу
А явно =NULL прописать никак?
0
1 / 1 / 0
Регистрация: 29.05.2011
Сообщений: 12
07.07.2011, 16:46
Было это в славные 80-ые, когда мы в техникуме изучали графику на Васике. Нужно было нарисовать животное. Один товарищ рисовал зайца. Заяц почти готов, осталось дорисовать два уха. По замыслу, это два неполных и вытянутых эллипса над головой зайца. На глаз прикинув координаты и параметры, он дописывает пару строк в программу и (ещё не запустив) гордо зовёт препода оценить работу. Компьютеры стояли вдоль стен и все уставились на его экран. Он пишет RUN. И... (он, конечно, напутал со знаками и не угадал с координатами, в результате уши оказались перевёрнутыми и смещёнными вниз)... на экране появляется... лысая тётка с круглыми глазами и с о###енно оттянутыми сиськами!
Сказать, что мы все (и препод) лежали под столами - это ничего не сказать! Мы просто бились в истерике.
Это был мой первый случай, когда я осознал, что экран компьютера отлично подходит для показа порнухи.
0
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
19.07.2011, 23:52
C++
1
#include "logic.cpp"
Borland даже не ругался
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
19.07.2011, 23:55
Вспомнил у кого-то такое было:
Файл 2.cpp
C++
1
2
#include "1.cpp"
// код с синтаксическими ошибками
Файл 1.cpp
C++
1
2
#include "2.cpp"
// код с синтаксическими ошибками
После этого g++ 1.cpp и
Такое я никогда не видел
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21283 / 8308 / 637
Регистрация: 30.03.2009
Сообщений: 22,670
Записей в блоге: 30
20.07.2011, 16:22
Цитата Сообщение от Daemon025 Посмотреть сообщение
C++
1
#include "logic.cpp"
Borland даже не ругался
А почему он должен был ругаться?
0
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
20.07.2011, 18:52
g++ ругался на multiple definition
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21283 / 8308 / 637
Регистрация: 30.03.2009
Сообщений: 22,670
Записей в блоге: 30
20.07.2011, 19:51
Цитата Сообщение от Daemon025 Посмотреть сообщение
g++ ругался на multiple definition
Так это следствие, а не причина.
0
19 / 19 / 13
Регистрация: 02.11.2009
Сообщений: 118
25.08.2011, 10:11
Всем доброго времени суток!
Тема классная, тоже хотел такую создать, но увидел, что уже есть.
В общем программировал как то на C. Создал файл collide.hxx, спокойненько подключил #include "collide.hxx", запустил компиляцию и:
Bash
1
collide.hxx No such file or directory
Что я только не делал, чтобы понять, почему файл есть, а компилятор его не видит. Даже думал, что ОС так глючит=)
В итоге оказалось, что первая буква в имени файла на английская, а русская С.
0
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
13.11.2011, 09:40
Не знаю у кого как, а я иногда пишу то на паскале, то на плюсах. Так вот у меня вчера было:
C++
1
cin >> a, b, c;
И ещё думал, почему прога не фурычит...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.11.2011, 09:40

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

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

ошибки в готовом коде(ошибки указаны)
Ввести с клавиатуры строку (кол-во символов не больше 10). И определить ее длину c использованием подпрограмм. model small .stack 100h ...

опечатки
есть сайт про мониторы (определенная марка). сугубо для примера - lg flatron, все страницы, кейворды, метатеги итп заточены под lg...

Глупые вопросы
Здравствуйте, ищу помощи в следующих вопросах. 1. На билдере создан некий проект, где используется форма, развернутая на полный...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru