Professional Documents
Culture Documents
Raport
Lucrarea de laborator Nr.1
la Matematica Discreta
Chişinău, 2021
Lucrare de laborator Nr.1
Listing-ul programului
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void granita(int n)
{int i;
printf("М");
for (i=0;i<n;i++) {printf("НННО");}
printf("ННН№\n");
}
void antet_list_adiac(int n)
{int i, pin=0, dupa=0;
printf("ЙНННЛ");
for (i=0;i<n;i++) {printf("ННН");}
printf("ННН»\n");
printf("є Xiє");
pin=((3*(n+1))-3)/2;
dupa=((n+1)*3)-3-pin;
for (i=0;i<pin;i++) printf(" ");
printf("Fxi");
for (i=0;i<dupa; i++) printf(" ");
printf("є\n");
}
void granita_list(int n)
{int i;
printf("МНННО");
for (i=0;i<n+1;i++) {printf("ННН");}
printf("№\n");
}
printf("ИНННК");
for (i=0;i<n+1;i++) {printf("ННН");}
printf("ј\n");
}
//--------------lista de adiacenta----------
//functions
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include"lab1/fundiscr.cpp"
#include"lab1/afisare.cpp"
int main()
{int **matinc=NULL, **matadiac=NULL, **listadiac=NULL;
int n=0, m=0;
int nr,temp;
goto definire;
Again:
while (1) {
textcolor(11);
clrscr();
cprintf(" *****Meniu****");cprintf("\r\n");
cprintf(" 1. Definirea grafului");cprintf("\r\n");
cprintf(" 2. Afisarea grafului"); cprintf("\r\n");
cprintf(" 0. Iesire");cprintf("\r\n");
scanf("%d", &nr);
switch(nr) { //afisare
definire:
case 1:textcolor(10);clrscr();
cprintf(" ***Alegeti modul de definire***");cprintf("\r\n");
cprintf(" 1. Matricea de adiacenta");cprintf("\r\n");
cprintf(" 2. Matricea de incidenta");cprintf("\r\n");
cprintf(" 3. Lista de adiacenta");cprintf("\r\n");
scanf("%d", &nr);
switch(nr) {
case 1:
temp=ferifymem(matadiac,"Matricea de adiacenta",n);
if (temp==0) {puts("Nu s-a dorit introducerea.."); getch();break;}
clrscr();
puts("Dati numarul de virfuri");
virfuri1:
scanf("%d", &n); if(n<2) {puts("Dati numarul de virfuri n>1"); goto
virfuri1;}
matadiac=aloc(n,n);
if (!matadiac) {puts("Nu a fost alocata memorie pentru Matrice, lucrul
va fi intrerupt...");
getch(); break;}
zerografiere(matadiac,n,n);
m=input_mat_adiac(matadiac,n);
puts("Matricea de adiacenta a fost introdusa...");
printf("S-au format %d arcuri\n",m);
getch();
listadiac=aloc(n,n+1);
if (!listadiac) {puts("Lista de adiacenta nu va fi disponibila, lucrul
va fi intrerupt...");
getch(); break;}
zerografiere(listadiac,n,n+1);
mat_adiac_list_adiac(matadiac,listadiac,n);
matinc=aloc(m,n);
if (!matinc){puts("Matricea de incidenta nu va disponibila, lucrul va
fi intrerupt...");getch();break;}
zerografiere(matinc,m,n);
list_adiac_mat_inc(listadiac,matinc,n);
break;
case 2:
temp=ferifymem(matinc,"Matricea de incidenta",m);
if (temp==0) {puts("Nu s-a dorit introducerea.."); getch();break;}
clrscr();
puts("Dati numarul de virfuri");
virfuri2:
scanf("%d", &n); if(n<2) {puts("Dati numarul de virfuri n>1"); goto
virfuri2;}
arce:
puts("Dati numarul de arce"); scanf("%d", &m);
if(n==2&&m>4) {puts("Ati introdus un numar prea mare de arce, incercati
din nou...");getch();goto arce;}
if(m>n*2+n) {puts("Ati introdus un numar prea mare de arce, incercati
din nou..."); getch(); goto arce;}
matinc=aloc(m,n);
if (!matinc) {puts("Nu a fost alocata memorie pentru Matrice, lucrul va
fi intrerupt...");
getch();
break;}
zerografiere(matinc,m,n);
input_mat_inc(matinc,n,m);
puts("Matricea de incidenta a fost introdusa corect"); getch();
matadiac=aloc(n,n);
if (!matadiac){puts("Matricea de adiacenta nu va disponibila, lucrul nu
va continua...");getch();break;}
zerografiere(matadiac,n,n);
mat_inc_adiac(matinc,matadiac,n,m);
listadiac=aloc(n,n+1);
if (!listadiac) {puts("Lista de adiacenta nu va fi disponibila, lucrul
va fi intrerupt...");getch(); break;}
zerografiere(listadiac,n,n+1);
mat_adiac_list_adiac(matadiac,listadiac,n);
break;
case 3:
temp=ferifymem(listadiac,"Lista de adiacenta",n);
if (temp==0) {puts("Nu s-a dorit introducerea.."); getch();break;}
clrscr();
puts("Dati numarul de virfuri");
virfuri3:
scanf("%d",&n); if(n<2) {puts("Dati numarul de virfuri n>1"); goto
virfuri3;}
listadiac=aloc(n,n+1);
if (!listadiac) {puts("Nu a fost alocata memorie pentru Lista, lucrul
va fi intrerupt...");
getch(); break;}
zerografiere(listadiac,n,n+1);
m=input_lis_adiac(listadiac,n);
printf("Lista de adiacenta a fost introdusa, sau obtinut %d arcuri",m);
matinc=aloc(m,n);
if (!matinc){puts("Matricea de incidenta nu va disponibila, lucrul nu
va continua...");getch();break;}
zerografiere(matinc,m,n);
list_adiac_mat_inc(listadiac,matinc,n);
matadiac=aloc(n,n);
if (!matadiac){puts("Matricea de adiacenta nu va disponibila, lucrul nu
va continua...");getch();break;}
zerografiere(matadiac,n,n);
mat_inc_adiac(matinc,matadiac,n,m);
getch();break;
} break;
case 2:
while (1) {
textcolor(13); clrscr();// afisare
cprintf(" ***Alegeti modul de afisare***");cprintf("\r\n");
cprintf(" 1. Matricea de adiacenta");cprintf("\r\n");
cprintf(" 2. Matricea de incidenta");cprintf("\r\n");
cprintf(" 3. Lista de adiacenta");cprintf("\r\n");
cprintf(" 4. Inapoi");cprintf("\r\n");
scanf("%d", &nr);
switch(nr) {
case 1:
if (!matadiac) {puts("Matricea nu a fost definita, definiti-o intii de
toate..."); getch(); break;}
clrscr();
puts(" Matricea de adiacenta");
afis_mat_adiac(matadiac,n);
getch();
break;
case 2:
if (!matinc) {puts("Matricea nu a fost definita, definiti-o intii de
toate..."); getch(); break;}
clrscr();
puts(" Matricea de incidenta");
afis_mat_inc(matinc,n,m);
getch();
break;
case 3:
if (!listadiac) {puts("Lista nu a fost definita, definiti-o intii de
toate..."); getch(); break;}
clrscr();
puts(" Lista de adiacenta");
afis_list_adiac(listadiac,n);
getch();
break;