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

[Zadatak] Sabiranje stringova

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Sabiranje stringova

[ Pregleda: 2992 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

slisoss
vlado sliškovic
student
kiseljak

Član broj: 223722
Poruke: 1
77.221.5.*



Profil

icon [Zadatak] Sabiranje stringova26.05.2009. u 17:58 - pre 180 meseci
pozzz svima

ja sam vlado i imam jedan zadatak a ne znam kako da ga rjesim nadam se da ce te mi vi pomoci:

napravi program koristeci stringove u kojem unosimo dva broja i program ih zbraja svaki moze imati od 1.- 250 znamenki...

 
Odgovor na temu

Struja01
Beograd

Član broj: 166347
Poruke: 190



Profil

icon Re: [Zadatak] Sabiranje stringova02.06.2009. u 01:23 - pre 180 meseci
Ovo dole bi trebalo da bude resenje zadatka koji si postavio. Radi u VS6. Mozda sam ga ja malo iskomplikovao, ali za mene je ovo laksi nacin rada
Postavio sam par komentara da lakse mozes da razumes zadatak.
Pozdrav!

Code:

/* MOZES DA RADIS PREKO ASCII KODA SAMO SVAKI BROJ ODUZMES SA 48, JER TO JE ASCII KOD NULE */
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define max 250

main ()

{
    int i,j,l,k,m=0,s,q=0,w=0,h=0,r;

    char a[max],b[max],c[max];
while(1)
{
    gets(a); //UNOSIMO STRING A
    fflush (stdin);

if(strcmp(a1,"0")==0)
        break;

    gets(b); //UNOSIMO STRING B
    fflush (stdin);

    l=strlen(a); //ODREDJUJEMO DUZINU STRINGA 
    k=strlen(b);

    for( i=0,j=0;i<l,j<k;i++,j++ )
    {
        if ( (isdigit(a[i]) !=0) && (isdigit(b[i]) !=0) ) //PROVERAVANJE DA LI JE ZNAK BROJ
            m++; //AKO JE BROJ "m" SE UVECA
    
    }
    fflush (stdin);
    //UBACIVANJE NULA MEDJU AKO NIZOVI NISU JEDNAKI
    if( l>k && m>0 )
    {
        s=l;
        for(i=k;i<l;i++)  
            b[i]='0';
    }
    
    if ( l<k && m>0 )
    {
        s=k;
        for(i=l;i<k;i++)
            a[i] = '0';
    }

    if ( l==k )
        s=l;

    fflush (stdin);
    if(m!=0)
    {
    printf("A = ");
    for( i=0;i<s;i++ )
        printf("%d ",a[i]-48); //UBACIJEMO ZNAK (BROJ) PO ZNAK (BROJ)

    printf("\nB = "); 
    for( i=0;i<s;i++ )
        printf("%d ",b[i]-48);
    
    printf("\nKad se brojevi (stringovi) saberu rezultat je: ");
    for( i=s-1;i>=0;i--)
    {

        if ( ((a[i]-48) + (b[i]-48))>10 ) //kad se izvrsi ova operacija sabiranja ako je broj veci od 10 
        {                                    
            r=((a[i]-48) + (b[i]-48)) / 10; //preko ove instrukcije se posle nadovezuje na sledici broj
            h= r * 10;
            w++;
            
        }
        if(i==0) //naredba if je samo za zadnji broj u petlji ili prvi broj kad se cita
        {
            
            c[i] = ((a[i]-48) + (b[i]-48)) + r;
            break;
        }

        if( w>1 )
        {
            q=((a[i]-48) + (b[i]-48)) / 10; //ovo je decimalna cifra kao 10.. samo izrazena u 1.
            w=1;//ako je w>1 q ce se dodati na string c
        }
    

            c[i]=(a[i]-48)+(b[i]-48)-h + q;
            h=0;
            q=0;
            r=0;
    }
        for(i=0;i<s;i++)
            printf("%d",c[i]);
        printf("\n");
    }

    else
        printf("Niste uneli znak koji je broj!\n");



    
}
}


[Ovu poruku je menjao milovan_regodic dana 02.06.2009. u 02:42 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Sabiranje stringova

[ Pregleda: 2992 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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