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

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

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

Программа не выполняется как надо. - C++

10.01.2011, 16:50. Просмотров 1030. Ответов 20
Метки нет (Все метки)

Вот две программы, по идее они должны выполнятся одинаково, но первая выполняется правильно, а вторая нет.
№1
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 <stdio.h>
#include <iostream>
#include <conio.h>
int main(int argc, char *argv[])
{
    int acc=0;
    do
    {
        for (;;)
        {
            int value;
            std::cin>>value;
            if (value<0)
            {
                       break;
                       }
                       acc=acc+value;
                       }
                       }while(!(acc>=100));
                       std::cout<<acc;
                                                    
    getch();
    return 0;
}
№2
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
#include <stdio.h>
#include <iostream>
#include <conio.h>
int VVV(void)
{
int acc=0;
for (;;)
{
int value;
std::cin>>value;
if (value<0)
{break;
}
acc=acc+value;
}
return acc;
}
int main(int argc, char *argv[])
{
    int nN;
do    
{
nN=VVV();
}while (!(nN>=100));
std::cout<<nN;                              
    getch();
    return 0;
}
Объясните плз , что не так во втором коде?
P.S.
Целью программ(по крайней мере первой) было суммирование положительных чисел пока сумма не будет равна стам .(процесс суммирования можно прекратить введением отрицательного числа, но если вы ввели отрицательное число , а сумма ещё не равна стам , то суммирование можно продолжить)

Добавлено через 33 минуты
как объявить переменную acc так чтобы она относилась к обеим функциям?во втором коде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 16:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа не выполняется как надо. (C++):

Есть программа (замена строк), надо как-то доработать. - C++
Программа компилируется, однако при зауске, выдает ошибку: &quot;Segmentation fault&quot; Программа меняет две строки Name1 и Name2. Нужно,...

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

Надо чтобы, как только встречаются данные о женщине, программа преуменьшала ее возраст - C++
Имеется структура с полями фио, пол и возраст, место работы. Мне надо что бы как только встречаются данные о женщине программа преуменьшала...

Не выполняется программа проводника - C++
Добрый день. Пишу программу проводник под DOS, начал с простого, вывод списка файлов из категории. В итоге программа не работает, в поисках...

Компилируется, но не выполняется программа - C++
Есть код, содержащий функцию сортировки выбором Все компилируется , однако при запуске выдает просто черную консоль, и ничего не...

Программа не работает как надо. Задача: Вывести сумму всех элементов массива, кратных данному числу К (вводится с клавиатуры) - C++
Вот мой код. Суммарное число выводит слишком большее, а после завершения программы ошибку:&quot;Run-Time Check Failure #2 - Stack around the...

20
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.01.2011, 16:55 #2
sunlight17, разница двух программ, в том, что если в первой набрали какую-то сумму (меньше 100) и ввели отрицательное число, то процесс суммирования продолжается с учетом набранной ранее суммой. А во второй программе в этом случае процесс суммирования начинается опять с нуля.

Цитата Сообщение от sunlight17 Посмотреть сообщение
как объявить переменную acc так чтобы она относилась к обеим функциям?во втором коде
К каким обеим?
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
10.01.2011, 17:02 #3
C++
1
2
3
4
int nN=0;
/*
*/
nN+=VVV();
0
Chesslov
2 / 2 / 0
Регистрация: 24.11.2010
Сообщений: 29
10.01.2011, 17:06 #4
Чтобы переменная (acc) была видна во всей программе - объяви ее как глобальную.

В функции VVV - переменная acc объявляется как локальная - либо переименуй, либо вообще из тела функции убери.

В принципе для работы программы достаточно двух действий:
1 Убрать объявление acc из VVV
2 Вставить объявление acc до VVV.

Удачи!
0
sunlight17
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 29
10.01.2011, 17:09  [ТС] #5
valerii, к VVV() и к main().
Я просто хочу чтобы свойства второй программы имели такие же свойства первой которые ты описал,
чтобы если мы введём отрицательное цисло,процесс суммирования продолжался бы с учётом уже набранной суммы

