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

Suma svih cifara broja...

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

[ Pregleda: 1677 | Odgovora: 8 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Emp
Podgorica

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



Profil

icon Suma svih cifara broja...21.10.2005. u 21:43

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:)
21.10.2005. u 21:43 

IDE

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



Profil

icon Re: Suma svih cifara broja...21.10.2005. u 23:15
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...
21.10.2005. u 23:15 

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
Ispisi decimalni broj u string , pa racunaj... :))
#include <D3adly.h>
22.10.2005. u 11:58 

NrmMyth
Split, Kaštela

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



Profil

icon Re: Suma svih cifara broja...22.10.2005. u 20:14
@EMP
A sta ako ti je broj iracionalan ili ima periodican decimalni dio?
22.10.2005. u 20:14 

Emp
Podgorica

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



Profil

icon Re: Suma svih cifara broja...22.10.2005. u 21:32
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

22.10.2005. u 21:32 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Suma svih cifara broja...23.10.2005. u 12:17
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]
FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
23.10.2005. u 12:17 

NrmMyth
Split, Kaštela

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



Profil

icon Re: Suma svih cifara broja...23.10.2005. u 12:35
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;
}

23.10.2005. u 12:35 

Emp
Podgorica

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



Profil

icon Re: Suma svih cifara broja...29.10.2005. u 13:32

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.
29.10.2005. u 13:32 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Suma svih cifara broja...29.10.2005. u 13:58
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?


FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
29.10.2005. u 13:58 

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

[ Pregleda: 1677 | Odgovora: 8 ]

Postavi temu Odgovori

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