Код соңғы дефолт мәні қосылмайды

Бағдарламалау сыныбына кірісу үшін өтініш жазамын және оның мақсаты - бұл пернетақтаны пайдаланып, 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, көзі

Екі түрлі тапсырманы орындау үшін value қолданбаңыз.

sum деп аталатын басқа айнымалы мәнге ие болыңыз және ол жерде барлық жиынтығын жинақтаңыз.

Пайдаланушы санды енгізген сайын өз сомаңыздан жазып жатқан нәрселерді қалай жасайсыз:

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

Сондай-ақ, пайдаланушыға теріс санды енгізгенде, сіз бұл соманы қоссаңыз тағы бір проблема бар.

0
қосылды

Сіздің кодының мәндері ауқымның (яғни, 50-ден 100-ге дейін) екенін тексермейді. Сіз төменде көрсетілгендей қосымша жасайтын жолға шартты қоюға болады:

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

Сондай-ақ, циклды бұзу үшін «мәнді» пайдалануға болады.

0
қосылды
Бастамашылар үшін алғыс айтамын, бағдарлама дұрыс жұмыс жасайды. Мәселе мынада, мен айнымалы деп жариялады «сум» бүтін ретінде, шын мәнінде, бұл екі есе
қосылды автор user975452, көзі