Код ня дадае апошняе значэнне DEFUALT

Im піша прыкладанне для майго інтра да класа праграмавання і мэта складаецца ў тым, каб стварыць простую праграму, якая прапануе карыстачу ўвесці шэраг станоўчых цэлых лікаў ад 50 да 100 (уключна) з дапамогай клавіятуры. Ваша запрашэнне павінна паведаміць карыстачу ўвесці адмоўны лік, каб спыніць працэс ўводу.

Калі карыстальнік ўводзіць нумары, вы павінны сачыць за колькасць сапраўдных запісаў, якія яны зрабілі (тыя, якія трапляюць у дапушчальным дыяпазоне), і скласці гэтыя колькасці запісаў. Вам не трэба захоўваць больш аднаго ўведзенага нумар, падліку, і бягучая сумы вы вылічае.

Пасля таго як карыстальнік завяршае ўвод дадзеных, вырабляць выснову, падобны гэтаму:

A total of 5 values were entered.
The sum of those numbers is 127

зрабіць праграму, якая будзе мець адну зменную, і яна будзе атрымліваць карыстальнікаў

Вось код, які я напісаў

#include 
#include 

using namespace std;

int main(int argc, char *argv[]) {

int loop = 1;
int value;
int times = 0;

cout << "Enter a negavtive number to quit" << endl;
cout << "\nPlease Enter Any Number Between 50 - 100" << endl;

while (loop == 1) {      
cin >> value;
times++;
value += value;
  if(value < 0) {
    cout << "You entered " << times - 1 << " numbers" << endl;
    cout << "Total: " << value << endl;
    system("PUASE");
    return EXIT_SUCCESS;
    }// end if statement
} //end while loop

system("PAUSE");
return EXIT_SUCCESS;
}

Here is the output http://www.flickr.com/photos/[email protected]/6286454476/

Я думаю, што гэта можа мець нешта рабіць з тым, што я выкарыстоўваю значэнне INT, каб зрабіць дзве розныя задачы. Як я магу ісці аб фіксацыі гэтага?

перагляд

thanks to all of you for the "fix" I add a new variable and it works like a charm, but now the math is not adding correctly http://www.flickr.com/photos/[email protected]/6286526294/in/photostream

0
Любая канкрэтная прычына вы карыстаецеся Int замест булева для вашага цыкла? Акрамя таго, вы няправільна PAUSE у цыкле.
дададзена аўтар Alex, крыніца
Дарэчы, я не C ++ Dev, але там, здаецца, шмат нянавісці да сістэмы() выклікае. Разважаючы тлумачыцца тут cplusplus.com/forum/articles/11153 і гэта, безумоўна, робіць сэнс для мяне, каб пазбегнуць гэтага, калі вы можаце дапамагчы яму.
дададзена аўтар Alex, крыніца

4 адказы

Ёсць некалькі праблем, але галоўныя з іх заключаецца ў наступным:

cin >> value;

Гэта азначае, што «заціраць значэнне з лікам уваходаў карыстальнікаў», і, вядома ж, калі вы робіце, што вы ніколі не будзеце мець магчымасць захоўваць суму ў значэнне , так як ён будзе перапісаны кожны раз з новым нумарам.

Рашэнне: выкарыстоўвайце іншыя пераменны, каб трымаць нарастаючы вынік.

Акрамя таго, ёсць памылка ў тым, што вы робіце

times++;
value += value;//which as described above will not "stick"

before checking if value is negative. These operations should only be performed when value is not negative; otherwise, data entry should stop immediately and the negative number should not be taken into account for summing the total.

3
дададзена

дадаць зменную суму ўтрымліваць суму, вы перазапісаць значэнне ўваходных сігналаў у кожнай ітэрацыі цыклу.

sum += value;
1
дададзена
дзякуй усім вам за «выправіць» дадаць новую зменную, і яна працуе як шарм, але цяпер матэматыку правільна, не дадаючы flickr.com/photos/[email protected]/6286526294/in/photostream
дададзена аўтар user975452, крыніца

Не выкарыстоўвайце значэнне , каб зрабіць дзве розныя задачы.

Ёсць яшчэ адну зменную з імем сума і акумуляваць у агульнай складанасці там.

Тое, як вы робіце рэчы вы пішаце над сумай кожны раз, калі карыстальнік ўводзіць нумар:

cin >> value;//sum of previous values is overwritten!

Акрамя таго, ёсць яшчэ адна праблема ў тым, што, калі карыстальнік ўводзіць адмоўны лік вы дадаць, што да сумы, а таксама.

0
дададзена

Ваш код не правярае, ці з'яўляюцца значэння знаходзяцца ў дыяпазоне (г.зн. ад 50 да 100). Вы можаце паставіць ўмова на лініі, дзе вы робіце дадатак, як паказана ніжэй:

if (value >= 50 && value <= 100)
sun += value;

Акрамя таго, вы можаце выкарыстоўваць «значэнне», каб разарваць цыкл таксама.

0
дададзена
Вялікі дзякуй за галовы праграмы зараз працуе правільна. Праблема складалася ў тым, што я абвясціў зменную «суму» ў выглядзе цэлага ліку, калі насамрэч гэта быў двайны
дададзена аўтар user975452, крыніца