- Форум
- По малко от всичко
- Информационни технологии
- Помощ за C++
Здравейте,
имам индивидуална задача по информатика, в която трябва две числа да се сравнят, да се намери сборът им, разлика и произведението , като условието е да се изпозлват масиви, като всеки елемент от масива, отговаря на една цифра от числото. Успях да се справя със всичко, освен разликата. Тя си работи по принцип, но в някои случаи като например при числата
9999 и 2 изписва грешен резултат. Спешно ми трябва помощ! Ето кода за разликата (или го редактирайте или напишете нов):
Уточнения: big казва кое от двете числа е по-голямо;Код://razlika if (big==1||big==0) {brD=brA;for(k=0;k<=brD;k++) { if(a[k]<b[k]){a[k]=a[k]+10;a[k+1]=a[k+1]-1;}d[k]=a[k]-b[k];}} else if (big==-1) {brD=brB;for(k=0;k<=brD;k++) { if(b[k]<a[k]){b[k]=b[k]+10;b[k+1]=b[k+1]-1;}d[k]=b[k]-a[k];}} //izhod na razlika proverka(d,brD); cout<<"nThe subtraction is "; for(k=brD-1;k>=0;k--) cout<<d[k];
brA е броят на цифрите на числото А
brB е броят на цифрите на числото Б
ПОМОЩ!!!
Лелеее как пишеш всичко на един ред. Аз съм същия де, но сега разбирам колко е трудно да се чете като си страничен. Пък и C++ не съм писал много, та съм на четене с рабиране. Съвсем ми заминава разбирането така.
Общо взето алгоритъма ми изглежда добре. Във втория случай обаче, когато разглеждаш А да е по-малко от Б, не трябва ли след разликата да обърнеш знака.
Процедурата проверка хич не разбрах каква е.
Ако работи при теб добре и има някои единични случаи, в които се появява грешката, може проблема да не е в теб а в компилатора. Мен ми се случва на Visual Basic при идентичен код на два различни компютъра да дава коренно различни резултати. Може да има грешки във вградените библиотеки, ако се променени.
Дай няколко резултата от примерите в които не действа алгоритъма да видим от какво естество са, току виж ми хрумне каква е грешката. Като изключим това за обръщането на знака на разликата не видях грешка. Поздравления за решението ти.
Има 10 вида хора. Тези, които могат да четат двоичен код и тези, които не могат.