[ nemanja066 @ 14.09.2008. 17:53 ] @
Imam problem,ne znam da resim sledeca 2 zadatka (nisam dobar sa funkcijama)

ZADATAK 1: Napisati funkciju na C-u kojom se vrši rotiranje elemenata niza A dimenzije N za K pozijica u desno. U glavnom programu učitati matricu B, reda P*T, i koristeći formiranu funkciju izvršiti rotiranje elemenata unutar svake vrste za i pozicija u desno, pri čemu je i indeks vrste. Štampati matricu B nakon transformacije.

ZADATAK 2: Napisati program na C-u koji za uneti celi broj računa zbir njegovih cifara korištenjem funkcije SUMA_CIFARA. Funkcija SUMA_CIFARA treba da radi i za negativne brojeve. Npr ., SUMA_CIFARA(-3291) treba da vrati vrednost -15, a SUMA_CIFARA(568) treba da vrati vrednost 19.

Nemojte brisati ovaj post,jer je HITNO......
[ X Files @ 16.09.2008. 20:28 ] @
(Queued for deployment)

[Zadatak] Zbir cifara broja, sa predznakom

Napisati program na C-u koji za uneti celi broj računa zbir njegovih cifara korištenjem funkcije SUMA_CIFARA. Funkcija SUMA_CIFARA treba da radi i za negativne brojeve. Npr ., SUMA_CIFARA(-3291) treba da vrati vrednost -15, a SUMA_CIFARA(568) treba da vrati vrednost 19.

Code:

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

int suma_cifara( int broj )
{
   int znak = ( broj > 0 ) - ( broj < 0 );
   int suma = 0;
   broj = abs( broj );
   while ( broj > 0 )
   {
      suma += ( broj % 10 );
      broj /= 10;
   }
   return ( suma * znak );
}

int main()
{
   int n;
   printf( "Unesite broj: " );
   scanf( "%d", &n );
   printf( "Suma cifara broja %d je: %d\n", n, suma_cifara( n ) );

   system( "PAUSE" );
   return 0;
}



[Zadatak] Funkcija za rotiranje elemenata niza

Napisati funkciju na C-u kojom se vrši rotiranje elemenata niza A dimenzije N za K pozijica u desno. U glavnom programu učitati matricu B, reda P*T, i koristeći formiranu funkciju izvršiti rotiranje elemenata unutar svake vrste za i pozicija u desno, pri čemu je i indeks vrste. Štampati matricu B nakon transformacije.

Code:

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

#define MAX_DIMENZIJA 30

/* funkcija rotiranje */
void rotiranje( int a[], int n, int k )
{
   int i, j;
   /* broj uzastopnih jedinicnih pomeraja */
   for ( i=1; i<=k; i++ )
   {
      /* pomeranje za jedan udesno */
      int pomocna = a[n-1];
      for ( j=n-1; j>0; j-- )
         a[j] = a[j-1];
      a[0] = pomocna;
   }
}

/* glavna funkcija */
int main()
{
   /* maksimalne dimenzije matrice */
   int b[MAX_DIMENZIJA][MAX_DIMENZIJA];
   int p, t, i, j;

   /* unos */
   printf ( "Unesite dimenzije matrice max:\n" );

   /* unos broja redova */
   do
   {
      printf ( "Redova (max=%d)?:", MAX_DIMENZIJA );
      scanf( "%d", &p );
   } while ( ( p < 1 ) || ( p > MAX_DIMENZIJA ) );

   /* unos broja kolona */
   do
   {
      printf ( "Kolona (max=%d)?:", MAX_DIMENZIJA );
      scanf( "%d", &t );
   } while ( ( t < 1 ) || ( t > MAX_DIMENZIJA ) );

   /* unos elemenata matrice */
   for ( i=0; i<p; i++ )
      for ( j=0; j<t; j++ )
      {
         printf ( "Unesite element B[%d][%d]=", i+1, j+1 );
         scanf( "%d", &b[i][j] );
      }

   /* ispis matrice pre rotiranja*/
   printf( "Ispis pre rotiranja:\n" );
   for ( i=0; i<p; i++ )
   {
      for ( j=0; j<t; j++ )
         printf( "%4d", b[i][j] );
      printf("\n");
   }

   /* rotiranje redova */
   for ( i=0; i<p; i++ )
      rotiranje( &b[i], t, i );

   /* ispis matrice posle rotiranja */
   printf( "Ispis posle rotiranja:\n" );
   for ( i=0; i<p; i++)
   {
      for ( j=0; j<t; j++)
         printf( "%4d", b[i][j] );
      printf("\n");
   }

   /* pauziranje programa, pre nego nestanu rezultati sa ekrana */
   system( "PAUSE" );
   return 0;
}



[Ovu poruku je menjao X Files dana 16.09.2008. u 21:56 GMT+1]
[ dmilicev @ 12.07.2017. 07:58 ] @
Funkcija
Code:
 void rotiranje( int a[], int n, int k ) 
ocekuje niz integera kao prvi argument i zato joj u pozivu to treba i proslediti:
Code:
 rotiranje( &b[i][0], t, i ); 



[Ovu poruku je menjao dmilicev dana 12.07.2017. u 09:32 GMT+1]

[Ovu poruku je menjao dmilicev dana 12.07.2017. u 09:33 GMT+1]