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

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

Войти
Регистрация
Восстановить пароль
 
Bravo48
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 17
#1

Ошибка при отладке программы - C++

20.12.2012, 20:38. Просмотров 478. Ответов 9
Метки нет (Все метки)

Программа:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <math.h>
#include <locale>
void c511();
void c521();
void c5211();
int main() {
    int k;
    setlocale( LC_ALL,"Russian");
    std::cout<<"выберите лабораторную :" <<std::endl;
    std::cout<<"1 - C5.1.1" <<std::endl;
    std::cout<<"2 - C5.2.1" <<std::endl;
    std::cout<<"3 - C5.2.11" <<std::endl;
    std::cin >> k;
        if (k==1){c511();}
    if (k==2){c521();}
    if (k==3){c5211();}
}
void c511() {
using namespace std;
double x=2.35;
double a=0.89;
double b=2.065;
double y;
y=pow(x,(a+b));
std::cout <<"y= " << y << std::endl;}
void c521() {
using namespace std;
double x;
double y;
double z;
std::cout<<"vvedite x"<<std::endl;
std::cout<<"vvedite y"<<std::endl;
std::cin >> x;
std::cin >> y;
if(x>0){z=x-y;}
else {z=y-x+1;}
std::cout << "z= "<<y << std::endl;
std::cin >> x;
}
void c5211() {
using namespace std;
double a;
double b;
double c;
double d;
double kol = 4;
std::cout << "vvedite a"<<std::endl;
std::cin >> a;
std::cout << "vvedite b"<<std::endl;
std::cin >> b;
std::cout << "vvedite c"<<std::endl;
std::cin >> c;
std::cout << "vvedite d"<<std::endl;
std::cin >> d;
if(a <= 0) {--kol;}
if(b <= 0) {--kol;}
if(c <= 0) {--kol;}
if(d <= 0) {--kol;}
if(kol == 0) {return 0;}
double summ = 0;
if(a > 0) {summ += a;}
if(b > 0) {summ += b;}
if(c > 0) {summ += c;}
if(d > 0) {summ += d;}
 cout << summ / kol;
}
Лог:

1>------ Построение начато: проект: dv, Конфигурация: Debug Win32 ------
1>Построение начато 20.12.2012 20:13:28.
1>InitializeBuildStatus:
1> Обращение к "Debug\dv.unsuccessfulbuild".
1>ClCompile:
1> dv.cpp
1>c:\users\1\documents\visual studio 2010\projects\dv\dv\dv.cpp(57): error C2562: c5211: функция типа "void", возвращающая значение
1> c:\users\1\documents\visual studio 2010\projects\dv\dv\dv.cpp(6): см. объявление "c5211"
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.40
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

В последней подпрограмме при получении значения kol равным 0 программа должна возвращать к вводу значений a, b, c, d. Помогите, пожалуйста. Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при отладке программы (C++):

Ошибка при отладке программы - C++
Недавно начал заниматься на С++ по книге &quot;Дейтел Х. Дейтел П. - Как программировать на C++&quot;, и столкнулся с такой проблемкой, ввожу самый...

при отладке программы возникает ошибка - C++
при отладке программы,возникает одно и то же сообщение при выводе из формулы(на фото в окне отладки) условие: Вычислить для своего...

Ошибка при выходе из программы, а в отладке с самого начала её нет - C++
Программа должна повторять действия калькулятора. Условия таковы вводим строку и после работаем с ней как с числами и символами, но при...

Ошибка при отладке - C++
Нажимаю Ctrl+F5 или просто F5. Снизу вылазит все это( что сверху). Открывается консоль. И вместо того что бы выводить мне то что нужно,...

Ошибка при отладке - C++
запускаю программный код на отладку в Microsoft Visual C++ 2010 Express. выдает следующую ошибку в чем причина???

При отладке выдается ошибка сегментации - C++
Всем привет! :) У меня такая проблема: программа по численным методам (кусок кода - дифференциальная прогонка), pu - массив 101 на 101,...

9
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.12.2012, 20:48 #2
если функция описана как
void function_name()
это значит, она не может возвращать значений
чтобы она могла возвращать int, надо писать так:
int function_name()
1
Bravo48
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 17
20.12.2012, 21:05  [ТС] #3
Спасибо, исправил.
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.12.2012, 21:15 #4
Bravo48, запиши свой код вот так
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <cmath>
using namespace std;
void c511();
void c521();
void c5211();
int main() 
{
    int k;
    bool bContinue = true;
    while(bContinue)
    {
        cout<<"***MENU***" <<endl;
        cout<<"0 - exit" <<endl;
        cout<<"1 - C5.1.1" <<endl;
        cout<<"2 - C5.2.1" <<endl;
        cout<<"3 - C5.2.11" <<endl;
        cin>> k;
        switch(k)
        {
            case 0:bContinue = false;break;
            case 1:c511();break;
            case 2:c521();break;
            case 3:c5211();break;
            default:
                cout<<"Unsupported key"<<endl;
                break;
        }
    }
    return 0;
}
 
