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

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

Войти
Регистрация
Восстановить пароль
 
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
#1

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

24.09.2013, 17:19. Просмотров 425. Ответов 17
Метки нет (Все метки)

Дорогие программисты! Помогите пожалуйста юному прогеру понять в чем трабла )
сабж:

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
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;
unsigned long int Perimeter(unsigned short int length, width);
 
 
 
int main()
{
    int length;
    int width;
    int result;
    cout << "Vvedite dlinnu:  " << endl;
    cin >> length;
    length = Perimeter(length);
    cout << "Vvedite shirinu:  " << endl;
    cin >> width;
    width = Perimeter(width);
    cout << "Perimeter: " << result << endl;
    cin >> result;
    result = Perimeter(length, width);
 
}
 
unsigned long int Perimeter (unsigned short int length)
{
    return 2 * length;
}
 
unsigned long int Perimeter (unsigned short int width)
{
    return 2 * width;
}
unsigned long int Perimter (unsigned short int length, width)
{
    return length + width;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 17:19     Ошибка в коде
Посмотрите здесь:

Ошибка в коде - C++
// Perl в С++.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; int _tmain(int argc, _TCHAR*...

В коде ошибка - C++
В чем проблема?? #include&lt;iostream.h&gt; #include&lt;math.h&gt; int main() { int x=0.85,e=0.001; double k,uk,s; cout&lt;&lt;&quot;Вычисление...

Ошибка в коде) - C++
Всем привет! Дана целочисленная матрица размера 5*4. Сформировать одномерные массивы, состоящие из количества положительных и суммы ...

Ошибка в коде - C++
Я написал код #include&lt;iostream&gt; using namespace std; bool f(int x){ int a = 0; int b = 1; while (x &gt; 0){ a = a + 1; b...

Ошибка в коде - C++
класс big нужен для хранения чисел в двоичном виде #include &lt;iostream&gt; using namespace std; class big { public: ...

Ошибка в коде - C++
Помогите найти ошибку в коде, программа аварийно закрывается на последнем вводе mass.year; #include &lt;iostream&gt; #include &lt;string&gt; ...

Ошибка в коде - C++
Здравствуйте. В книге &quot;ООП&quot; Р. Лафоре, в главе 6 есть программка. Которая не хочет запускаться. Сперва набирал сам, после &quot;долгих мучений&quot;...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
names1995
11 / 11 / 2
Регистрация: 13.11.2012
Сообщений: 276
24.09.2013, 17:25     Ошибка в коде #2
что должна делать программа?
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 17:31  [ТС]     Ошибка в коде #3
найти периметр прямоугольника
names1995
11 / 11 / 2
Регистрация: 13.11.2012
Сообщений: 276
24.09.2013, 17:37     Ошибка в коде #4
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 <iostream>
#include <cstdlib>
using namespace std;
int Perimeter(int length, int width);
int main()
{
int length;
int width;
int result;
cout << "Vvedite dlinnu: " << endl;
cin >> length;
cout << "Vvedite shirinu: " << endl;
cin >> width;
result = Perimeter(length, width);
cout << "Perimeter: " << result << endl; 
system ("PAUSE");
return 0;
}
 
 int Perimeter (int length, int width)
 {
      return 2*(length+width);
        
 }
если периметр прямоугольника
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.09.2013, 17:40     Ошибка в коде #5
В коде просто сквозит фундаментальное непонимание того, что пишется и зачем. Советую почитать какие-нибудь учебники для новичков.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
double Perimeter(double length, double width);
 
 
 
int main()
{
double length;
double width;
double result;
cout << "Vvedite dlinnu: ";
cin >> length;
cout << "Vvedite shirinu: ";
cin >> width;
result = Perimeter(length, width);
cout << "Perimeter: " << result << endl;
}
double Perimter (double length, double width)
{
return 2*(length + width);
}
Пишу с телефона, поэтому текст неформатировал.
names1995
11 / 11 / 2
Регистрация: 13.11.2012
Сообщений: 276
24.09.2013, 17:41     Ошибка в коде #6
у него, отдельные функции на длину и ширину )))))))
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 17:42  [ТС]     Ошибка в коде #7
Ребят, как в условии задачи было сказано, чтобы функция возвращала значения unsigned long int, и параметры ее unsigned short int .. Так я и написал.. Да и учебник, который я читаю (C++ за 21 день Джесс Либерти третье издание) так разбирали все задачи

