Srdjane, na ovom forumu se ne daju gotova resenja, vec se pruza pomoc u izradi.
Posto imam malo slobodnog vremena i volje, pomocicu ti oko skeleta programa, koji se odnosi na:
1. dinamicko kreiranje matrice L (pretpostavljam da treba dinamicki jer se pominje M)
2. unos svih potrebnih podataka
3. inicijalizovanje matrice (imaginarnog ekrana)
4. PRAZNO MESTO GDE SAMO TREBA DA IMPLEMENTIRAS ALGORITAM KOJI TI JE MIHAJLO DAO
5. ispis
6. oslobadjanje zauzete memorije
Code:
/*
Članovi celobrojne kvadratne matrice L dimenzije M predstavljaju
tačke na monitoru (slika je sastavljena od tacaka).
Ako član L (i,j) ima vrednost i onda tačka sa koordinatama i,j
svetli, a ne svetli ako ima vrednost 0.
Nacrtati algoritam i napisati opšti potprogram koji "crta" svetlu
liniju na tamnoj pozadini od tačke (i1,j1) do tačke (i2,j2).
(podrazumeva se da su 1 ≤ i1, j1, i2, j2 ≤ M).
Napomena: linija je izlomljena što je posledica zaokruživanja realnih
koordinata duž linije na celobrojne vrednosti.
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
/* dimenzija kvadratne matrice */
int M;
/* Pokazivac na pokazivac na int (za matricu cija se dimezija odredjuje dinamicki) */
int **L;
/* brojaci za petlju za dinamicko kreiranje matrice L*/
int i, j;
/* koordinate tacaka 1 i 2*/
int i1, j1, i2, j2;
/* Unos dimenzije matrice */
do
{
printf ( "Unesite dimenziju M matrice L: " ); scanf ( "%d", &M );
} while ( M<1 );
/* Dinamicko kreiranje matrice: */
/* kolone */
L = (int**) malloc ( M * sizeof( int* ) );
if ( L == NULL )
{
printf( "Matrica L nije kreirana!\n" );
exit( EXIT_FAILURE );
}
/* vrste */
for ( i=0; i<M; i++ )
{
*(L+i) = (int*) malloc ( M * sizeof( int ) );
if ( *(L+i) == NULL )
{
printf( "Matrica L nije kreirana!\n" );
exit( EXIT_FAILURE );
}
}
/* inicijalizovanje na NULU (simulacija prazanog ekrana)*/
/* ovo se moglo i sa calloc() */
for ( i=0; i<M; i++ )
for ( j=0; j<M; j++ )
*(*(L+i)+j) = 0;
/* Unos tacke 1 */
printf("UNOS TACKE 1\n");
do
{
printf ( "X1=" ); scanf ( "%d", &i1 );
} while ( i1<1 || i1>M );
do
{
printf ( "Y1=" ); scanf ( "%d", &j1 );
} while ( j1<1 || j1>M );
/* Unos tacke 2 */
printf("UNOS TACKE 2\n");
do
{
printf ( "X2=" ); scanf ( "%d", &i2 );
} while ( i2<1 || i2>M );
do
{
printf ( "Y2=" ); scanf ( "%d", &j2 );
} while ( j2<1 || i2>M );
/*
OVDE TREBA FUNKCIJA ILI KOD KOJI RADI SA ARGUMENTIMA i1, j1, i2, j2,
(RECIMO PO ALGORITMU KOJI SI DOBIO), I DA UPISUJE JEDINICU:
*(*(L+KOORDINATA_X)+KOORDINATA_Y) = 1;
...TAMO GDE ALGORITAM KAZE.
*/
/* Ispis */
for (i=0; i<M; i++)
{
for ( j=0; j<M; j++ )
printf ("%d", *(*(L+i)+j));
putchar ('\n');
}
/* Unistavanje matrice */
for ( i=0; i<M; i++)
free( *(L+i) );
free ( L );
return 0;
}