Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Suma svih cifara broja...

[es] :: C/C++ programiranje :: Suma svih cifara broja...

[ Pregleda: 4350 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Emp
Podgorica

Član broj: 42014
Poruke: 54
*.crnagora.net.



Profil

icon Suma svih cifara broja...21.10.2005. u 21:43 - pre 193 meseci
Kako odrediti sumu cifara odredjenog broja?
Npr. suma cifara broja 123.0601 je 13.

Za cijeli broj bih uradio nesto ovako:
Code:
int sumaCifara(float arg){
   
    int z,x,y;
    y=0;z=arg;
    while (z!=0){
    x=z%10;
    y+=x;
    z=z/10;}
    return y;
}


Ali ne znam kako bih uradio za dio broja iza zareza/tacke.
Mada vjerovatno nije najbolje ni cijeli dio broja ovako izracunati kao sto sam ja to uradio.
Znaci ime funkcije je: int sumaCifara(float arg) i ona treba da izracunava sumu svih cifara broja.
Pomoc dobrodosla:)
 
Odgovor na temu

IDE

Član broj: 53403
Poruke: 586
*.crnagora.net.



Profil

icon Re: Suma svih cifara broja...21.10.2005. u 23:15 - pre 193 meseci
ma vjerovatno moze na milion nacina...

ja se ne bih mnogo razmisljao i napravio bih f-ju kojoj saljemo broj i koja "razbija" broj na dva dijela,dakle uzima kao cijeli broj onaj dio brojeva prije zareza i kao drugi cijeli broj onaj dio koji se nalazi iz zareza....

dakle sad bi nasatala dva broja:

iz 123.0601 imamo a=123 i b=0601, dalje, f-ja bi sabrala cifre ovih brojeva i napokon sumu dobijenih suma....



eto ti jedan predlog....
there's something out there
waiting for us,
and it ain't no man...
 
Odgovor na temu

D3adly

Član broj: 43272
Poruke: 35
*.net.t-com.hr.

ICQ: 281458481


Profil

icon Re: Suma svih cifara broja...22.10.2005. u 11:58 - pre 193 meseci
Ispisi decimalni broj u string , pa racunaj... :))
#include <D3adly.h>
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Suma svih cifara broja...22.10.2005. u 20:14 - pre 193 meseci
@EMP
A sta ako ti je broj iracionalan ili ima periodican decimalni dio?
 
Odgovor na temu

Emp
Podgorica

Član broj: 42014
Poruke: 54
*.crnagora.net.



Profil

icon Re: Suma svih cifara broja...22.10.2005. u 21:32 - pre 193 meseci
E da,zaboravio sam da dodam da treba da se smatra da broj arg nema više od 6 decimalnih mjesta.
Uglavnom cijeli zadatak glasi ovako :
Napisati funkciju int sumaCifara(float arg) koja izračunava sumu svih cifara broja arg. Na primjer, sumaCifara(123.0601)=13. Smatrati da broj arg nema više od 6 decimalnih mjesta.

Poceo sam u C-u da radim prije nedelju dana tako da je svaka pomoc u vidu coda dobrodosla

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4889
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+633 Profil

icon Re: Suma svih cifara broja...23.10.2005. u 12:17 - pre 193 meseci
Probaj ovako /NETESTIRANO/ :

Code:

/* ... */
#include <stdio.h >
/* ... */
int sumaCifara( double arg ) 
{
   int i, sum= 0;
   char buffer[50];
   
   sprintf( buffer, "%.6f", arg );

   for ( i=0; i<=strlen(buffer); i++ )
      if ( isdigit( buffer[i] ) )
         sum += buffer[i] - '0'; 

   return ( sum );
}




[Ovu poruku je menjao X Files dana 23.10.2005. u 15:45 GMT+1]
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Suma svih cifara broja...23.10.2005. u 12:35 - pre 193 meseci
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define TO_INT 48

int main(void) {
    double dbr= 5.0/3;
    char str[50];
    
    sprintf(str,"%.7g\0",dbr);
    printf("%s\n",str);
    
    int i=-1;
    int suma=0;
    
    while(str[++i]!='\0') {
          if(str[i]=='.')
               continue;
          else 
               suma+=str[i]-TO_INT;
    }
    
    printf("%d\n", suma);
    
    system("pause");
    return 0;
}
 
Odgovor na temu

Emp
Podgorica

Član broj: 42014
Poruke: 54
*.crnagora.net.



Profil

icon Re: Suma svih cifara broja...29.10.2005. u 13:32 - pre 193 meseci

Posto je uslov zadatka "Smatrati da broj arg nema više od 6 decimalnih mjesta." jednostavno sam pomnozio broj za 1.000.000 i uradio ga kao obican broj.
Ali vas code radi i za vishe od 6 mjesta.Super.
Hvala vam na pomoci.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4889
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+633 Profil

icon Re: Suma svih cifara broja...29.10.2005. u 13:58 - pre 193 meseci
Razlog ogranicenja na ne vise od 6 decimalnih mesta (iza zareza) je zbog
problematike (preciznosti) samog tipa 'float'. Rezultati se mogu razlikovati od
kompajlera do kompajlera... Zato sam predlozio da koristis 'double'.

Mnozenje sa 1000000 moze imati probleme ako je tvoj broj u startu veliki. Jesi
li ispitao taj slucaj?

 
Odgovor na temu

[es] :: C/C++ programiranje :: Suma svih cifara broja...

[ Pregleda: 4350 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.