[ ~Vojvoda @ 10.09.2007. 22:41 ] @
Imam neke zadatke za vezbanje, nisam talenat za programiranje, pa trazim malu pomoc.
Treba napisati program koji:
a)cita sa tastature jedan red znakova i pomocu odgovarajuce f-je odredjuje broj decimalnih cifara u njemu
b)ponavlja postupak pod a) sve dok ne ucita prazan red
c)predvideti dinamicku dodelu mem. za svaki red znakova(ovo sa dyn. dodelom mem. nemam pojma)

Ja sam pokusao ovo da resim sa obicnim programom bez dinamicke dodele memorije i funkcije i ne radi, da li neko zna u cemu je problem?

Code:

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define MAX 80

main()
{
    char tekst[MAX+1];
    int n,i,x;
    x=0;
    printf("Unesi red teksta:\n");
    gets(tekst);
    n=strlen(tekst);
    for (i=0;i<=n;i++)
    {
        if(isdigit(tekst[i]))
            x++;
    }
    printf("Broj znakova je: %d",x);

}

Hvala !
[ X Files @ 11.09.2007. 09:03 ] @
Citat:

odredjuje broj decimalnih cifara u njemu

Pod pretpostavkom da su decimalne cifre {0..9} a ne 1.2, 33.45 i sl, onda pokušaj nešto ovako /netestirano/.

Citat:

predvideti dinamicku dodelu mem. za svaki red znakova(ovo sa dyn. dodelom mem. nemam pojma)

Nemam ni ja pojma. Ideja je valjda da se dinamčki alocira neki prostor za tekst, a da se pri unosu onemogući probijanje tog buffera. Nekad davno sam za to koristio posebne biblioteke, a kako se to radi školski, stvarno pojma nemam. Sada sam stavio da se 'kao' svaki put dodeljuje tih MAX_KARAKTERA, mada je to bespotrebno.

Code:

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

#define MAX_KARAKTERA 80

int main()
{
   char *tekst;
   int i, n, x;

   do
   {
      tekst = (char*)malloc( MAX_KARAKTERA );
      if ( tekst )
      {
         printf( "Unesi red teksta: " );
         gets( tekst );

         n = strlen( tekst );
         x=0;

         for ( i=0; i<n; i++)
            if ( isdigit( tekst[i] ) )
               ++x;

         if ( n > 0 )
            printf( "Broj znakova je: %d\n", x );
      }
      else
      {
         break;
      }

      free( tekst );
   } while ( n > 0 );

   system( "PAUSE" );
}



[Ovu poruku je menjao X Files dana 11.09.2007. u 10:48 GMT+1]
[ ~Vojvoda @ 11.09.2007. 19:00 ] @
Hvala puno, sada radi dobro. Sto se tice teksta zadatka i mene je bunio, pa sam zato pitao. I da, u pitanju su cifre a ne brojevi.
Citat:
X Files: Nemam ni ja pojma. Ideja je valjda da se dinamčki alocira neki prostor za tekst, a da se pri unosu onemogući probijanje tog buffera. Nekad davno sam za to koristio posebne biblioteke, a kako se to radi školski, stvarno pojma nemam. Sada sam stavio da se 'kao' svaki put dodeljuje tih MAX_KARAKTERA, mada je to bespotrebno.

Da, bas tako i meni je to delovalo potpuno nepotrebno, zbog toga nisam ni shvatao.

Ok, jos jednom hvala puno i pozdrav!