[ Nemanja @ 27.08.2003. 21:00 ] @
Operator preklapanja sabiranje pri cemu su sabirci veliki brojevi uneseni kao nizovi karaktera ide nekako ovako u C++ :
Code:

// "velbroj.cpp"

#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include "velbroj.hpp"

bignum bignum::operator+(bignum drugi)  //definicija
{
    //inicijalizuj objekat z i nadji duzine stringova
    bignum z;
    int i = strlen(broj) - 1, j = strlen(drugi.broj) - 1;
    //ako su brojevi numerici uradi sabiranje
    if (numerik(broj, i) && numerik(drugi.broj, j)) {
    int prenos = 0, br, k = (i > j ? i : j);    //u pocetku pamti
    prenos = 0 i nadji k = max(i, j) z.broj[k + 1] = '\0';  //postavi velicinu
    for (i, j; i >= 0 || j >= 0; i--, j--)
    // br=numerik od (br1 + br2) + ono sto se pamti
    {
        br = (i < 0 ? 0 : broj[i] - 48) + (j <
                           0 ? 0 : drugi.broj[j] -
                           48) + prenos;
        prenos = br > 9 ? br -= 10, 1 : 0;  //ako je rezultat>9 onda pamti 1, a broj smanji za 10 
        z.broj[k--] = br + 48;
    }  //kraj for petlje
    if (prenos == 1) {
        char *temp = "1";
        strcat(temp, z.broj);
        strcpy(z.broj, temp);
    }
    } else
    cout << "greska pri sabiranju brojeva!" << endl;
    /* prenosi kao rezultat objekat z (napomena: ako bi koristili objekt drugi
       ili * this, menjala bi se vrednost njihovih argumenta) */
    return z;
}

int bignum::numerik(char *num, int duz) //definicja
{
    for (int i = duz; i >= 0; i--)
    if (num[i] < '0' || num[i] > '9') {
        cout << "greska, broj:";
        prikaz();
        cout << " nije numerik! " << endl;
        return 0;
    }
    return 1;
}


Bilo bi mi od velike pomoci ukoliko neko vec zna ove sablonske skolske zadatke da mi pomogne da napisem isto to samo za oduzimanje!
Trenutno mi je mozak stao, sto ne znaci da vec nece biti bolje!

Unapred se izvinjavam ako postoji pravilo o ne pomoganju oko skolskih zadataka a sa kojim nisam upoznat!
[ leka @ 27.08.2003. 23:35 ] @
Ja nisam imao vremena da duboko analiziram problem, prvenstveno zato jer nisam uopste stekao dojam da si se potrudio da ista uradis - ovaj kod koji si poslao ovamo moze biti bilo ciji, jel'da?
Potrudio sam se ipak malo da onu sumu karaktera pretvorim u koliko-toliko citljiv kod tako sto sam propustio isti kroz GNU Indent i onda stavio u phpBB tagove... To si mogao i sam da uradis - sa leve strane polja za unos teksta (kada editujes odgovor>) imas lep, krataj i jasan "help" sa objasnjenjem za neke obicne vidove formatiranja teksta... Pogledaj ih.
[ Nemanja @ 28.08.2003. 11:41 ] @
Code:


 bignum bignum::operator- (bignum drugi)
 {
  bignum z;
  int i=strlen(broj)-1,j=strlen(drugi.broj)-1,k=(i>j?i:j);
  int prenos=0,br,pom,t1,t2,znak=0,veci;
  char duzi[100],kraci[100];
  if (i>j) {strcpy(duzi,broj);strcpy(kraci,drugi.broj);}
  else if (j>i) {strcpy(duzi,drugi.broj);strcpy(kraci,broj);}
  else
  {
  veci=strcmp(broj,drugi.broj);

      if (veci>0)  {strcpy(duzi,broj);strcpy(kraci,drugi.broj);}
      else {strcpy(duzi,drugi.broj);strcpy(kraci,broj);}
   };

   z.broj[k+1]=0;
   for (i,j;i<=0 || j<=0;i--,j--)
   {
   br=(i<0?0:duzi[i]-48)-(j<0?0:kraci[j]-48)-prenos;
   if (br<0)
   { br=((i<0?0:duzi[i]-48)+10)-(j<0?0:kraci[j]-48);prenos=1;}
   else prenos=0;
   }
   z.broj[k--]=br+48;


  return z;
}; 

***********************************************************

Mogao bih reci da se nisam ni potrudio, medjutim juce nisam imao vremena, a
problem kod oduzimanja mi je bio nisam radio sa njim . Ako hoces zatvori temu a
ja cu jos raditi.

[Ovu poruku je menjao Nemanja dana 28.08.2003. u 17:04 GMT]
[ Goran Rakić @ 28.08.2003. 12:58 ] @
da li si ti video šta ti je dejan rekao? kako da postaviš kod? misliš da ja mogu da dešifrujem gde je trebalo [ i ] a ne html oznaka za italic? ubaciš lepo [ code ] i [/ code ] pre i nakon koda i sve će biti mnogo čitljivije...