Documente Academic
Documente Profesional
Documente Cultură
h>
#include <stdlib.h>
#include <conio.h>
typedef struct tnod
{
int
nr;
int
ap;
inserare(v->pdr, val);
else
v->ap++;
}
if (n->pdr)
inlocuire_nod(n->pdr);
else
{e->nr=n->nr;
e->ap=n->ap;
e=n;
a=a->pdr;
free(e);
}
else if (!a->pdr){
a=a->pstg;
free(e);
}
else
inlocuire_nod(a->pstg);
}
}
if (nel%7==0)
printf("\n");
if (v->pdr)
listare_SRD(v->pdr);
}
}
main()
{
ARB *pl;
int valoare;
pl = NULL;
clrscr();
printf("Se construieste un arbore de cautare si permite elimarea unui nod.\n");
printf ("\nIntroduceti un sir de valori, terminat cu EOF.\n");
printf ("Valoare:");
while ( scanf ("%d", &valoare) != EOF) {
inserare (pl,valoare);
printf ("Valoare:");
}
/* afisare arbore */
printf("\nListare arbore SRD:\n");
listare_SRD (pl);
printf ("NULL\n");
printf("\nValoare de eliminat: ");
scanf("%d", &valoare);
elimina_nod(pl, valoare);
listare_SRD (pl);
printf ("NULL\n");
printf("Terminare dupa apasarea unei taste!\n");
getch();
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct tnod
{
int
nr;
int
ap;
int nel = 0;
}
}
main()
{
ARB *pl;
int valoare;
pl = NULL;
clrscr();
printf("Dimensiune structura: %d\n", sizeof (struct tnod));
printf ("\nIntroduceti un sir de valori, terminat cu 0.\n");
printf ("Valoare:");
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct tnod
{
int
nr;
int
ap;
if (v)
{printf("%3d(%2d) -> ", v->nr, v->ap);
nel++;
if (nel%7==0)
printf("\n");
if (v->pstg)
listare_RSD (v->pstg);
if (v->pdr)
listare_RSD(v->pdr);
}
}
void listare_SRD (ARB *v){
if (v)
{if (v->pstg)
listare_SRD (v->pstg);
printf("%3d(%2d) -> ", v->nr, v->ap);
nel++;
if (nel%7==0)
printf("\n");
if (v->pdr)
listare_SRD(v->pdr);
}
}
main()
{
ARB *pl;
int valoare;
pl = NULL;
clrscr();
printf("Dimensiune structura: %d\n", sizeof (struct tnod));
printf ("\nIntroduceti un sir de valori, terminat cu 0.\n");
printf ("Valoare:");
scanf ("%d", &valoare);
while ( valoare ) {
inserare (pl,valoare);
printf ("Valoare:");
scanf ("%d", &valoare);
}
listare_RSD (pl);
printf ("NULL\n");
nel=0;
printf("\nListare SRD:\n");
listare_SRD (pl);
printf ("NULL\n");
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define LUNGMAX 20
struct st_arbore
{
char *cuvant;
int nrap;
struct st_arbore *st, *dr;
};
int nle=0;
if (arb->st)
actualizare (arb->st, cuv);
else
{
arb->st=(struct st_arbore *) malloc (sizeof(struct st_arbore)) ;
arb=arb->st;
arb->cuvant=cuv;
arb->nrap=1;
arb->st=NULL;
arb->dr=NULL;
}
{
arb->dr=(struct st_arbore *) malloc (sizeof(struct st_arbore)) ;
arb=arb->dr;
arb->cuvant=cuv;
arb->nrap=1;
arb->st=NULL;
arb->dr=NULL;
}
else
arb->nrap=arb->nrap + 1;
}
{
if (arbo!=NULL)
{
tiparire_arbore (arbo->st) ; /* tiparire arbore stanga */
printf ("%s (ap: %d)\n", arbo -> cuvant, arbo -> nrap ) ;
nle++;
if (nle%24==0){
printf("Apasati o tasta pentru a continua afisarea!\n");
getch();
}
tiparire_arbore (arbo->dr) ;
}
}
void main ()
{struct st_arbore *arb;
char cuvant[LUNGMAX] ;
clrscr();
printf("Introduceti cuvinte, care vor fi apoi tiparite in ordine"
" alfabetica:\n");
gets(cuvant) ;
arb=(struct st_arbore *) malloc (sizeof(struct st_arbore)) ;
arb->cuvant=strdup(cuvant);
arb->nrap=1;
arb->st=NULL;
arb->dr=NULL;
gets(cuvant) ;
while (strcmp(cuvant, ""))
{actualizare (arb, strdup(cuvant));
gets(cuvant);
}
printf("Lista ordonata a cuvintelor (numar aparitii):\n");
tiparire_arbore (arb);
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define SIR_VID ""
#define DIMCV 25
struct st_cuvant
{
char
*cuvant;
ncl++;
if (ncl%5==0)
printf("\n");
primu=primu->urmator;
free(ptr);
}
printf ("NULL\n");
}
void main()
{
struct st_cuvant *primul, *ultimul;
char cuv[DIMCV];
clrscr();
printf("Programul construieste o lista de tip coada cu cuvinte de la"
" tastatura\n");
printf("Programul ia sfarsit cu un cuvant vid, adica RETURN,"
" la inceput de linie.\n");
printf("Cuvant de introdus in lista:");
gets(cuv);
primul=(struct st_cuvant *) malloc(sizeof(struct st_cuvant));
primul->cuvant=strdup(cuv);
primul->urmator=NULL;
ultimul=primul;
printf("Cuvant de introdus in lista:");
gets(cuv);
#include <stdio.h>
#include <conio.h>
#define MaxC
10
struct {
ElTip elem [MaxC];// spatiu pentru elem. cozii
int
prim, ultim;
} TCoada, *ACoada;
printf("%s\n", meserr);
}
pc->prim=0;
pc->ultim=MaxC-1;
}
{pc->ultim=IncIndexC(pc->ultim);
pc->elem[pc->ultim]=el;
}
if (CoadaGoala (pc))
{eroare ("Coada Goala !!!");
return 0;
}
else
return pc->elem[pc->prim];
}
TCoada c=*pc;
ACoada pt=&c;
int nvl=0;
if (CoadaGoala(pt))
eroare("Coada Goala !!!\n");
else
while (!CoadaGoala (pt))
{printf ("%d -> ", CapCoada (pt));
ScotElC (pt);
if (++nvl % 10 == 0)
printf("\n");
}
printf("NULL\n");
if (CoadaPlina (pc)){
eroare("Coada PLINA !!! ELIMINATI.....\n");
break;
}
printf("Introd. nr. (CTRL-Z, Enter-Stop Introd): ");
}
fflush(stdin);
break;
case 'e':
case 'E': optiune[0]='D';
while ( !CoadaGoala (pc) &&
(optiune[0] == 'D' || optiune[0] == 'd') )
{printf ("Se extrage primul element din coada: %d\n",
CapCoada (pc));
ScotElC (pc);
if (!CoadaGoala (pc)){
printf("Continuati extragerea (Da/Nu): ");
gets(optiune);
fflush(stdin);
}
}
if (CoadaGoala (pc))
printf("Coada Goala !!! INTRODUCETI ELEMENTE \n");
break;
case 'c':
case 'C': if (!CoadaGoala (pc))
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define SIR_VID ""
#define DIMCV 25
struct st_cuvant
{
char
*cuvant;
{
vr->cuvant=strdup(sirc);
vr->urmator=NULL;
ultim->urmator=vr;
}
return (vr);
}
{
struct st_cuvant *ptr;
while (primu)
{ptr=primu;
void main()
{
struct st_cuvant *primul, *ultimul;
char cuv[DIMCV];
clrscr();
printf("Programul construieste o lista de tip coada cu cuvinte de la"
" tastatura\n");
printf("Programul ia sfarsit cu un cuvant vid, adica RETURN,"
" la inceput de linie.\n");
printf("Cuvant de introdus in lista:");
gets(cuv);
primul=ultimul=NULL;
while (strcmp(cuv, SIR_VID))
{
if(!(ultimul=atasare_coada (ultimul, cuv)))
break;
if (!primul)
primul=ultimul;
printf("Cuvant de introdus in lista:");
gets(cuv);
}
extragere (primul);
}
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
struct s_stiva
{
int
valoare;
int nr_aparitii;
struct s_stiva *urmator;
};
struct s_stiva
*ptr_stiva;
if (ultimul==NULL)
{
ultimul=(struct s_stiva *) malloc(sizeof(struct s_stiva));
if (ultimul==NULL)
{printf("Memorie plina!\n");
return(NULL);
}
else
{
ultimul->valoare=val;
ultimul->nr_aparitii=1;
ultimul->urmator=NULL;
return(ultimul);
}
}
else
{
ptr_stiva=ultimul;
while(ptr_stiva->valoare!=val && ptr_stiva->urmator!=NULL)
ptr_stiva=ptr_stiva->urmator;
if(ptr_stiva->valoare==val)
{ptr_stiva->nr_aparitii++;
return(ultimul);
}
else
{ptr_stiva=(struct s_stiva *)malloc(sizeof(struct s_stiva));
if (ptr_stiva==NULL)
{printf("Mmeorie plina!\n");
return(NULL);
}
else
{ptr_stiva->valoare=val;
ptr_stiva->nr_aparitii=1;
ptr_stiva->urmator=ultimul;
return(ptr_stiva);
}
}
}
}
int nr_val_linie = 0;
while (ultim!=NULL)
{
printf("%2d(%d)-> ", ultim->valoare, ultim->nr_aparitii);
ultim=ultim->urmator;
nr_val_linie++; /* contor pentru nr. de valori afisate pe linie */
if (nr_val_linie%8==0)
printf("\n");
}
printf ("\n");
}
void main()
{
struct s_stiva *ultim=NULL;
int numar;
clrscr();
printf("Prg. construieste si afiseaza o stiva de nr. intregi, distincte.\n");
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
struct s_coada
{
int
valoare;
if (primul->urmator==NULL){
primul->urmator=(struct s_coada *)malloc(sizeof(struct s_coada));
if(!primul->urmator)
{printf("Memorie plina!!!\n");
exit(1);
}
primul=primul->urmator;
primul->valoare=val;
primul->urmator=NULL;
}
else
adaug_coada(primul->urmator, val);
}
afisez_coada(primul->urmator);
}
}
void main()
{
struct s_coada *prim=NULL;
int numar;
clrscr();
printf("Prg. construieste si afiseaza o coada de nr. intregi, distincte.\n");
printf("Introducerea se termina cu EOF(CTRL-Z, ENTER.\n");
printf("Introduceti numar: ");
scanf("%d", &numar);
prim=(struct s_coada *)malloc(sizeof(struct s_coada));
if(!prim)
{printf("Memorie plina!!!\n");
exit(1);
}
prim->valoare=numar;
prim->urmator=NULL;
printf("Introduceti numar: ");
while(scanf("%d", &numar)!=EOF)
{adaug_coada(prim, numar);
printf("Introduceti numar: ");
}
afisez_coada(prim);
printf("NULL\n");
eliberare_spatiu(prim);
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct s_arbore
{
int
valoare;
int nr_ap;
struct s_arbore *stg;
struct s_arbore *dr;
};
int maxy = 1;
numar, gasit_poz_ins;
parb = NULL;
printf ("Valorile intregi de introdus in arbore:\n");
printf ("Valoare = ");
scanf ("%d", &numar);
while (numar)
{
if (parb == NULL)
{
parb = (struct s_arbore *) malloc(sizeof(struct s_arbore));
parb -> valoare = numar;
parb -> nr_ap = 1;
parb -> stg = NULL;
parb -> dr = NULL;
}
else
{gasit_poz_ins = 0;
pelem = parb;
while (pelem != NULL && !gasit_poz_ins)
if (numar == pelem->valoare)
{pelem->nr_ap++; break;}
else if(numar < pelem->valoare)
if (pelem->stg)
pelem = pelem->stg;
else
{gasit_poz_ins = 1;
pelem->stg=(struct s_arbore *)
malloc (sizeof(struct s_arbore));
pelem = pelem->stg;
}
else
if (pelem->dr)
pelem = pelem->dr;
else
{gasit_poz_ins = 1;
pelem->dr=(struct s_arbore *)
malloc (sizeof(struct s_arbore));
pelem = pelem->dr;
}
if (pelem == NULL)
exit(0);
if (gasit_poz_ins)
{pelem->valoare = numar;
pelem->nr_ap = 1;
pelem-> stg = NULL;
pelem-> dr = NULL;
}
}
printf ("Valoare = ");
scanf ("%d", &numar);
}
return ( parb );
}
void display_arbore (struct s_arbore *start, int pas, int p_x, int p_y)
{
if ( start != NULL )
{
display_arbore (start->stg, pas/2, p_x-pas/2, p_y+2);
gotoxy (p_x, p_y);
printf ("(%d,%d)", start->valoare, start->nr_ap);
gotoxy (wherex()-7, p_y+1);
printf("/
\\");
}
}
int l;
if (parb == NULL)
l = 0;
else
l = maxim(inalt(parb->stg), inalt(parb->dr)) + 1;
return l;
}
void display_arbore (struct s_arbore *start, int p_niv, int p_x, int p_y);
struct s_arbore *caut_val (struct s_arbore *p_arb, int numar_cautat,
int *p_pozitie);
struct s_arbore *start_arb, * ptr_valoare;
int *nivel, val_cautata, niv, x, y;
char *pcuv;
clrscr();
start_arb = constr_arbore();
niv = 40; x = 37; y = 1;
printf("Pentru afisare arbore apasati o tasta.\n");
getch();
clrscr();
display_arbore (start_arb, niv, x, y);
if ( start_arb == NULL )
printf ("Arbore vid de valori.\n");
else
{
gotoxy(1,maxy+1);
pcuv = "";
printf("inalt = %d, inalt_min = %d\n", inalt(start_arb), inalt_min(start_arb));
if (inalt(start_arb)-inalt_min(start_arb) > 1)
pcuv = "nu";
printf("Arborele %s este echilibrat.\n", pcuv);
printf ("Valoarea de cautat in arbore :");
scanf ("%d", &val_cautata);
*nivel = 0;
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define DIM_MAX 100
struct s_arbore
{
int
valoare;
int nr_ap;
struct s_arbore *stg;
struct s_arbore *dr;
};
int maxy = 1;
int nr_nod[10], niv=0, max_niv=0;
int nr_frunze=0;
parb = NULL;
printf ("Valorile intregi de introdus in arbore:\n");
printf ("Valoare(%d)= ", ind++);
scanf ("%d", &numar);
while (numar)
{
if (parb == NULL)
{
parb = (struct s_arbore *) malloc(sizeof(struct s_arbore));
parb -> valoare = numar;
parb -> nr_ap = 1;
}
if (pelem == NULL)/* daca nu mai e spatiu -> exit */
exit(0);
if (gasit_poz_ins)
{pelem->valoare = numar;
pelem->nr_ap = 1;
pelem-> stg = NULL;
pelem-> dr = NULL;
}
}
printf ("Valoare(%d)= ", ind++);
scanf ("%d", &numar);
}
return ( parb );
}
void display_arbore (struct s_arbore *start, int pas, int p_x, int p_y)
{int p;
if ( start != NULL )
{p=p_x-pas/2;
if (p<1)
p=1;
display_arbore (start->stg, pas/2, p, p_y+2);
gotoxy (p_x, p_y);
printf ("(%d,%d)", start->valoare, start->nr_ap);
p=wherex()-7;
if (p<1)
p=1;
gotoxy (p, p_y+1);
printf("/
\\");
int nr_nod;
if (a==NULL)
nr_nod = 0;
else
nr_nod = nr_nod_arb(a->stg) + nr_nod_arb(a->dr) + 1;
return (nr_nod);
}
if (a) {
for (i=0;i<10;i++)
nr_nod[i]=0;
clrscr();
arb = constr_arbore();
dim = 40; x = 37; y = 1;
printf("Pentru afisarea primului arbore apasati o tasta.\n");
getch();
clrscr();
display_arbore (arb, dim, x, y);
gotoxy(1, maxy+1);
printf("Numarare de noduri din arbore. Apasati o tasta!\n");
getch();
printf("\nNmuar de noduri: %d\n", nr_nod_arb(arb));
printf("Frunzele din arbore sunt :\n\t");
nr_frunze_arb(arb);
printf("\nNmuar de frunze: %d\n", nr_frunze);
max_nod(arb);
for (i=0; i<=max_niv; i++)
if (max_noduri<nr_nod[i])
{i_max = i;
max_noduri=nr_nod[i];
}
printf("Nivelul %d contine numarul maxim de noduri (frunze) %d\n",
i_max,nr_nod[i_max]);
printf("\nApasati o tasta pentru a termina programul!!!!\n");
getch();
#include <stdio.h>
struct st_litera
{
char
car;
break;
vr->car=c;
if(pl->pred==pl)
{vr->pred=vr->urm=pl;
pl->urm=pl->pred=vr;
}
else
{vr->urm=pl;
vr->pred=pl->pred;
pl->pred->urm=vr;
pl->pred=vr;
}
}
}
if (plc->urm!=plc)
printf("%c (primul).\n", plc->urm->car);
else
printf("NULL");
}
numar = 0;
if (start->car == curent->car)
numar++;
curent=curent->urm;
}
return (numar);
}
void main()
{
#include <stdio.h>
#include <stdlib.h>
struct tnod
{
int
valoare;
};
main()
{
struct tnod *pl;
int valoare;
pl = NULL;
printf ("Introduceti un sir de valori, terminat cu 0.\n");
printf ("Valoare:");
scanf ("%d", &valoare);
while ( valoare ) {
adaugare (pl,valoare);
printf ("Valoare:");
scanf ("%d", &valoare);
}
listare (pl);
printf ("NULL\n");
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct st_numar {
int numar;
struct st_numar *next;
};
int nvl=0;
void main()
{
struct st_numar *inserare (struct st_numar *, int );
struct st_numar *prim, *vr;
int nr;
clrscr();
primul=vr;
else
anterior->next=vr;
return (primul);
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define SIR_VID ""
#define DIMC 25
int nvl=0;
struct st_cuvant
{
char
*cuvant;
};
int atasare (struct st_cuvant * vr)
{
{
vr->urmator=(struct st_cuvant *)malloc(sizeof(struct st_cuvant));
if (vr->urmator==NULL)
return (0);
else
{
gets(cuv);
if (!strcmp(cuv,SIR_VID))
{vr->urmator=NULL;
return(0);
}
else
{if(!(pc=strdup(cuv)))
{vr->urmator=NULL;
return(0);
}
else
{
vr=vr->urmator;
vr->urmator = NULL;
vr->cuvant=pc;
return (1);
}
}
}
}
else
return(atasare (vr->urmator));
}
void main()
{
struct st_cuvant *primul;
char c[DIMC];
clrscr();
printf("Programul construieste o lista de tip coada cu cuvinte de la"
" tastatura\n");
printf("Programul ia sfarsit cu un cuvant vid, adica RETURN,"
" la inceput de linie.\n");
gets(c);
primul->cuvant=strdup(c);
primul->urmator=NULL;
while (atasare(primul));
afisare (primul);
printf("NULL\n");
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define SIR_VID ""
#define DIMC 20
int nvl=0;
struct st_cuvant
{
char
cuvant[DIMC];
char cuvcit[DIMC];
if (vr->urmator==NULL)
{
vr->urmator=(struct st_cuvant *)malloc(sizeof(struct st_cuvant));
if (vr->urmator==NULL)
return (0);
else
{gets(cuvcit);
if (!strcmp(cuvcit,SIR_VID))
{vr->urmator=NULL;
return(0);
}
else
{
vr=vr->urmator;
vr->urmator=NULL;
strcpy(vr->cuvant, cuvcit);
return (1);
}
}
}
else
return(atasare (vr->urmator));
}
void main()
{
struct st_cuvant *primul;
clrscr();
#include <stdio.h>
struct st_lista
{
char
car;
primul = NULL;
printf("\nProgramul construieste si afiseaza o stiva de caractere.\n");
printf("Introduceti caractere (CTRL-Z, Enter-pentru sfarsit):\n");
fflush(stdin);
while ((c=getchar()) != EOF)
if (c!='\n')
{vr=(struct st_lista *) malloc(sizeof(struct st_lista));
if (vr == NULL)
{
}
vr->car=c;
vr->urmator=primul;
primul=vr;
}
vr=primul;
#include <stdio.h>
#include <conio.h>
#define MaxS
10
struct {
ElTip elem [MaxS];
int
sp;
} TStiva, *AStiva;
rs->sp=-1;
}
if (StivaPlina (rs))
eroare ("Stiva Plina !!!");
else
{rs->sp=rs->sp+1;
rs->elem[rs->sp]=el;
}
ElTip e;
if (StivaGoala (rs))
{eroare ("Stiva Goala !!!");
return 0;
}
else
{e=rs->elem[rs->sp];
rs->sp=rs->sp-1;
return e;
}
}
TStiva s=*rs;
AStiva pt=&s;
int nvl=0;
if (pt->sp == -1)
eroare("Stiva Goala !!!\n");
else
gets(optiune);
while (optiune[0] != '\0' && optiune[0] != 's' && optiune[0] != 'S'){
switch(optiune[0]){
case 'i':
case 'I':if (StivaPlina(rs)){
eroare("\n\tSTIVA PLINA !!! ELIMINATI...\n");
break;}
printf("Introd. nr. (CTRL-Z, Enter-Stop Introd): ");
while (scanf("%d", &n) == 1 && !StivaPlina(rs)){
Push (rs, n);
if (StivaPlina (rs)){
eroare("Stiva PLINA !!! ELIMINATI.....\n");
break;
}
printf("Introd. nr. (CTRL-Z, Enter-Stop Introd): ");
}
fflush(stdin);
break;
case 'e':
case 'E': optiune[0]='D';
while ( !StivaGoala (rs) &&
(optiune[0] == 'D' || optiune[0] == 'd') )
{printf ("Se extrage primul element din stiva: %d\n",
CapStiva (rs));
Pop (rs);
if (!StivaGoala (rs)){
#include <stdio.h>
#include <conio.h>
#define MaxS
10
struct {
ElTip elem [MaxS];// spatiu pentru elem. stivei
int
sp;
} TStiva, *AStiva;
rs->sp=-1;
}
if (StivaPlina (rs))
eroare ("Stiva Plina !!!");
else
{rs->sp=rs->sp+1;
rs->elem[rs->sp]=el;
}
ElTip e;
if (StivaGoala (rs))
{eroare ("Stiva Goala !!!");
return 0;
}
else
{e=rs->elem[rs->sp];
rs->sp=rs->sp-1;
return e;
}
}
int psl=rs->sp;
int nvl=0;
if (rs->sp == -1)
eroare("Stiva Goala !!!\n");
else
while (psl != -1)
{printf ("%d -> ", rs->elem[psl]);
psl--;
if (++nvl % 10 == 0)
printf("\n");
}
printf("NULL\n");
}
printf("\nOptiuni Int, Ext, Afis stiva, Cap stiva, Poz sp, Stop: ");
gets(optiune);
}
}
#include <stdio.h>
struct st_lista
{
char
car;
break;
}
vr->car=c;
vr->urmator=primul;
primul=vr;
}
vr=primul;
#include<stdio.h>
#include <conio.h>
void cerne (double a[], int l, int r)
{
int i,j;
double x;
i=l; j=2*i; x=a[i];
while (j<=r){
if (j<r)
if (a[j]<a[j+1])
j++;
if (x>a[j])
goto gata;
a[i]=a[j];
i=j; j=2*i;
}
gata: a[i]=x;
}
while(r>1)
{x=a[1];
a[1]=a[r];
a[r]=x;
r--;
cerne(a,l,r);
for( i = 1 ; i <= n ; ++i ){
printf (" %0.lf ", a[i]);
if (i%10==0)
printf("\n");
}
printf("\nApasa o tasta pentru continuare program!\n");
getch();
}
}
void main(void)
{
double sir[1000];
int ne, i;
clrscr();
printf("HeapSort pentru ordonare crescatoare vector.\n");
printf ("Numarul de elemente: ");
scanf ("%d",&ne);
for ( i = 1 ; i <= ne ; ++i)
{
#include<stdio.h>
#include <conio.h>
void cerne (double a[], int l, int r)
{
int i,j;
double x;
i=l; j=2*i; x=a[i];
while (j<=r){
if (j<r)
if (a[j]>a[j+1])
j++;
if (x<a[j])
goto gata;
a[i]=a[j];
i=j; j=2*i;
}
gata: a[i]=x;
}
}
while(r>1)
{x=a[1];
a[1]=a[r];
a[r]=x;
r--;
cerne(a,l,r);
for( i = 1 ; i <= n ; ++i ){
printf (" %0.lf ", a[i]);
if (i%10==0)
printf("\n");
}
printf("\nApasa o tasta pentru continuare program!\n");
getch();
}
}
void main(void)
{
double sir[1000];
int ne, i;
clrscr();
printf ("Numarul de elemente: ");
scanf ("%d",&ne);
for ( i = 1 ; i <= ne ; ++i)
{
#include<stdio.h>
#include <conio.h>
int ncomp=0, nins=0;
{
double x;
int i, j, s, d, m;
for (i=1; i<n; ++i)
{
x=a[i]; s=0; d=i-1;
while (s <= d)
{ncomp++;
m=(s+d)/2;
if (x < a[m])
d=m-1;
else
s=m+1;
}
for (j=i-1; j>=s; --j, nins++)
a[j+1]=a[j];
a[s]=x;
}
}
void main(void){
double sir[100]; int ne,i;
clrscr();
printf("Numar elemente:");
scanf("%d", &ne);
for(i=0; i<ne; i++)
{
printf("sir(%d)= ", i+1);
scanf("%lf", &sir[i]);
}
printf("Sirul ordonat este: \n");
sort_ins_binara(sir , ne);
for (i=0;i<ne;i++)
{
printf(" sir (%2d) = %lf \n", i+1, sir[i]);
if ((ne+1)%4==0)
printf("\n");
}
printf("\n");
printf("Ordonarea s-a realizat prin %d comparatii si %d deplasari\n",
ncomp, nins);}
#include <stdio.h>
#include <conio.h>
int ncomp=0, nins=0;
void main()
{
double sir[100];
int ne, i;
clrscr();
printf("Numar elemente:");
scanf("%d", &ne);
for(i=0; i<ne; i++)
{
printf("sir(%d)= ", i+1);
scanf("%lf", &sir[i]);
}
sort_ins_direct (sir, ne);
printf("\n Sirul ordonat:\n");
for(i=0; i<ne; i++)
{
printf(" sir(%d)=%5.2lf ", i+1, sir[i]);
if ( (i+1) %5 == 0 )
printf("\n");
}
printf("\n");
printf("Ordonarea s-a realizat prin %d comparatii si %d deplasari\n",
ncomp, nins);}
#include <stdio.h>
#include <conio.h>
#define DIM 20
if (v[p]>v[q]){
aux=v[p];
v[p]=v[q];
v[q]=aux;
}
}
else{
m=(p+q)/2;
MergeSort(v, p, m);
MergeSort(v, m+1, q);
Interclasare(v, p, q, m);
}
}
}
if (i <= m)
for (j=i; j<=m; j++){
u[k]=v[j];
k++;
}
else
for (i=j; i<=q; i++){
u[k]=v[i];
k++;
}
k=0;
for (i=p; i<=q; i++){
v[i]=u[k];
k++;
}
free(u);
}
void main()
#include<stdio.h>
#include<conio.h>
#define DIM 100
{i=s; j=d;
x=a[(s+d)/2];
do
{
while (a[i]<x) i++, ncomp++;
while (a[j]>x) j--, ncomp++;
if (i<=j)
{t=a[i];
a[i]=a[j];
a[j]=t;
i++; j--;
ninv++;
}
} while(i<=j);
if (i<d){
is++;
stiva[is].s=i;
stiva[is].d=d;
}
d=j;
} while (s<d);
}while (is>0);
}
void main(void)
{int n;
VECTOR v;
clrscr();
printf("Programul ordoneaza (sorteaza) un vector cu alg. QuickSort.\n");
printf("Dimensiune vector, n=");scanf("%d", &n);
cit_vect(n, v);
QuickSortit (v, n);
printf("\nVectorul ordonat este:\n");
scrie_vect(n, v);
printf("Sortarea s-a realizat dupa %d comparatii si %d inversiuni\n",
ncomp, ninv);
getch();
}
#include<stdio.h>
#include<conio.h>
#define DIM 100
m=(s+d)/2;
x=a[m];
do
{while (a[i]<x) i++, ncomp++;
while (a[j]>x) j--, ncomp++;
if (i<=j)
{temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;
ninv++;
}
}while(i<=j);
if(s < j) QuickSort(a, s, j);
if(i < d) QuickSort(a, i, d);
}
void main(void)
{int n;
VECTOR v;
clrscr();
printf("Programul ordoneaza (sorteaza) un vector cu alg. QuickSort.\n");
printf("Dimensiune vector, n=");scanf("%d", &n);
cit_vect(n, v);
QuickSort(v, 0, n-1);
#include<stdio.h>
#include <conio.h>
int ncomp=0, ninv=0;
void sort_sel_direct ( double a[], int n )
{
double x;
int i, j, k;
for ( i = 0 ; i < n-1 ; ++i )
{
k = i;
x = a[i];
for ( j = i+1 ; j < n ; ++j, ncomp++ )
if (a[j] < x)
{
k = j;
x = a[k];
}
a[k] = a[i];
a[i] = x;
ninv++;
}}
void main()
{
double sir[100];
int ne,i, nl=0;
clrscr();
printf("Numar elemente:");
scanf("%d",&ne);
for(i=0;i<ne;i++)
{
printf("sir(%d)=",i+1);
scanf("%lf",& sir[i]);
}
sort_sel_direct(sir,ne);
for(i=0;i<ne;i++)
printf(" sir(%2d)=%5.1lf",i+1,sir[i]);
nl++;
if ( nl % 5 == 0 )
printf("\n"); }
printf("\n");
#include<stdio.h>
#include<conio.h>
typedef int VECTOR[30];
int ncomp=0, ninv=0; /* numar de comparatii si inversiuni/ deplasari */
void cit_vect(int n, VECTOR v)
{int i;
for(i=0; i<n; i++)
{printf("v[%d]=", i+1);
scanf("%d", &v[i]);}
}
do
{for (i=s; i<=d; i++, ncomp++)
if (v[i] > v[i+1])
{t=v[i];
v[i]=v[i+1];
v[i+1]=t;
k=i;
ninv++;}
d=k-1;
for (i=d; i>=s; i--, ncomp++)
if (v[i+1] < v[i])
{t=v[i];
v[i]=v[i+1];
v[i+1]=t;
k=i;
ninv++;}
s=k+1;
}while(s <= d);
}
void main(void)
{int n;
VECTOR v;
clrscr();
printf("\nProgramul ordoneaza (sorteaza) un vector, metoda \"Shaker\".\n");
printf("\tDimensiune vector, n= ");scanf("%d",&n);
cit_vect(n,v);
shaker(n,v);
printf("\nSirul ordonat este:\n");
scrie_vect(n,v);
printf("Ordonarea s-a realizat prin %d comparatii si %d deplasari\n",
ncomp, ninv);
printf("\n\tApasati o tasta pentru a termina programul\n");
getch();
}
#include <stdio.h>
#include <conio.h>
int ncomp=0, ninv=0;
{double x;
int i, j;
for (i=1; i<n; i++)
for (j=n-1; j>=i; j--, ncomp++)
if (a[j-1] > a[j])
{
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
ninv++;
}
}
void main(){
double sir[100];
int ne,i, nl=0;
clrscr();
printf("Numar elemente:");
scanf("%d", &ne);
for(i=0; i<ne; i++)
{printf("sir(%d)=",i+1);
scanf("%lf", &sir[i]);
}
sort_met_bulelor (sir, ne);
for(i=0; i<ne; i++)
{
printf("sir(%2d)=%5.1lf ", i+1, sir[i]);
nl++;
if (nl % 5 == 0)
printf("\n");
}
printf("\n");
printf("Ordonarea s-a realizat prin %d comparatii si %d deplasari\n",
ncomp, ninv);
}
#include <stdio.h>
#define DIM 100
#include <conio.h>
struct tip_struct
{
char
nume_prenum [DIM];
float
medie;
};
void main(void)
{
struct tip_struct stud [100];
int
ind[100];
int
i, ns;
float f;
{
for (i=s; i<=d; i++)
if (tab[index[i]].medie < tab[index[i+1]].medie)
{
t=index[i];
index[i]=index[i+1];
index[i+1]=t;
k=i;
}
d=k-1;
for (i=d; i>=s; i--)
if (tab[index[i+1]].medie > tab[index[i]].medie)
{
t=index[i];
index[i]=index[i+1];
index[i+1]=t;
k=i;
}
s=k+1;
} while (s <= d);
#include <stdio.h>
#include <conio.h>
#define N_MAX 100
/* fals */
}
} while (inv);
}
}
getch();
}
#include <stdio.h>
#include <conio.h>
#define DIM_MAX 6
void main()
{
int dist[DIM_MAX][DIM_MAX], muchie_sel[DIM_MAX];
int n, i, j, isel=0, nsel=0, distmin;
clrscr();
printf("Numarul total de orase de parcurs de comis-voiajor: ");
scanf("%d", &n);
printf("Specificati pentru ruta distanta:\n");
for(i=0; i<n-1; i++){
for (j=i+1; j<n; j++)
{
printf("Distanta (%d, %d)= ", i+1, j+1);
scanf("%d", &dist[i][j]);
dist[j][i]=dist[i][j];
}
muchie_sel[i]=0;
}
do
{i=0;
while (muchie_sel[i] || i==isel)
i++;
distmin=dist[isel][i];
}while (nsel!=n);
getch();
}
#include <stdio.h>
#include <conio.h>
#define N 10
#define M 15
#define DIM (N-1)*(M-1)
int L[N][M] =
{ 16, 0, 2, 0, 8, 0, 16},
{ 16, 0, 2, 4, 8, 0, 16},
{ 16, 1, 7, 4, 2, 0, 16},
{ 16, 0, 2, 0, 2, 0, 16},
{ 16, 16, 16, 16, 16, 16, 16},
};
int d[2][DIM];
int i, j, n=5, m=5, nr_sol=0, nse=4;
}
for (il=1; il<=m; il++){
L[il][0]=16;
L[il][m+1]=16;
}
printf("\nLabirintul are urmatoarea configuratie:\n\n");
for (il=0; il<n+2; il++){
for (ic=0; ic<m+2; ic++)
if (il==i && ic==j)
printf(" x");
else
printf("%3d", L[il][ic]);
printf("\n\n");
}
printf("Coordonate punct plecare L[%d,%d]=%d\n", i, j, L[i][j]);
iesire(0, i, j, L, d);
printf("\nNumar total de solutii: %i\n", nr_sol);
printf("Apasati ENTER pentru a termina programul !");
getch();
}
#include <stdio.h>
#include <conio.h>
#define N 10
#define M 15
int F[N][M] =
{{0, 0, 0, 0, 0, 0, 0},
{ 0, 1, 0, 1, 0, 1, 0},
{ 0, 0, 0, 0, 0, 0, 0},
{ 0, 1, 0, 0, 1, 0, 0},
{ 0, 0, 1, 0, 0, 1, 0},
{ 0, 0, 1, 1, 0, 1, 0},
{ 0, 0, 0, 0, 0, 0, 0},
};
obiect(i+1, j, F);
obiect(i+1, j-1, F);
obiect(i, j-1, F);
obiect(i-1, j-1, F);
}
}
}
for (il=1; il<=m; il++){
F[il][0]=0;
F[il][m+1]=0;
}
printf("\nFotografia are urmatoarea configuratie:\n\n");
for (il=1; il<n+1; il++){
printf("\t");
for (ic=1; ic<m+1; ic++)
printf("%2d", F[il][ic]);
printf("\n\n");
}
printf("\nCoordonate obiecte (stanga-sus):\n");
do
{il=0;
do
{
il++;
ic=0;
do
ic++;
while (ic<m+1 && F[il][ic]==0);
}
}while (il<n+1 || ic<m+1);
printf("\n\tNumar obiecte: %i\n", nr_ob);
printf("\nApasati ENTER pentru a termina programul !");
getch();
}
#include <stdio.h>
#include <conio.h>
#define NR_MAX 3
int a[NR_MAX][NR_MAX];
int nl, nc, l, c;
int ntotsol=0;
printf("\n");
for (l=0; l<nl; l++)
for (c=0; c<nc; c++)
{
printf("a[%d,%d]=", l+1, c+1);
scanf("%d", &a[l][c]);
};
printf("\nApasati o tasat pentru a continua programul\n");
getch();
for (l=0; l<nl; l++)
for (c=0; c<nc; c++)
{
for (col=0; col<nc; col++)
{aux=a[0][col];
a[0][col]=a[l][col];
a[l][col]=aux;
};
for (lin=0; lin<nl; lin++)
{
aux=a[lin][0];
a[lin][0]=a[lin][c];
a[lin][c]=aux;
};
if (incearca(0))
ntotsol++;
printf("\nSolutia %d:\n", ntotsol);
aux, q;
lin=col=i;
do
{
q=0;
if ((i > 0 && a[lin][col] >= a[i-1][i-1] ) || (i == 0))
{
for (c=0; c<nc; c++)
{aux=a[i][c];
a[i][c]=a[lin][c];
a[lin][c]=aux;
};
for (l=0; l<nl; l++)
{aux=a[l][i];
a[l][i]=a[l][col];
a[l][col]=aux;
};
if (i < nl-1)
{
q=incearca (i+1);
if (!q)
{
for (c=0; c<nc; c++)
{aux=a[i][c];
a[i][c]=a[lin][c];
a[lin][c]=aux;
};
for (l=0; l<nl; l++)
{aux=a[l][i];
a[l][i]=a[l][col];
a[l][col]=aux;
};
};
}
else
q=1;
};
if (col == nc-1)
{
col=i;
lin++;
}
else
col++;
} while (!q && lin < nl && col < nc);
return (q);
}
{
x[i]=j; // memorare pozitie (linie, coloana), si
a[j]=0; b[i+j]=0; c[i-j+7]=0; // "activare" directii
if (i < 8)
{
incearca (i+1, pq); // plasare regina urmatoare
if ( !(*pq) )
{// daca pozitionarea nu a fost buna
a[j]=1; b[i+j]=1; c[i-j+7]=1;// se sterg
} //"directiile" atacate de regina respectiva
}
else
*pq=1; // solutie completa
}
}while (!(*pq) && j !=8); // se reia cat timp solutia nu este buna
}
asezarii a 8 regine pe tabla de sah, astfel incat nici una dintre ele
sa nu o atace pe alta (prima regina este amplasata in pozitia (1,1) */
#include <stdio.h>
#include <conio.h>
int a[9] = {0, 1, 1, 1, 1, 1, 1, 1, 1}; // indice a = linia 'k'
// initializarea pozitiilor, pe linii, de la 1 la 8 (0 nu este utilizata)
int b[17] = {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
// initializarea pozitiilor pentru diagonala dr-st, de la 2 la 16,
// pozitiile 0 si 1 nu sunt utilizate
int c[15] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
// initializarea pozitiilor de la 0 la 14, pentru diagonala dr-st.
int x[9]; // vectorul pozitiilor pe coloane, indice x=linia, x[]=colaona
int ntotsol=0; // numarul total de solutii
void afiseaza (void)
{
int k;
printf("Sol. %2d: ", ntotsol+1);
for ( k = 1; k <= 8; k++)
printf("%4d", x[k]);
printf("\n");
ntotsol++; // contorizez numarul total de solutii
if (ntotsol%20 == 0){
printf("\nProgramul (si afisarea) continua! Apasati o tasta!\n");
getch();
}
}
incearca (i+1);
else
afiseaza (); // afiseaza solutia gasita
a[j]=1; b[i+j]=1; c[i-j+7]=1;// se sterg
} // "directiile" atacate de regina respectiva
}
void main (void)
{
clrscr();
incearca (1);
printf("\nNumarul tota de solutii gasite este %4d.\n", ntotsol);
printf("\nProgramul s-a terminat! Apasati o tasta!\n");
getch();}
#include <conio.h>
#define DIM_MAX 20
void main()
{
float p[DIM_MAX], g[DIM_MAX], ef[DIM_MAX];
int n, i, j, inv, ordonat[DIM_MAX];
float gr, castig;
clrscr();
printf("Capacitate rucsac (greutate admisa): ");
scanf("%f", &gr);
printf("Numarul de obiecte ce trebuie incarcate in rucsac (disponibile): ");
scanf("%d", &n);
printf("Specificati pentru fiecare obiect greutatea/profitul:\n");
for(i=0;i<n;i++)
{
printf("Greutate(%d)= ",i+1);
scanf("%f", &g[i]);
printf("Profit(%d) = ",i+1);
scanf("%f", &p[i]);
ordonat[i]=i;
ef[i]=p[i]*g[i];
}
do
inv=0;
for (i=0; i < n-1; i++)
*/
}
printf("\nObiectele incarcate in rucsac sunt urmatoarele:\n");
for (j=0; j<i; j++)
printf("\tObiectul: %d, de greutate: %.2f si profit: %.2f\n",
ordonat[j]+1, g[ordonat[j]], p[ordonat[j]]);
if (gr){
printf("\nSe mai pot incarca obiecte de greutate: %.2f", gr);
printf("\n\t\t rucsacul nu este plin, dar nu mai sunt obiecte.\n");
}
printf("\nProfitul total obtinut pentru aceasta incarcare: %.2f\n", castig);
printf("\nApasati o tasta pentru a termina programul !!!\n");
getch();
}
void main(void){
int vmax, v[DIM]={1, 5, 2, 6, 7, 4, 10, 13, 9, 20, 14, 7, 15, 12, 17};
int n=15, i, k, max, imax, L[DIM], Lmax;
clrscr();
/*printf("Numar elemente:");
scanf("%d", &n);
for(i=0; i<n; i++) // citire sir unde caut cel mai mare subsir crescator
{
printf("v(%d)= ", i+1);
scanf("%d", &v[i]);
} */
L[n-1]=1;
/* calculez L[k]=L[i]+1, unde 'i' este indicele unde v[k]<=v[i] */
for (k=n-2; k>=0; k--){ // L[k] contine numarul max. de succesori pentru v[k]
L[k]=1; // determin pentru fiecare numar v[k]
imax=k; // care pot fi succesorii sai
Lmax=1; // selectand dintre acestia pe cei care ofera lungimea
for (i=k+1; i<n; i++) // maxima (L[k] va contine pentru pozitia k
if (v[k] <= v[i] && Lmax <= L[i]){ // numarul total
Lmax=L[i];
imax=i;
// crescator, maxim, ce se
L[k]=L[imax]+1;
// poate forma
}
}
printf("Vectorul L este urmatorul:\n");
for (i=0; i<n; i++)
printf("%3i", L[i]);
printf("\n");
Lmax=L[0]; imax=0; // se determina inceputul subsirului crescator maxim
for (i=1; i<n; i++){
Lmax=L[i];
imax=i;
}
}
printf("\nSubsirul cel mai lung este (incepe de la poz %d):\n", imax+1);
printf("%5d", v[imax]);
vmax=v[imax]; // prima valoare din subsirul cautat
Lmax=L[imax]; // dimensiunea subsirului de tiparit
for (i=imax+1; i<n; i++) // urmatoarea valoare din subsir este mai mare
if (vmax <= v[i] && L[i]==Lmax-1){ // decat cea anterioara
vmax=v[i]; // si are lungimea cu o unitate mai mica
printf("%5d ", vmax);
Lmax--; // actualizare dimensiune subsir ramas de tiparit
}
printf("\n\n\tApasati o tasta pentru a termina programul\t!!!\n");
getch();
}
#include <stdio.h>
#include <conio.h>
#define N 9
#define NSQ N*N
// N - dimensiunea careului de joc; NSQ=N^2;
int q;
long int nr_incercari;
int si[N][N]={
{8,0,3,0,0,9,1,0,0},
{0,0,9,0,0,1,0,0,0},
{6,0,0,0,4,0,0,0,8},
{0,0,0,6,0,7,0,5,0},
{3,0,6,0,0,0,2,0,9},
{0,7,0,9,0,3,0,0,0},
{5,0,0,0,7,0,0,0,2},
{0,0,0,1,0,0,7,0,0},
{0,0,1,4,0,0,8,0,3}
};
int s[N][N];
int vp[NSQ][N+1]; // matricea de valori permise pentru fiecare casuta
// din careu, construita in concordanta cu regulile jocului
// matricea are o coloana in plus (N+1), care este de fapt
// prima (0) si in care vom pune -1 pentru casutele ce au
// valori impuse (sau pentru cele care nu mai au decat o
// singura alegere, pentru a reduce numarul de incercari
void init_joc(){
int i, j, l, c, il, ic, nr1;
clrscr();
int valid(int ip, int k){// fct verifica daca valoarea k poate fi pe poz ip
int l, c, i, j;
l=ip/N; c=ip%N;
for (i=0; i<N; i++) // daca valoarea exista pe coloana respectiva (c)
if (k==s[i][c]) // nu mai poate fi incercata (valida) pentru casuta
return 0; // curenta (ip) si returneaza invalid (0)
for (j=0; j<N; j++) // aceeasi conditie se testeaza si pentru linia 'l'
if (k==s[l][j])
return 0; // valoarea k nu poate fi pusa in casuta 'ip'
l=(ip/N/3)*3; c=(ip%N/3)*3;// l si c elem 'ip' din careul 3*3 corespunzator
// in care este inclusa casuta 'ip', deci 'l' si 'c'
k = 0;
x=i/N; y=i%N; // coordonatele casutei 'i' in careul 9*9 -> (x,y)
do {k++;
// (infundate)
}
else
q1 = 1;// daca s-a acoperit careul tipareste
}// se continua daca nu s-a gasit o solutie (q1=0)
}
} while (!q1 && k<=N); // numere posibile (k<=N) pentru pozitia curenta
*pq = q1; // se transmite reusita sau nereusita plasarii numarului respectiv
}
init_joc();
for (i=0; i<N; i++) // initializare careul de joc final (solutia)
for(j=0; j<N; j++)
s[i][j]=si[i][j];
printf("Careul initial este urmatorul:\n");
for (i=0; i<N; i++)
{for (j=0; j<N; j++)
if (s[i][j])
printf("%2d", s[i][j]);
else
printf(" ");
printf("\n");
}
incearca(0, &q);// apel pt. i=0, in pozitia (0,0), q-succes joc (solutie)
if (!q)
else
{printf("\nSolutia finala este urmatoarea:\n");
for (i=0; i<N; i++)
{for (j=0; j<N; j++)
printf("%2d", s[i][j]);
printf("\n");
}
printf("\nNumarul total de incercari a fost de: %ld\n",nr_incercari);
}
printf("Pentru terminare apasati o tasta!\n");
getch();
}
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#define N 9
#define NSQ N*N
// N - dimensiunea careului de joc; NSQ=N^2;
long int nr_incercari, nr_sol=0;
int si[N][N]={
{2,5,0,0,7,1,0,0,0},
{0,0,3,9,0,0,6,0,0},
{1,0,0,0,0,0,8,0,0},
{0,0,0,0,6,8,2,0,3},
{0,0,0,0,2,3,0,0,0},
{0,0,0,0,0,0,0,4,0},
{0,9,6,0,0,0,0,0,7},
{3,0,0,0,0,0,0,8,5},
{4,0,0,0,0,7,0,0,0}
};
int s[N][N];
int vp[NSQ][N+1];
FILE *ptrf;
struct date d;
void init_joc(){
int i, j, l, c, il, ic, nr1;
clrscr();
printf("\nInitializare careu de joc:\n");
/*for (i=0; i<N; i++){
printf("\n");
fprintf(ptrf, "\n");
}
for (i=0; i<NSQ; i++)
{vp[i][0]=0; // pozitia curenta (initiala) in cadrul vectorului i
for (j=1; j<=N; j++)
vp[i][j]=1;
l=i/N; c=i%N;
if (si[l][c]==0)
{
for (il=0; il<N; il++)
if (si[il][c])
vp[i][si[il][c]]=0;
for (ic=0; ic<N; ic++)
if (si[l][ic])
vp[i][si[l][ic]]=0;
l=(i/N/3)*3; c=(i%N/3)*3;// l si c elem 'i' din careul 3*3
for (il=l; il<l+3; il++)
for (ic=c; ic<c+3; ic++)
if (si[il][ic])
vp[i][si[il][ic]]=0;
}
else
{for (ic=1; ic<=N; ic++)
vp[i][ic]=0;
vp[i][0]=-1; // pozitii ce contin valori initiale
vp[i][si[l][c]]=1;
}
nr1=0;// verific daca pentru pozitia i, exista doar 1 nr posibil
for (j=1; j<=N; j++)
if (vp[i][j])
nr1++;
if (nr1==1)
vp[i][0]=-1;
}
for (i=0; i<N; i++)
for (j=0; j<N; j++)
s[i][j]=si[i][j];
/* clrscr();
printf("Matricea numerelor permise pentru fiecare pozitie din careu:\n");
for (i=0; i<NSQ; i++){
if (i%18==0)
{getch();
clrscr();
}
printf("Pozitia [%d,%d] : ", i/N+1, i%N+1);
printf("% d ", vp[i][0]);
for (j=1; j<=N; j++)
if (vp[i][j])
printf("%d ", j);
else
printf("%d ", 0);
printf("\n");
} */
}
int valid(int ip, int k){// fct verifica daca valoarea k poate fi pe poz ip
int l, c, i, j;
l=ip/N; c=ip%N;
void afiseaza_solutie(){
int i, j;
nr_sol++;
printf("\nSolutia %d:\n", nr_sol);
fprintf(ptrf, "\nSolutia %d:\n", nr_sol);
s[x][y]=0;
}
else
nr_incercari++; // numara ramurile taiate
}
else if (vp[i][k])
nume_fis[7]=d.da_day%10+'0';
ptrf=fopen (nume_fis, "w+");
if (!ptrf){printf("Nu se poate crea fisierul cu solutii !!!\n");
exit(1);
}
init_joc();
for (i=0; i<N; i++) // initializare careul de joc final
for(j=0; j<N; j++)
s[i][j]=si[i][j];
printf("Pentru continuare apasati o tasta!\n");
getch();
printf("Careul initial este urmatorul:\n");
for (i=0; i<N; i++)
{for (j=0; j<N; j++)
if (s[i][j])
printf("%2d", s[i][j]);
else
printf(" ");
printf("\n");
}
printf("Pentru continuare apasati o tasta!\n");
getch();
printf("Solutiile sunt urmatoarele:");
incearca(0);// apel pt. i=0, in pozitia (0,0), q-succes nr.
printf("Numar total de solutii: %li\n", nr_sol);
printf("Numarul total de incercari (ramuri arbore incercari): %li\n",
nr_incercari);
fprintf(ptrf, "Numar total de solutii: %li\n", nr_sol);
fprintf(ptrf, "Numarul total de incercari (ramuri arbore incercari): %li\n",
nr_incercari);
fclose(ptrf);
printf("Pentru terminare apasati o tasta!\n");
getch();
}
typedef struct
{int nval, val[MAXV]; /* numar valori disponibile in vector */
long rest;
int nrsol;
/* numar solutii */
unsigned sel;
/* solutie exacta */
/* continua cautarea */
void main ()
{int i;
long Suma;
TDate x;
clrscr();
printf ("Introduceti valori, terminand cu 0 sau caracter nenumeric:\n");
for (i = 0; i < MAXV; i++)
if (scanf("%i", &(x.val[i])) < 1 || x.val[i] == 0)
break;
if (!i)
{ printf ("Lipsa date!!!\n"); exit(1); }
x.nval = i;
printf("\nAti introdus %u valori:\n", x.nval);
for (i = 0; i < x.nval; i++)
printf ("%5i", x.val[i]);
printf ("\n");
for (;;)
{printf ("\nSuma dorita de construit (calculat) cu valori "
/* Cauta solutii */
if (! x.nrsol)
printf ("Nu exista solutie !\n");
}
}
void muta ( int n, enum pozitie sursa, enum pozitie inter, enum pozitie dest )
{
if ( n > 0 )
{
muta ( n - 1 , sursa , dest , inter );
deplasare ( sursa , dest );
muta ( n - 1 , inter, sursa , dest );
}
}
gasit=1;
else
i++;
if (gasit) // daca da, avem 2 taieturi -> 4 dreptunghiuri
{dreptunghi(x, y, xg[i]-x, h, px, py, pl, ph, xg, yg);
dreptunghi(xg[i], y, l+x-xg[i], h, px, py, pl, ph, xg, yg);
dreptunghi(x, y, l, yg[i]-y, px, py, pl, ph, xg, yg);
dreptunghi(x, yg[i], l, h+y-yg[i], px, py, pl, ph, xg, yg);
}
else if (l*h > *pl* *ph) // se compara aria drept. cu cea a drept. taiat
{*px=x; *py=y;
*pl=l; *ph=h;
}
}
*/
#include<stdio.h>
#include <conio.h>
#define DIM 80
void main(void){
long int c[DIM];
int n=15, i, k, d;
clrscr();
for (k=0; k<=n; k++){
if ((k+1)%16 == 0){
#include <stdio.h>
#include <conio.h>
#define N 5
#define NSQ N*N
#define NrMaxMutCal 8
// N - dimensiunea tablei de sah; NSQ=N^2;
// NrMaxMutCal=8, nr. maxim mutari posibile ale calului, pt. o pozitie data
int i, j, q;
long int nr_incercari;
int h[N+1][N+1];
int a[NrMaxMutCal+1]={0, 1, 1, 2, 2, -1, -1, -2, -2};// poz. relative pe cele doua
int b[NrMaxMutCal+1]={0, 2, -2, 1, -1, 2, -2, 1, -1};// doua coordonate,
if ((u >= 1 && u <= N) && (v >= 1 && v <= N) && (h[u][v] == 0))
// daca mutarea este valida si casuta nu a fost vizitata
{h[u][v] = i; // memorare mutare 'i'
if (i < NSQ)
{// daca sol. nu e completa se incearca mutarea urm.
muta (i+1, u, v, &q1);
if (!q1) // daca nu este valida se sterge mutarea
{h[u][v] = 0;
nr_incercari++; // se numara ramurile taiate
}
// (infundate)
}
else
q1 = 1;// daca s-a acoperit tabla->tipareste solutia
} // se continua daca nu s-a gasit o solutie (q1=0) si daca
} while (!q1 && k < NrMaxMutCal); // mai sunt mutari posibile (k<8)
// din pozitia curenta
*pq = q1;
else
{for (i=1; i<=N; i++)
{for (j=1; j<=N; j++)
printf("%4d", h[i][j]);
printf("\n");
}
printf("\nNumarul total de incercari a fost de: %ld\n\n",
nr_incercari);
}
}
// posibile, pornind din coltul din stanga sus, pozitia de coordonate (1,1)
#include <stdio.h>
#include <conio.h>
#define N 5
#define NSQ N*N
#define NrMaxMutCal 8
// N - dimensiunea tablei de sah; NSQ=N^2;
// NrMaxMutCal = 8, numarul maxim de mutari posibile ale calului,
// dintr-o pozitie data
// coordonatele de
printf("%2d", h[l][c]);
// afisare a solutiei
}
nr_sol++;
// mutare valida ?
// se memoreaza mutarea
else
nr_ramuri++;// se numara ramurile taiate (fundaturi)
}
};
nsl = 2;
if (N<6)
{nsl = 4;
nsv = 4;
}
else if (N<8)
{nsl = 3;
if (N == 6)
nsv = 3;
}
nse = nsl*nsv;
for (il=1; il<=N; il++) // initializare tabla sah, care va memora mutarile
for (ic=1; ic<=N; ic++)
h[il][ic] = 0;
h[1][1] = 1;
muta( 2, 1, 1);
printf("\nNumar total de solutii: %li\n", nr_sol);
*/
#include <stdio.h>
#include <conio.h>
#include <values.h>
#define DIMN 10
{
printf("Muchie, varfuri sursa, dest: ");
scanf ("%d%d", &i, &j);
printf("\tCost(%d-%d)= ", i, j);
scanf("%d", &cost);
a[j][i]=a[i][j]=cost; // pt. graf neorientat cost (i,j)=cost(j,i)
}
}
// initializare vectori V, P, C cu 0
for (k=1; k<=n-1; k++){ // se dermina celalate n-1 varfuri ale arborelui
cost_min=MAXINT;
v1=0; v2=0;
for (i=0; i<=n; i++)
for (j=0; j<=n; j++)
if (ARB[i]==1 && ARB[j]==0)// i e in arbore, iar j nu
if(a[i][j]) // si i-j este muchie in graf cu
if (a[i][j]<cost_min){ // cost minim
cost_min=a[i][j];
v1=i; v2=j; // retin muchia
// in v1-v2
C[v2]=cost_min;
}
}
void main()
{
int a[DIMN+1][DIMN+1]; // matricea de adiacenta (costuri/ drumuri)
int ARB[DIMN+1], C[DIMN+1], P[DIMN+1]; // ARB-arb partial, P-parinti, C-cost
int n, nm, primul, dimV, k;
citire_graf (a, &n, &nm);
printf("\nProgramul parcurge in latime graful.\n");
printf("\nSpecificati varful de start pentru parcurgere: ");
scanf("%d", &primul);
#include <stdio.h>
#include <conio.h>
#define DIMN 10
typedef struct{
int v1, v2;
} VECT_MUCHII;
int nr_sol=0;
return 0;
for (k=2; k<p; k++)
return 0;
return 1;
}
// solutie completa
}
else
incerc_ciclu(a, ciclu, n, p+1);
//
ciclu[p]=0;
}
}
void main()
{
VECT_MUCHII vm[DIMM+1];
#include <stdio.h>
#include <conio.h>
#define DIMN 6
#define DIMM 10
typedef struct{
int v1, v2;
} VECT_MUCHII;
int nr_sol=0;
culoare[p]=0;
}
}
void main()
{
VECT_MUCHII vm[DIMM+1];
if(nr_sol)
printf("\nNumarul total de solutii este: %d\n", nr_sol);
else
printf("\nProblema nu are solutii");
printf("\n");
}
{0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0}};
printf("\nNumarul de noduri (puncte) in graf, n= ");
scanf("%d", &n);
for (i=0; i<n; i++)
{
grf[i][i]=0;
for (j=0; j<n; j++)
if (i!=j)
{grf[i][j]=v[i][j];
/*printf("muchie[%d, %d]= ", i+1, j+1);
scanf("%d", &grf[i][j]); */
}
}
}
}
printf("\n");
}
{p=0;
while (!gf[dr[m-1]][p])
p++;
dr[m]=p;
m++;
} while (m<n);
#include <stdio.h>
#include <conio.h>
#define DIMN 10
typedef struct{
int lung;
} VECT_MUCHII;
int nr_sol=0;
// initializeaza solutia cu 0
// altfel returneaza 0
return 0;
return 1;
}
}
}
void main()
{
VECT_MUCHII vm[DIMM+1];
char rasp[10];
void main()
{
clrscr();
printf("\nDati numar noduri graf, n: ");
scanf("%d", &n);
printf("Nr. de muchii: ");
scanf("%d", &nm);
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
{D[i][j]=0;
P[i][j]=0;
// initializare predecesori
}
printf("Se citeste graful prin muchii, nod sursa, dest, si costul asociat.\n");
for (k=1; k<=nm; k++)
{
printf("Muchiile sursa, dest: ");
scanf ("%d%d", &i, &j);
printf("Cost(%d,%d): ", i, j);
scanf("%d", &D[i][j]);
D[j][i]=D[i][j];
}
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if (D[i][j]==0)
D[i][j]=1000;
else
{0, 1, 0, 0, 1, 0, 0, 0},
{1, 0, 1, 0, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{0, 0, 1, 0, 1, 0, 0, 0},
{1, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 1, 0, 1},
{0, 0, 1, 0, 0, 0, 1, 0}};
printf("\nNumarul de varfuri in graf, n= ");
scanf("%d", &n);
for (i=0; i<n; i++)
grad[i]=0;
for (i=0; i<n; i++)
{
grf[i][i]=0;
for (j=i+1; j<n; j++)
{grf[i][j]=v[i][j];
/*printf("muchie[%d, %d]= ", i+1, j+1);
scanf("%d", &grf[i][j]); */
grf[j][i]=grf[i][j];
if (grf[i][j])
{grad[i]++; grad[j]++;}
}
}
}
c[i]=0;
pi=0;
ps=0;
if (grade_pare(grad, n))
printf("\nGraful este conex si eulerian\n");
else
printf("\nGraful este conex dar nu este eulerian\n");
else
printf("\nGraful nu este eulerian\n");
getch();
}
#define DIMM 10
if (!g[l[i]][l[i+1]])
return 0;
// este ne-elementar
return 1;
}
void main()
{
int a[DIMN+1][DIMN+1], l[DIMM+1]; // matricea de adiacenta si lantul cautat
int n, nm, dl, elementar;
citire_graf (a, &n, &nm);
citire_lant (l, &dl);
if (test_lant(a, l, dl, &elementar)){
printf("\n\nEste un lant ");
if (!elementar)
printf("ne-");
printf("elementar!\n");
}
else
printf("\n\nNu este un lant in graf !!!\n");
printf("\n");
}
#define DIMM 10
int i;
printf("\nDati numar noduri pentru lantul de testat: ");
scanf("%d", pdl);
for (i=1; i<= *pdl; i++)
{
printf("Varful %d din lant: ", i);
scanf ("%d", &l[i]);
}
printf("\nLantul cautat in garf este urmatorul:\n");
for (i=1; i<= *pdl; i++)
printf("%d -> ", l[i]);
}
// este ne-elementar
void main()
{
int a[DIMN+1][DIMN+1], l[DIMM+1]; // matricea de adiacenta si lantul cautat
int n, nm, dl, elementar;
citire_graf (a, &n, &nm);
citire_lant (l, &dl);
if (test_lant(a, l, dl, &elementar)){
printf("\n\nEste un lant ");
if (!elementar)
printf("ne-");
printf("elementar!\n");
}
else
printf("\n\nNu este un lant in graf !!!\n");
printf("\n");
}
// varful k
V[k]=1;
}
pe++;// 'extrag' urmatorul varf din coada
}
*pdimV=pi;
}
void main()
{
int a[DIMN+1][DIMN+1]; // matricea de adiacenta
int C[DIMN+1], V[DIMN+1];
getch();
}
#include <stdio.h>
#include <conio.h>
#define DIMN 10
typedef struct{
int vi, vf;
} VECT_MUCHII;
printf("\nNoduri izolate:\n");
for (i=1; i<=nn; i++)
if (!nod_iz[i]){
printf("%5d", i);
ni++;
}
printf("\n");
if (ni)
printf("Numar de noduri izolate: %d.\n", ni);
else
printf("\tNu sunt noduri izolate.\n");
}
void main()
{
VECT_MUCHII vm[DIMM+1];
#include <stdio.h>
#include <conio.h>
#include <values.h>
#define DIMN 10
typedef struct{
int timp;
} VECT_MUCHII;
// initializeaza solutia cu 0
}
}
void main()
{
VECT_MUCHII vm[DIMM+1];
scanf("%d", &varf_ini);
init_solutie(sol, n);
printf("\nSolutiile din graf sunt urmatoarele:\n");
incerc_solutie(a, sol, n, 1, varf_ini, &optim);
if(nr_sol)
{printf("\nNumarul total de solutii este: %d\n", nr_sol);
printf("\nSolutia optima este:\n");
for (i=1; i<=n; i++)