Добавлено через 13 секунд
valerii, к VVV() и к main().
Я просто хочу чтобы свойства второй программы имели такие же свойства первой которые ты описал,
чтобы если мы введём отрицательное цисло,процесс суммирования продолжался бы с учётом уже набранной суммы
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.01.2011, 17:09 #6
Chesslov, Не советуйте такого
объяви ее как глобальную.
никому и никогда. Особенно там где это не нужно.
1
sunlight17
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 29
10.01.2011, 17:11  [ТС] #7
chess, а как это сделать?
как видно из программы мои познания в С++ не велики =)))
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.01.2011, 17:12 #8
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
#include <stdio.h>
#include <iostream>
#include <conio.h>
int VVV(int acc)
{
for (;;)
{
int value;
std::cin>>value;
if (value<0)
{break;
}
acc=acc+value;
}
return acc;
}
int main(int argc, char *argv[])
{
    int nN=0;
do    
{
nN=VVV(nN);
}while (!(nN>=100));
std::cout<<nN;                              
    getch();
    return 0;
}
0
sunlight17
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 29
10.01.2011, 17:23  [ТС] #9
ForEveR, спс помогло
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
10.01.2011, 17:36 #10
я вам еще в третьем сообщении написал что и как исправить
0
sunlight17
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 29
10.01.2011, 18:16  [ТС] #11
И всё-таки как объявлять глобальную переменную? мне просто интересно
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
10.01.2011, 18:39 #12
Цитата Сообщение от sunlight17 Посмотреть сообщение
И всё-таки как объявлять глобальную переменную? мне просто интересно
вне функции. но их использование - очень и очень плохой тон
0
sunlight17
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 29
10.01.2011, 19:55  [ТС] #13
почему?это преследуется законодательством))?
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.01.2011, 20:48 #14
sunlight17, просто не стоит. Всегда (или почти всегда) можно обойтись без их использования.
1) К ним очень легкий доступ, отовсюду практически (в пределах одного файла, если нет инклада этого файла в другие) - следовательно легко записать туда что-то не то.
2) Если и писать глобальные переменные - то имя должно быть уникально, так, чтобы не перепутали с глобальной.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int i;
 
int main()
{
    std::cout<<i<<'\n';
    int i=10;//Глобальная переменная перекрыта
    std::cout<<i<<'\n';
    std::cout<<::i<<'\n';//Печатаем глобальную переменную
    return 0;
}
0
metallhead
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 4
10.01.2011, 21:57 #15
Товарищи, помогите, пожалуйста!!
В универе задали написать программу, вот код:
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
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <iomanip.h>
 
 
void main ()
{
    float xn, a, dx, x, y, z, S=0, P=1;
    short K=0;
 
    clrscr();
 
    cout <<"Введите данные"<<endl;
    cout <<"a=";
    cin >>a;
    cout <<"xn=";
    cin >>xn;
    cout <<"dx=";
    cin >>dx;
 
    while (x/(2*x*x+1)>=0)
    {
        cout <<"x="<<x;
        if (x<=1)
        if (x==1)
        {
            cout <<"y=нет решений    z=нет решений"<<endl;
            goto a1;
        }
        else y=0.5*a*x/(1-x)+pow(sin(x*a),2);
        else y=4*a+exp(-x)+2*pow(cos(x*x),3);
        if (y<0) P*=y;
        z=2.3*y+sqrt(x/(2*x*x+1));
        if (z>0)
        {
            K++;
            S+=z;
        }
        cout <<"x="<<x<<" "<<"y="<<y<<" "<<"z="<<z<<endl;
        a1: x+=dx;
    }
    cout <<"K="<<K<<" "<<"S="<<S<<" "<<"P="<<P;
 
    getch();
}
компилируется без ошибок, но всё время пишет К=0, S=0, P=1. Компилятор Borland C++ 3.1
0
10.01.2011, 21:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 21:57
Привет! Вот еще темы с ответами:

Поиск в ширину - Неправильно выполняется программа - C++
ПОМОГИТЕ! ПОЧЕМУ НЕПРАВИЛЬНО ВЫПОЛНЯЕТСЯ ПРОГРАММА? #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;queue&gt; using namespace...

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

Программа со сверхбольшими числами не выполняется до конца - C++
Сам код #include &quot;verylong.h&quot; void verylong::putvl()const { char temp ; strcpy(temp,vlstr); cout&lt;&lt;strrev(temp); ...

Закрывается, а не выполняется программа после нажатия enter - C++
Доброй ночки всем. Помогите новичку: после нажатия enter после ввода переменных программа не выполняется, а попросту закрывается. ...


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

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

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