[ jelenaMatf @ 22.01.2009. 01:30 ] @


da li moze neko da mi uradi ovaj zadatak? Pisala sam po svim mogucim forumima i nista i onda sam naletela na vas u nadi da cete mi pomoci
Ovako nesto nismo radili na faxu tako stvarno nemam nikakvu ideju kako bih ovo mogla da uradim a samo su nam ovo izbacili kao domaci pa da se snalazimo kao znamo i umemo... Molim vas pomozite mi
[ Mali Misha @ 22.01.2009. 07:24 ] @
Pa prvo pitanje je da li si išta pokušala. Gde je ikakav kod? Šta je to što ste radili?

Apropo samog problema, prvi deo je da znaš da prepišeš iz jednog stringa u drugi. Drugi deo je da poslednji prepisani karakter (po upisivanju u drugi string) uvek zapamtiš u dodatnu promenjivu, a pre upisivanja proveravaš da li je ono što je na putu da se upiše njemu jednako (i naravno ne daš da se upiše, ako jeste). Da bi izbegla moguće probleme, postaviš tu dodatnu promenjivu na početku na 0 i obradiš poseban slučaj kada je polazni string dužine 0.

Onako uzgred, kog koga si? Ne verujem da je J. ex G, i pored svojih tikova, došla do toga da ove stvari ne odradi kako treba.
[ emranonline @ 22.01.2009. 19:39 ] @
funkcija je prosta.
Code:


char* ocisti(char* s, char* t) {
    int i=0,k=0;
    while (*(s+i)!='\0') {
        if (*(s+i+1)!=*(s+i)) {
            *(t+k)=*(s+i);
            k++;
        }
        i++;

    }
    *(t+k)='\0';
    return t;

}


ovo ostalo pokusaj sama
[ jelenaMatf @ 23.01.2009. 02:41 ] @
pokusacu :)
[ jelenaMatf @ 29.01.2009. 19:22 ] @
ajde ljudi uradite mi ovaj zadatak nemojte da ste takvi pleaseeeeeeeee................
[ X Files @ 29.01.2009. 20:15 ] @
Citat:
nemojte da ste takvi pleaseeeeeeeee................

Sta nam fali ;) ?

// Untested !!!
Code:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define OJ_STO_VOLIM_MAGICNE_BROJEVE 30

/* kopirano iz prethodnih postova, netestirano !!! */
char* ocisti(char* s, char* t) {
    int i=0,k=0;
    while (*(s+i)!='\0') {
        if (*(s+i+1)!=*(s+i)) {
            *(t+k)=*(s+i);
            k++;
        }
        i++;
    }
    *(t+k)='\0';
    return t;
}

int main( int argc, char *argv[] )
{
    FILE *ulazna, *izlazna;
    char rec_procitana[OJ_STO_VOLIM_MAGICNE_BROJEVE];
    char  rec_ociscena[OJ_STO_VOLIM_MAGICNE_BROJEVE];
    int brojac_procesiranih_reci = 0;

    if ( argc != 3 )
    {
        printf( "Sintaksa:\nPROGRAM.EXE <ulazni_fajl> <izlazni_fajl>\n" );
        return EXIT_FAILURE;
    }
    if ( stricmp( argv[1], argv[2] ) == 0 )
    {
        printf( "Ulazni i izlazni fajl moraju biti razliciti!\n" );
        return EXIT_FAILURE;
    }

    ulazna = fopen( argv[1], "r" );
    if ( ulazna == NULL )
    {
        printf( "Ulazni fajl '%s' se ne moze otvoriti za citanje!\n", argv[1] );
        return EXIT_FAILURE;
    }

    izlazna = fopen( argv[2], "w" );
    if ( izlazna == NULL )
    {
        printf( "Izlazni fajl '%s' se ne moze otvoriti za upisivanje!\n", argv[2] );
        fclose( ulazna );
        return EXIT_FAILURE;
    }

    while ( !feof( ulazna ) )
    {
         /*
             Ne pitaj me zasto je ovo inicijalizovano sa NULL... Ako izostavis, dvaput upise
             poslednju rec u fajl, sto znaci da je u 'rec_procitana' ostao poslednji upis, a
             petlja se okrene jos jednom zbog citanja EOF, valjda :)
         */
        rec_procitana[0] = '\0';
        fscanf( ulazna, "%s", rec_procitana );
        if ( rec_procitana[0] != '\0')
        {
            fprintf( izlazna, "%s\r\n", ocisti( rec_procitana, rec_ociscena ) );
            ++brojac_procesiranih_reci;
        }
    }
    fprintf( izlazna, "Ukupno je obradjeno: %d reci.\r\n", brojac_procesiranih_reci );

    fclose( izlazna );
    fclose( ulazna );

    system("PAUSE");
    return EXIT_SUCCESS;
}


Prilog 'reci.zip' projekat za okruzenje: Code::Blocks 8.02 + GNU GCC Compiler



[Ovu poruku je menjao X Files dana 29.01.2009. u 21:39 GMT+1]
[ Eurora3D Team @ 01.02.2009. 23:22 ] @
Reci bar hvala ljudima ;)
Ispod imas jos jednu varijantu ove funkcije ...
poz
Code:

char* ocisti(char* s, char* t)
{
    char* r = t;
    //  *t++ = *s++; // ispravnije je sa ovom linijom
    while(*t = *s++)
        if(*t != *(t-1))
            t++;
    return r;
}



[Ovu poruku je menjao Eurora3D Team dana 02.02.2009. u 14:25 GMT+1]
[ jelenaMatf @ 04.02.2009. 02:43 ] @
eee ljudi ja tek sad videla da ste mi uradili zadatak! :)))))))))) HVALA VAM PUNOOOOOOOOOOOOOOOOOOOOOOOO