Но все равно спасибо большое за решение и критику
names1995
11 / 11 / 2
Регистрация: 13.11.2012
Сообщений: 276
24.09.2013, 17:44     Ошибка в коде #8
успехов тебе
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.09.2013, 17:49     Ошибка в коде #9
Цитата Сообщение от AFi- Посмотреть сообщение
Ребят: как в условии задачи было сказано, чтобы функция возвращала значения unsigned long int, и параметры ее unsigned short int .. Так я и написал.. Да и учебник, который я читаю (C++ за 21 день Джесс Либерти третье издание) так разбирали все задачи

Но все равно спасибо большое за решение и критику
Тут дело не в типах переменных. Я как домой доеду, минут через 20, смогу подробно расписать Ваши ошибки. С телефона я сдохну столько печатать.
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 17:49  [ТС]     Ошибка в коде #10
Rivory, Благодарю, жду с нетерпением)
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 17:55     Ошибка в коде #11
AFi-, у Вас в третьей строчке в прототипе функции не указан тип переменной, там где width. И в последнем методе также. Вам нужно изменить название функции. Либо та в которой аргумент width, либо та где аргумент height.
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 18:01  [ТС]     Ошибка в коде #12
Цитата Сообщение от MCKLAS Посмотреть сообщение
AFi-, у Вас в третьей строчке в прототипе функции не указан тип переменной, там где width. И в последнем методе также. Вам нужно изменить название функции. Либо та в которой аргумент width, либо та где аргумент height.
А это что? unsigned short int
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 18:03     Ошибка в коде #13
AFi-, вообще можно любой. Выбирать вам. А зачем вам 3 функции периметр, в которых неизвестно что делается. и зачем вы вводите с клавиатуры значение в переменную result, а потом присваиваете значение, возвращаемое функцией.?)
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 18:04  [ТС]     Ошибка в коде #14
MCKLAS, тип переменной указан ведь unsigned short int (к параметрам функции)
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 18:12     Ошибка в коде #15
В этой строчке у вас указан тип возвращаемого значения и тип для одной переменной : length.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
unsigned long int Perimeter(unsigned short int length,unsigned short int width);
 
int main()
{
    int length = 0, width = 0, result =0;
    cout << "Vvedite dlinnu:  " << endl;
    cin >> length;
    cout << "Vvedite shirinu:  " << endl;
    cin >> width;
    result = Perimeter(length, width);
    cout << "Result:" << result << endl;
    system("pause");
}
 
unsigned long int Perimeter (unsigned short int length, unsigned short int width)
{
    return 2 * width + 2 * length;
}
Или же вы можете не писать прототип функции, а писать реализацию выше функции main:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
unsigned long int Perimeter (unsigned short int length, unsigned short int width)
{
    return 2 * width + 2 * length;
}
 
int main()
{
    int length = 0, width = 0, result =0;
    cout << "Vvedite dlinnu:  " << endl;
    cin >> length;
    cout << "Vvedite shirinu:  " << endl;
    cin >> width;
    result = Perimeter(length, width);
    cout << "Result:" << result << endl;
    system("pause");
}
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 18:16  [ТС]     Ошибка в коде #16
MCKLAS, ааа.. я понял, спасибо огромное!!
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.09.2013, 19:03     Ошибка в коде #17
Давайте разберем построчно, что у вас написано.
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 19:19     Ошибка в коде
Еще ссылки по теме:

Ошибка в коде - C++
Я уже пол дня код пишу. Дописался до такой степени что уже не хочет компилироваться. Ругаеться на 134 135 строки, но я не вижу там ошибики....

Ошибка в коде - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #include &lt;string.h&gt; #include...

Ошибка в коде - C++
Прветствую всех! printf(&quot;Введите расположение файла (например: C:\\myfile.txt):/n&quot;); char * s; scanf(&quot;%s&quot;, &amp;s); FILE * doc;...

Ошибка в коде. - C++
Доброго времени суток задали нам сегодня задачу решить примерhttp://pic.ipicture.ru/uploads/091102/kKTR6dTEmX.png написал код но он не...

Ошибка в коде - C++
Создать иерархию классов транспорт – воздушный транспорт – вертолет. Определить конструктор копирования, оператор присваивания через...


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

Или воспользуйтесь поиском по форуму:
AFi-
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 19:19  [ТС]     Ошибка в коде #18
Rivory, большое спасибо за разъяснение!!
Yandex
Объявления
24.09.2013, 19:19     Ошибка в коде
Ответ Создать тему
Опции темы

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