[C++]Dodawanie cyfr z tablicy


(Zenstr) #1

Witam.

Mam funkcje,która ma:

a)dodać cyfry z każdej liczby w tablicy

b)zapisać to do nowej tablicy

c)dodać liczby z nowej tablicy i zapisać je w zmiennej typu int

d)zwrócić zawartość tej zmiennej

Wyczaiłem coś takiego:

int Dodawanie(int* Tab,int* SumaCyfr)

{

   int mod = 0,Suma_wszystkich_liczb = 0;


   for(int a = 0;a<10;++a)

   {

     for(int b = 0;b<10;++b)

     {

        while(*(Tab + b))

        {

        mod = *(Tab + b)%10;

        *(Tab+ b)= *(Tab + b)/10;

        *(SumaCyfr+ b)+= mod;

        }

     }

   Suma_wszystkich_liczb += *(SumaCyfr + a);

   }

   return Suma_wszystkich_liczb;

}

Czy można to jeszcze prościej zrobić,bo kumam i kumam i wykumać nie mogę ? :slight_smile:

Pozdrawiam.


([alex]) #2

Wywal jedną z pętli, zamiast indeksów użyj wskaźników, pozbądź się dzielenia.


(Zenstr) #3

Tyle zmieniłem:

int* Dodawanie(int* Tab,int* SumaCyfr)

{

     int mod = 0,Suma_wszystkich_liczb = 0;

     int* pt = Tab,*pt2= SumaCyfr,*pt3 = &Suma_wszystkich_liczb;


     for(int b = 0;b<10;++b)

     {

        while(pt[b])

        {

        mod = pt[b]%10;

        pt[b]= pt[b]/10;

        pt2[b]+= mod;

        }

        *pt3+= pt2[b];

     }

     return pt3;

}

Jak inaczej dodać cyfry z każdej liczby z tej tablicy:

int Tab[10] = {186,1111,1111,1111,111,22,2,3333,6666,77771};

(Razi) #4
int suma=0;

for(int i=0; i<10; i++) suma+=Tab[i];

a jakby to do funkcji wsadzić:

int dodaj(int *Tab, int n){

  int suma=0;

  for(int i=0; i
  return suma;

}

gdzie n to ilość komórek


([alex]) #5
int Dodawanie(int* Tab,int* SumaCyfr)

(Zenstr) #6

No fajnie ,zapomniałem ,że istniej takie cos jak "++" :lol: .

Widze,że dzielenie pozostało. :smiley: .

Od biedy może być.

Jak ktoś ma inne jeszcze sposoby na to, to proszę bardzo.

Pozdrawiam.

-- Dodane 20.06.2009 (So) 22:48 --

Taki zapis też może być ? :

int Dodawanie(int* Tab,int* SumaCyfr)

  {

   int *TabEnd=Tab+10,Suma_wszystkich_liczb=0;

     while(Tab
     {

      int Suma=0,liczba =*(Tab)++;

      do

        {

         int mod= liczba%10;

         Suma+=mod;

        }while(liczba/= 10);

      Suma_wszystkich_liczb+=(*(SumaCyfr++)= Suma);

     }

   return Suma_wszystkich_liczb;

  }