void c511() 
{
 
    double x=2.35;
    double a=0.89;
    double b=2.065;
    double y;
    y=pow(x,(a+b));
    cout <<"y= " << y << endl;
}
void c521() 
{
 
    double x;
    double y;
    double z;
    cout<<"vvedite x"<<endl;
    cout<<"vvedite y"<<endl;
    cin>> x;
    cin>> y;
    if(x>0)
        z=x-y;
    else 
        z=y-x+1;
    cout << "z= "<<y << endl;
    cin>> x;
}
void c5211() 
{
    double a;
    double b;
    double c;
    double d;
    double summ;
    double kol = 4;
    cout << "vvedite a"<<endl;
    cin>> a;
    cout << "vvedite b"<<endl;
    cin>> b;
    cout << "vvedite c"<<endl;
    cin>> c;
    cout << "vvedite d"<<endl;
    cin>> d;
    if(a <= 0) kol--;
    if(b <= 0) kol--;
    if(c <= 0) kol--;
    if(d <= 0) kol--;
    if(kol != 0) 
    {
        summ = 0;
        if(a > 0) 
            summ += a;
        if(b > 0) 
            summ += b;
        if(c > 0) 
            summ += c;
        if(d > 0) 
            summ += d;
        cout << summ / kol;
    }
}
То что мэйн не возвращал нолик для совеменных скорее правило (они дефалтом return 0 ставят) нежели ошибка.
1
Миниатюры
Ошибка при отладке программы  
-=ЮрА=-
Заблокирован
Автор FAQ
20.12.2012, 21:19 #5
Цитата Сообщение от Bravo48 Посмотреть сообщение
--kol;
- не даёт никакой выгоды
std::cout тоже самое, хотя люди упёрто верят что это некоторые атрибуты магии. Пределагаю прочесть
http://www.cyberforum.ru/blogs/34326/blog275.html на счёт using namespace std;

Добавлено через 2 минуты
сами же ошибки в коде были здесь
http://codepad.org/Kxo3fXMR
In function 'void c5211()':
Line 60: error: return-statement with a value, in function returning 'void'
compilation terminated due to -Wfatal-errors.
Цитата Сообщение от Bravo48 Посмотреть сообщение
if(kol == 0) {return 0;}
- функция имеет тип void какой return 0?
Уже тогда просто return;
(прошу заметить что на отсутсвие return 0; c11 компилятор даже не ругается
отстусвие return 0 в main
)
1
Bravo48
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 17
20.12.2012, 22:03  [ТС] #6
C++
1
2
3
4
5
6
7
8
void c531a(){
    int S=128;
    int i;
for (i=3;i<=6;i++){
    if(i%3 = 0) 
        S=S-3; }
std::cout<< "S= "<< S <<std::endl;
}
Условие было записано псевдокодом:
S := 128
нц для i = 3 до 6
если mod(i, 3) = 0, то
S := S – 3
всё
кц i
Вот напейсал еще одну подпрограмму, при отладке ругается, что i должен быть изменяемым левосторонним значением. Честно, даже вникать сейчас не хочу, что это значит. Просто, прошу, исправьте, где ошибся.
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.12.2012, 22:25 #7
Цитата Сообщение от Bravo48 Посмотреть сообщение
if(i%3 = 0)
это присваивание а надо if(i%3 == 0)
1
-=ЮрА=-
Заблокирован
Автор FAQ
20.12.2012, 22:27 #8
Bravo48, вот код с 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <cmath>
using namespace std;
void c511();
void c521();
void c5211();
void c531a();
int main() 
{
    int k;
    bool bContinue = true;
    while(bContinue)
    {
        cout<<"***MENU***" <<endl;
        cout<<"0 - exit" <<endl;
        cout<<"1 - C5.1.1" <<endl;
        cout<<"2 - C5.2.1" <<endl;
        cout<<"3 - C5.2.11" <<endl;
        cout<<"4 - C5.3.1a"<<endl;
        cin>> k;
        switch(k)
        {
            case 0:bContinue = false;break;
            case 1:c511();break;
            case 2:c521();break;
            case 3:c5211();break;
            case 4:c531a();break;
            default:
                cout<<"Unsupported key"<<endl;
                break;
        }
    }
    return 0;
}
 
