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

Ошибка в коде - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу записать в файл http://www.cyberforum.ru/cpp-beginners/thread961340.html
написал программу, числа из одного файла записывать в другой . Вчера работала а седня не работает . помогите, в чем может быть дело?\ #include "stdafx.h" #include "iostream" #include <string> #include <fstream> using namespace std; void main() {
C++ Задача на сортировку строк Задача: в 10 строковых переменных занесите 5 рандомных символов, а потом сортируйте их в порядке возрастания. Помогите советом, пожалуйста-как создать массив строк, и присвоить рандомное значение int? http://www.cyberforum.ru/cpp-beginners/thread961339.html
std::map в инлайн-асме C++
Доброго времени суток Имеется MAP-массив содержащий хуки для функций Нужно получить соответствующий адрес в naked функции: std::map<PVOID, PVOID> mHooks; //... __declspec(naked) void _hookHandler() { __asm { push ebp
Наследование C++
Ребят помогите на основе классе сделать подкласс( наследование на основе добавление элемента методом очереди).Т.е что надо , задаем число н задач, задали приоритет имя, он нам вывел или не вывел записи как нажали меню, и нужно к нашему заданному количеству добавить еще 1 элемент в конец нашего хранящегося. #include<iostream> #include<math.h> #include<time.h> #include<fstream> using namespace...
C++ Ошибка HEAP CORRUPTION http://www.cyberforum.ru/cpp-beginners/thread961276.html
Добрый вечер, программисты) Не могли бы вы подсказать новичку, каким образом можно обнаружить ошибку (heap corruption). Трассировка показала, что сообщение выскакивает когда функция test() заканчивается, а дальше вообще неясно. Заранее спасибо. https://gist.github.com/anonymous/6683761 - сортировки(header) https://gist.github.com/anonymous/6683768 - main
C++ Как создать сообщение нажатия клавиш клавиатуры? Мне надо что бы при каждом нажатии на клавишу клавиатуры у меня выполнялись определенные действия... Я думаю что надо сделать примерно так: BEGIN_MESSAGE_MAP(CFileListDlg::CMyEdit, CEdit) ON_MESSAGE(WM_CHAR, CFileListDlg::CMyEdit::OnChar) END_MESSAGE_MAP() и подробнее

Показать сообщение отдельно
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.09.2013, 19:03     Ошибка в коде
Давайте разберем построчно, что у вас написано.
C++
1
#include <iostream>
Тут подключается iostream - заголовочный файл с функциями ввода-вывода.
C++
1
using namespace std;
Тут мы говорим, что мы будем работать в пространстве имен std, чтобы потом не писать std:: перед каждой операцией ввода-вывода.
C++
1
unsigned long int Perimeter(unsigned short int length, width);
Объявление функции. Тут мы говорим, что будем использовать данную функцию, поэтому компилятор будет искать её реализацию позднее и не будет ругаться, если мы попытаемся использовать данную функцию до описания её реализации. Тут же встречается первая ошибка. В списке аргументов не указан тип второго аргумента. Правильный вариант уже написал человек выше:
C++
1
unsigned long int Perimeter(unsigned short int length, unsigned short int width);
C++
1
int main()
Начало реализации главной функции. Точки входа в программу, с которой она начнет работать. Правилом хорошего тона считается писать не просто int main(), а
C++
1
int main(int argc, char* argv[])
, где argc - количество параметров, переданных в программу, а argv - сами эти параметры. Это делается для того, чтобы потом можно было эти параметры использовать в самой программе.

C++
1
2
    cout << "Vvedite dlinnu:  " << endl;
    cin >> length;
Тут мы записываем в переменную length то, что введем в терминале. Кстати, endl тут не нужен, т.к. endl это перевод строки, но при вводе переменной с терминала, пользователь, в любом случае нажмет Enter, что переведет строку и так, без endl
C++
1
    length = Perimeter(length);
Это вторая ошибка. Про саму функцию Perimeter я напишу позднее. Но, представим, что есть такая функция. Что тогда делает эта строка? Она записывает в переменную length значение, которое возвращает функция. Зачем? Если мы только что ввели этот length с клавиатуры.
C++
1
2
3
    cout << "Vvedite shirinu:  " << endl;
    cin >> width;
    width = Perimeter(width);
Аналогично
C++
1
    cout << "Perimeter: " << result << endl;
Ещё одна серьезная ошибка. Тут Вы пытаетесь использовать переменную result. Но что хранится в этой переменной? До этого вы её нигде не использовали, не присвоили никакого значения, просто объявили как int result. Таким образом, на данный момент в ней хранится случайный порядок битов, кусок мусора, выхваченный из памяти.
C++
1
    cin >> result;
Ещё одна ошибка. Тут Вы пытаетесь заставить пользователя ввести результат. Откуда он знает результат? Если он его уже знает, зачем тогда нужна программа?
C++
1
    result = Perimeter(length, width);
Вот это правильная строка. Вызов функции периметр и запись возвращаемого значения в переменную result.

C++
1
2
3
4
5
6
7
8
9
unsigned long int Perimeter (unsigned short int length)
{
    return 2 * length;
}
 
unsigned long int Perimeter (unsigned short int width)
{
    return 2 * width;
}
Что делают эти 2 функции - непонятно. Непонятно в том числе, зачем они нужны? Если мы знаем формулу периметра, почему мы сразу не можем её записать? Более того, функции
C++
1
unsigned long int Perimeter (unsigned short int width)
и
C++
1
unsigned long int Perimeter (unsigned short int length)
для компилятора - вообще не имеют различия. Для него они абсолютно одинаковы, он будет в них путаться и будет ругаться на них.
C++
1
2
3
4
unsigned long int Perimter (unsigned short int length, width)
{
    return length + width;
}
Ну тут надо просто вписать правильную формулу периметра прямоугольника (length+width)*2
 
Текущее время: 01:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru