dumdum
(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ę ?
Pozdrawiam.
_alex
([alex])
#2
Wywal jedną z pętli, zamiast indeksów użyj wskaźników, pozbądź się dzielenia.
dumdum
(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
(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
([alex])
#5
int Dodawanie(int* Tab,int* SumaCyfr)
dumdum
(Zenstr)
#6
No fajnie ,zapomniałem ,że istniej takie cos jak “++” :lol: .
Widze,że dzielenie pozostało. .
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;
}