void c511() 
{
 
    double x=2.35;
    double a=0.89;
    double b=2.065;
    double y;
    y=pow(x,(a+b));
    cout <<"y= " << y << endl;
}
void c521() 
{
 
    double x;
    double y;
    double z;
    cout<<"vvedite x"<<endl;
    cout<<"vvedite y"<<endl;
    cin>> x;
    cin>> y;
    if(x>0)
        z=x-y;
    else 
        z=y-x+1;
    cout << "z= "<<y << endl;
    cin>> x;
}
void c5211() 
{
    double a;
    double b;
    double c;
    double d;
    double summ;
    double kol = 4;
    cout << "vvedite a"<<endl;
    cin>> a;
    cout << "vvedite b"<<endl;
    cin>> b;
    cout << "vvedite c"<<endl;
    cin>> c;
    cout << "vvedite d"<<endl;
    cin>> d;
    if(a <= 0) kol--;
    if(b <= 0) kol--;
    if(c <= 0) kol--;
    if(d <= 0) kol--;
    if(kol != 0) 
    {
        summ = 0;
        if(a > 0) 
            summ += a;
        if(b > 0) 
            summ += b;
        if(c > 0) 
            summ += c;
        if(d > 0) 
            summ += d;
        cout << summ / kol;
    }
}
 
void c531a()
{
    int S=128;
    for (int i=3;i<=6;i++)
    {
        if(i%3 == 0) 
         S = S -3; 
    }
    cout<< "S= "<< S <<endl;
}
1
Миниатюры
Ошибка при отладке программы  
Bravo48
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 17
20.12.2012, 22:40  [ТС] #9
О, прошу, вы так накручиваете сложность, мне же не поверят, когда буду сдавать эту лабораторную Спасибо большое, просто я всего неделю занимаюсь Си, еще многого не знаю. Спасибо за помощь!
0
-=ЮрА=-
20.12.2012, 22:45     Ошибка при отладке программы
  #10

Не по теме:

Цитата Сообщение от Bravo48 Посмотреть сообщение
О, прошу, вы так накручиваете сложность, мне же не поверят, когда буду сдавать эту лабораторную
- дык я всего то меню ввёл, верней обвернул код выбора
Цитата Сообщение от Bravo48 Посмотреть сообщение
std::cout<<"выберите лабораторную :" <<std::endl;
* * std::cout<<"1 - C5.1.1" <<std::endl;
* * std::cout<<"2 - C5.2.1" <<std::endl;
* * std::cout<<"3 - C5.2.11" <<std::endl;
* * std::cin >> k;
* * * * if (k==1){c511();}
* * if (k==2){c521();}
* * if (k==3){c5211();}
циклом
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(bContinue)
* * {
* * * * cout<<"***MENU***" <<endl;
* * * * cout<<"0 - exit" <<endl;
* * * * cout<<"1 - C5.1.1" <<endl;
* * * * cout<<"2 - C5.2.1" <<endl;
* * * * cout<<"3 - C5.2.11" <<endl;
* * * * cout<<"4 - C5.3.1a"<<endl;
* * * * cin>> k;
* * * * switch(k)
* * * * {
* * * * * * case 0:bContinue = false;break;
* * * * * * case 1:c511();break;
* * * * * * case 2:c521();break;
* * * * * * case 3:c5211();break;
* * * * * * case 4:c531a();break;
* * * * * * default:
* * * * * * * * cout<<"Unsupported key"<<endl;
* * * * * * * * break;
* * * * }

и заменил if-ы на switch по ричине большей уместности. В остальном поубирал std:: и заменил єто всё одной единтсвенной строкой под инклудами
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
using namespace std;
вроди по мне как и не сложно

Успехов на защите!

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 22:45
Привет! Вот еще темы с ответами:

При отладке программы вылетает окошко с ошибкой: использование переменной без инициализации - C++
код: #include &lt;iostream&gt; #include &lt;conio.h&gt; int A,n,m; using namespace std; void poisk1(); void poisk2(); int main() ...

Удаление экземпляра класса в функции самого класса (Ошибка при отладке) - C++
Допустим, у нас есть класс Buffer, который хранит в себе указатель на класс некоторой матрицы и количество этих указателей refcounter ...

одномерный массив помощь в отладке программы - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; #include &lt;stdlib.h&gt; #include &lt;iomanip&gt; #define m 12 using namespace...

Ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске программы возникает ошибка - C++
Я знаю точно, что ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске моей программы windows выдает ошибку. Почему ?...


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

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

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