PDA

View Full Version : Помощ за C++



Klamer4o93
01-06-2010, 19:56
Здравейте,
имам индивидуална задача по информатика, в която трябва две числа да се сравнят, да се намери сборът им, разлика и произведението , като условието е да се изпозлват масиви, като всеки елемент от масива, отговаря на една цифра от числото. Успях да се справя със всичко, освен разликата. Тя си работи по принцип, но в някои случаи като например при числата
9999 и 2 изписва грешен резултат. Спешно ми трябва помощ! Ето кода за разликата (или го редактирайте или напишете нов):

//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];
Уточнения: big казва кое от двете числа е по-голямо;
brA е броят на цифрите на числото А
brB е броят на цифрите на числото Б
ПОМОЩ!!!

Chacho
01-07-2010, 19:13
Лелеее как пишеш всичко на един ред. Аз съм същия де, но сега разбирам колко е трудно да се чете като си страничен. Пък и C++ не съм писал много, та съм на четене с рабиране. Съвсем ми заминава разбирането така.

Общо взето алгоритъма ми изглежда добре. Във втория случай обаче, когато разглеждаш А да е по-малко от Б, не трябва ли след разликата да обърнеш знака.

Процедурата проверка хич не разбрах каква е.

Ако работи при теб добре и има някои единични случаи, в които се появява грешката, може проблема да не е в теб а в компилатора. Мен ми се случва на Visual Basic при идентичен код на два различни компютъра да дава коренно различни резултати. Може да има грешки във вградените библиотеки, ако се променени.

Дай няколко резултата от примерите в които не действа алгоритъма да видим от какво естество са, току виж ми хрумне каква е грешката. Като изключим това за обръщането на знака на разликата не видях грешка. Поздравления за решението ти.