Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
#1

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

24.09.2013, 17:19. Просмотров 467. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 17:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка в коде (C++):

Ошибка в коде (Ошибка сегментирования (core dumped)
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; ...

В чём ошибка.В коде там где коментарий там ошибка поучается.
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class...

Ошибка с else/else if в коде
Подчеркивает else(else if все нормально), ошибка:требуется оператор. Как с этим...

Ошибка в коде
FOR( 0, c_obj ){ if( !objs-&gt;a ){ int j = 0; while( species-&gt;action...

Ошибка в коде
Дали на пару такую программу, не могу разобраться в чем ошибка. Сначала...

Ошибка в коде
#include &lt;cmath&gt; #include &lt;iostream&gt; using namespace std; class Player {...

17
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
24.09.2013, 17:25 #2
что должна делать программа?
0
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 17:31  [ТС] #3
найти периметр прямоугольника
0
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
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);
        
 }
если периметр прямоугольника
1
Rivory
146 / 112 / 21
Регистрация: 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);
}
Пишу с телефона, поэтому текст неформатировал.
0
names1995
11 / 11 / 6
Регистрация: 13.11.2012
Сообщений: 278
24.09.2013, 17:41 #6
у него, отдельные функции на длину и ширину )))))))
0
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 17:42  [ТС] #7
Ребят, как в условии задачи было сказано, чтобы функция возвращала значения unsigned long int, и параметры ее unsigned short int .. Так я и написал.. Да и учебник, который я читаю (C++ за 21 день Джесс Либерти третье издание) так разбирали все задачи

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

Но все равно спасибо большое за решение и критику
Тут дело не в типах переменных. Я как домой доеду, минут через 20, смогу подробно расписать Ваши ошибки. С телефона я сдохну столько печатать.
0
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 17:49  [ТС] #10
Rivory, Благодарю, жду с нетерпением)
0
VEINHORN
543 / 92 / 49
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 17:55 #11
AFi-, у Вас в третьей строчке в прототипе функции не указан тип переменной, там где width. И в последнем методе также. Вам нужно изменить название функции. Либо та в которой аргумент width, либо та где аргумент height.
0
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 18:01  [ТС] #12
Цитата Сообщение от MCKLAS Посмотреть сообщение
AFi-, у Вас в третьей строчке в прототипе функции не указан тип переменной, там где width. И в последнем методе также. Вам нужно изменить название функции. Либо та в которой аргумент width, либо та где аргумент height.
А это что? unsigned short int
0
VEINHORN
543 / 92 / 49
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 18:03 #13
AFi-, вообще можно любой. Выбирать вам. А зачем вам 3 функции периметр, в которых неизвестно что делается. и зачем вы вводите с клавиатуры значение в переменную result, а потом присваиваете значение, возвращаемое функцией.?)
0
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 18:04  [ТС] #14
MCKLAS, тип переменной указан ведь unsigned short int (к параметрам функции)
0
VEINHORN
543 / 92 / 49
Регистрация: 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");
}
1
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 18:16  [ТС] #16
MCKLAS, ааа.. я понял, спасибо огромное!!
0
Rivory
146 / 112 / 21
Регистрация: 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
1
AFi-
1 / 1 / 3
Регистрация: 16.05.2013
Сообщений: 22
24.09.2013, 19:19  [ТС] #18
Rivory, большое спасибо за разъяснение!!
0
24.09.2013, 19:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 19:19
Привет! Вот еще темы с решениями:

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

Ошибка в коде
Доброго времени суток, помоги найти ошибку в коде, пожалуйста class Base {...

Ошибка в коде
Не могу исправить ошибку в 12 и 13 строке, прошу помочь. //programma podbora...

Ошибка в коде
#include &lt;string&gt; #include &lt;iostream&gt; #include &lt;iostream&gt; #include...


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

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

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