Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Не работает программа


Автор: loopz 29.8.2012, 09:31
всем доброго дня чтобы не плодить новые темы пишу сюда ---вообщем задача запрашивать 2 цифры и суммировать все промежуточные цифры между ними и выводить сумму код предполагаю должен быть таким 
Код
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
    int a,b;
    int sum(int c, int d);
    cout<<"enter a 1 number "<< endl;
    cin>>a;
    cout<<"enter a 2 number "<< endl;
    cin>>b;
    cout<< sum(a,b) << endl;
    return 0;
}
int sum(int c,int d){
    int tsum;
    int g;
    tsum=c;
    for(g=c;c<d;g++){
        tsum=tsum+g;
    }
    return tsum;
}

но что то программа не работает и кстати научите пользоваться отладчиком visual studio а то я понял что проблема со строкой tsum=tsum+d; походу она зацикливается но почему не пойму

Модератор: Не забываем пользоваться кнопочкой "Код"
нашел решение) ура вот рабочий код 
Код


#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
    int a,b;
    //int sum(int s, int g);
    cout<<"enter a 1 number "<< endl;
    cin>>a;
    cout<<"enter a 2 number "<< endl;
    cin>>b;
    int tsum;
    tsum=0;
    int d;
    d=a;
    while(d<=b)
        tsum=tsum+(d++);
    

    cout<< tsum << endl;
    return 0;
}

Автор: feodorv 29.8.2012, 10:18
Цитата(loopz @  29.8.2012,  10:31 Найти цитируемый пост)
походу она зацикливается но почему не пойму

Возможно, потому что условие в цикле лунное:
Цитата(loopz @  29.8.2012,  10:31 Найти цитируемый пост)
    for(g=c;c<d;g++){

Идёт инкремент переменной g, но сравниваются c и d...

Автор: bsa 29.8.2012, 10:18
строка у тебя зацикливается из-за того, что находится в цикле for(...). А вот цикл for()  у тебя сделан бесконечным, так как внутри цикла ни c, ни d не меняются. Считаю, что тебе нужно переписать его так: for(g = c+1; g <= d; ++g). Т.е. сумма будет всех чисел от c до d включительно. Кстати, от переменной g можно легко избавиться, используя вместо нее c.


 ! 
bsa
Для своих вопросов следует создавать отдельные темы


Добавлено через 4 минуты и 7 секунд
Отладчиком пользоваться просто.
1. Собираешь программу в режиме отладки (debug)
2. Находишь в меню (думаю, run или debug) пункт step и вперед. Step In - сделать шаг с заходом в функцию, step over - без захода (т.е. перейти на следующую строку), step out - выйти из функции.
3. Для просмотра текущих значений переменных следует использовать соответствующее окно. Или добавить свои (watch или inspect).
P.S.: студией никогда не пользовался.

Автор: loopz 29.8.2012, 10:39
да что то я тормознул с циклом for сам понял но поздно в итоге сделал через while и темповую переменную...спс за помощь кстати если не сложно кто опытный отпишитесь в теме про книги для новичков я там постил вчера 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)