Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi!
Cititi regulament postare forum inainte de a posta!
|
Lista Forumurilor Pe Tematici
|
Mihai Sprinceana | Inregistrare | Login
POZE MIHAI SPRINCEANA
Nu sunteti logat.
|
Nou pe simpatie: just_iulia din Giurgiu
 | Femeie 25 ani Giurgiu cauta Barbat 26 - 48 ani |
|
mihaispr
Administrator
 Inregistrat: acum 18 ani
Postari: 2142
|
|
Programul sursa il luati de aici:
Include si prezentarea proiectului.
Inainte de a rula programul cititi prezentarea proiectului.
Dupa ce faceti un test repetati optiunea 1 si 2 (de citire a matricii) apoi tastati iarasi 3 pentru a va calcula un nou indice de incrucisare si puneti alte coordonate decat primele testate(care erau 4 si 2 si care alegeau pixelul 0).Practic eu pot calcula indicele de incrucisare atat pt.pixeli albi(0) cat si pt.pixeli negri(1).
In cazul de fata veti pune x=2 si y=2(situatia in care alegeti un pixel 1 din imagine).
Al treilea test presupune repetarea optiunilor 1,2 si 3 si introduceti x=20 si y=20.
Va va afisa mesajul ca indicele de incrucisare nu poate fi calculat deoarece imaginea voastra binara 8*8 este depasita(20*20).
Iata codul sursa propriu-zis scris in C++:
/*Calculul indicelui de incrucisare ale unei imagini de test(imagine binara(alb-negru sau imagine cu 2 niveluri de gri)- data de o matrice avand valori binare 0 si 1,0 asociat pixelului alb,1 asociat pixelului negru*/
//comentariu pe o linie
/*comentariu dorit pe mai multe linii comentariu continuare etc etc */
#include<stdio.h> #include<conio.h> #include<process.h>
FILE* f;
int ok,a[10][10],i,j,opt,k,ii,jj,count,x,y;
//functia de citire a matricei din fisier void citire_mat() {clrscr(); for(j=0;j<=9;j++) a[0][j]=0; for(i=1;i<=9;i++) a[i][9]=0; for(j=8;j>=0;j--) a[9][j]=0; for(i=8;i>=1;i--) a[i][0]=0; f=fopen("index.txt","rt" );//deschidere pentru citire text-read text option for(i=1;i<=8;i++) //consider imaginea mea de 8*8 for(j=1;j<=8;j++) fscanf(f,"%d",&a[i][j]);//valorile sunt citite in fisierul index.txt fclose(f);//inchidere fisier printf("Matricea a fost citita din fisier" ); }
//functia de afisare a matricei pe ecran void afisare_mat() { clrscr(); for(i=1;i<=8;i++) { for(j=1;j<=8;j++) printf("%d ",a[i][j]); printf("\n" ); } }
int alege_coord(int a[10][10]) { printf("\nAbscisa este:" );scanf("%d",&x); printf("Ordonata este:" );scanf("%d",&y); return a[x][y]; }
//functia de calcul a indicelui de incrucisare float indice_incrucisare(int a[10][10],int ii, int jj) {int i,j,count=0; count=0; //initial nr de schimbari este 0 i=ii-1; j=jj-1; for(j=y-1;j<=y;j++) if(a[x-1][j]!=a[x-1][j+1]) count++; for(i=x-1;i<=x;i++) if(a[i][y+1]!=a[i+1][y+1]) count++; for(j=y+1;j>=y;j--) if(a[x+1][j]!=a[x+1][j-1]) count++; for(i=x+1;i>=x;i--) if(a[i][y-1]!=a[i-1][y-1]) count++; printf("Calcul indice incrucisare %f",(float)count/2); return (float)count/2;//intoarce valoarea indicelui de incrucisare al unui pixel }
void main(void) {clrscr(); ok=0; do { puts("\n\n0.Iesire program" ); puts("1.Citire matrice" ); puts("2.Afisare matrice" ); puts("3.Calcul indice incrucisare" ); printf("\nIntroduceti optiunea:" );scanf("%d",&opt); switch(opt) {case 1:citire_mat();break; case 2:afisare_mat();break; case 3:{ k=alege_coord(a);/*k-reprezinta variabila globala in care am ales punctul de coordonate (x,y) citit de la tastatura se poate calcula si pentru k=0 indicele de incrucisare*/ if(k==1 || k==0) count=indice_incrucisare(a,ii,jj); else if(x>8 && y>8) printf("\nIntroduceti alte coordonate" ); } break; } }while (opt!=0); }
|
|
| pus acum 18 ani |
|