// E1P1 Se cere nr de elevi
admisi stiind ca trebuie sa aiba media>=6 si notele>=5
#include
#include
#include
void dummy(float *a)
{
float b=*a;
dummy (&b);
}
struct elev
{
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux;
int n,i,j,nra;
void main()
{
printf("n="); scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Nume
%d =",i);scanf("%s",&x[i].nume);
printf("Prenume %d =",i);scanf("%s",x[i].pren);
printf("n1
elev %d=",i);scanf("%f",&x[i].n1);
printf("n2
elev %d=",i);scanf("%f",&x[i].n2);
x[i].med=(x[i].n1+x[i].n2)/2;
printf("CNP
elev %d=",i);
for(j=1;j<=13;j++)
scanf("%d",&x[i].CNP[j]);
}
nra=0;
for(i=1;i<=n;i++)
if(x[i].n1>=5
&& x[i].n2>=5 && x[i].med>=6)
nra++;
printf("Numarul
de elevi admisi este %d",nra);
getch();
}
//E1P2 Sa se ordoneze
lexico-grafic dupa nume si prenume
#include
#include
#include
void dummy(float *a)
{float b=*a;
dummy (&b);}
struct elev {
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux;
int n,i,j;
void main()
{
clrscr();
printf("n="); scanf("%d",&n);
for(i=1;i<=n;i++)
{ printf("Nume %d
=",i);scanf("%s",&x[i].nume);
printf("Prenume
%d =",i);scanf("%s",x[i].pren);
printf("n1 elev
%d=",i);scanf("%f",&x[i].n1);
printf("n2 elev
%d=",i);scanf("%f",&x[i].n2);
x[i].med=(x[i].n1+x[i].n2)/2;
printf("CNP
elev %d=",i);
{ for(j=1;j<=13;j++)
scanf("%d",&x[i].CNP[j]); }
}
for(i=1;i
for(j=i+1;j<=n;j++)
if((strcmp(x[i].nume,x[j].nume))>0)
{ aux=x[i];
x[i]=x[j];
x[j]=aux; }
else
if((strcmp(x[i].nume,x[j].nume))==0)
if((strcmp(x[i].pren,x[j].pren))>0)
{ aux=x[i];
x[i]=x[j];
x[j]=aux; }
for(i=1;i<=n;i++)
printf("\t%s \t%s
\t%f\n",x[i].nume,x[i].pren,x[i].med);
getch();
}
//E1P3 Sa se tipareasca numele si
prenumele elevului cu media cea mai mare.
#include
#include
#include
void dummy(float *a)
{
float b=*a;
dummy (&b);
}
struct elev {
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux;
int n,i,j;
void main()
{
float max;
clrscr();
printf("n="); scanf("%d",&n);
for(i=0;i
{
printf("Nume %d
=",i);scanf("%s",&x[i].nume);
printf("Prenume
%d =",i);scanf("%s",x[i].pren);
printf("n1 elev
%d=",i);scanf("%f",&x[i].n1);
printf("n2 elev
%d=",i);scanf("%f",&x[i].n2);
x[i].med=(x[i].n1+x[i].n2)/2;
}
max = x[0].med;
for (i=0;i
if (x[i].med>max)
max = x[i].med;
for (i=0;i
if (x[i].med==max)
printf("Cel
mai bun elev este %s %s cu media: %4.2f",x[i].nume,x[i].pren,x[i].med);
getch();
}
#include
#include
#include
void
dummy(float *a)
{ float b=*a;
dummy
(&b); }
struct elev {
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux;
int n,i,j,nra,m;
void main()
{ clrscr();
printf("n="); scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Nume %d =",i) ; scanf("%s",&x[i].nume);
printf("Prenume %d =",i);
scanf("%s",x[i].pren);
printf("n1 elev %d=",i);
scanf("%f",&x[i].n1);
printf("n2 elev %d=",i); scanf("%f",&x[i].n2);
x[i].med=(x[i].n1+x[i].n2)/2; }
nra=0;
for(i=1;i<=n;i++)
if(x[i].n1>5
&& x[i].n2>5 && x[i].med>6)
nra++;
printf("Numarul
de locuri este =",m);
scanf("%d",&m);
if(m>=nra)
printf("Sunt %d
elevi admisi",nra);
else
printf("Sunt %d
elevi admisi",m);
getch(); }
//E1P5 Stiind ca nr de locuri se
suplimenteaza daca exista elevi
neadmisi care au media egala cu a ultimului admis dupa
conditiile de la pct1 sa se afiseze nr de alevi admisi.
#include
#include
#include
void
dummy(float *a)
{ float b=*a;
dummy
(&b); }
struct elev {
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux,min;
int n,i,j,nra,m,k,l;
void main()
{ clrscr();
printf("\nn=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Nume %d =",i) ; scanf("%s",&x[i].nume);
printf("Prenume %d =",i);
scanf("%s",x[i].pren);
printf("n1 elev %d=",i);
scanf("%f",&x[i].n1);
printf("n2 elev %d=",i); scanf("%f",&x[i].n2);
x[i].med=(x[i].n1+x[i].n2)/2; }
nra=0;
for(i=1;i<=n;i++)
if(x[i].n1>=5
&& x[i].n2>=5 && x[i].med>=6)
nra++;
printf("Numarul
de locuri este =",m);
scanf("%d",&m);
if(m>=nra)
printf("Sunt %d
elevi admisi",nra);
else
for(i=1;i
for(j=i+1;j<=nra;j++)
if(x[i].med
{ aux=x[i];
x[i]=x[j];
x[j]=aux; }
for(k=1;k<=nra;k++)
printf("\t%s\t%s\t%4.2f\t%4.2f\t%4.2f\n",x[k].nume,x[k].pren,x[k].n1,x[k].n2,x[k].med);
for(l=m+1;l<=nra;l++)
if(x[m].med==x[l].med)
m++;
printf("\n Numarul de elevi admisi este
%d",m);
getch(); }
#include
#include
#include
void
dummy(float *a)
{ float b=*a;
dummy
(&b); }
struct elev {
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux;
int n,i,j,k;
void main()
{ clrscr();
printf("n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Nume %d =",i) ; scanf("%s",&x[i].nume);
printf("Prenume %d =",i);
scanf("%s",x[i].pren);
printf("n1 elev %d=",i);
scanf("%f",&x[i].n1);
printf("n2 elev %d=",i); scanf("%f",&x[i].n2);
x[i].med=(x[i].n1+x[i].n2)/2; }
for(i=1;i
for(j=i+1;j<=n;j++)
if(x[i].med
{ aux=x[i];
x[i]=x[j];
x[j]=aux; }
for(k=1;k<=n;k++)
printf("\t%s\t%s\t%4.2f\t%4.2f\t%4.2f\n",x[k].nume,x[k].pren,x[k].n1,x[k].n2,x[k].med);
getch(); }
//E1P7 Stiind nume si prenume sa
se tipareasca media ,daca este admis in cazul 5.
#include
#include
#include
void
dummy(float *a)
{ float b=*a;
dummy
(&b); }
struct elev {
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux,min;
int
n,i,j,nra,m,b,k,l,o,a;
void main()
{ clrscr();
printf("\nn=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Nume %d =",i) ; scanf("%s",&x[i].nume);
printf("Prenume %d =",i);
scanf("%s",x[i].pren);
printf("n1 elev %d=",i);
scanf("%f",&x[i].n1);
printf("n2 elev %d=",i); scanf("%f",&x[i].n2);
x[i].med=(x[i].n1+x[i].n2)/2; }
nra=0;
for(i=1;i<=n;i++)
if(x[i].n1>=5
&& x[i].n2>=5 && x[i].med>=6)
nra++;
printf("Numarul
de locuri este =",m);
scanf("%d",&m);
if(m
for(i=1;i
for(j=i+1;j<=nra;j++)
if(x[i].med
{ aux=x[i];
x[i]=x[j];
x[j]=aux; }
for(k=1;k<=nra;k++)
printf("\t%s\t%s\t%4.2f\t%4.2f\t%4.2f\n",x[k].nume,x[k].pren,x[k].n1,x[k].n2,x[k].med);
for(l=m+1;l<=nra;l++)
if(x[m].med==x[l].med)
m++;
printf("nume
cautat ="); scanf("%s",x[a].nume);
printf("prenume cautat="); scanf("%s",x[a].pren);
for(o=1;o<=m;o++)
if(
(strcmp(x[o].nume,x[a].nume) )==0 && (strcmp(x[o].pren,x[a].pren))==0)
printf("Elevul %s %s este admis cu media
%4.2f",x[o].nume,x[o].pren,x[o].med);
getch(); }
#include
#include
#include
void
dummy(float *a)
{ float b=*a;
dummy
(&b); }
struct elev {
char nume[15],
pren[15];
float n1,n2,med;
int CNP[13]; }
x[200],aux,min;
int
n,i,j,nra,m,b,k,l,o,f,p;
void main()
{ clrscr();
printf("\nn=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Nume %d =",i) ; scanf("%s",&x[i].nume);
printf("Prenume %d =",i);
scanf("%s",x[i].pren);
printf("n1 elev %d=",i);
scanf("%f",&x[i].n1);
printf("n2 elev %d=",i); scanf("%f",&x[i].n2);
printf("CNP elev %d=",i);
{ for(j=1;j<=13;j++) scanf("%d",&x[i].CNP[j]); }
x[i].med=(x[i].n1+x[i].n2)/2; }
nra=0;
for(i=1;i<=n;i++)
if(x[i].n1>=5
&& x[i].n2>=5 && x[i].med>=6)
nra++;
printf("Numarul
de locuri este =",m);
scanf("%d",&m);
if(m
for(i=1;i
for(j=i+1;j<=n;j++)
if(x[i].med
{ aux=x[i];
x[i]=x[j];
x[j]=aux; }
for(k=1;k<=nra;k++)
printf("\t%s\t%s\t%4.2f\t%4.2f\t%4.2f\n",x[k].nume,x[k].pren,x[k].n1,x[k].n2,x[k].med);
for(l=m+1;l<=nra;l++)
if(x[m].med==x[l].med)
m++;
f=0;b=0;
for(o=1;o<=m;o++)
if(x[o].CNP[1]==2)
f++;
else
b++;
printf("\n sunt %d baieti si %d
fete",b,f);
getch(); }
E2P1 2 Se dau de la tastatura
elementele unui sir cu "n" nr intregi.
Se cere sa se calculeze nr. de nr prime din sir.
a Functie care citeste sirul.
b functie care tipareste sirul.
c functie care determina daca e prim sau nu.
d functie care determina cate nr prime sunt in sir.*/
#include
#include
#include
int n,a[50];
void citire()
{
int i;
printf("n= ");scanf("%d",&n);
for (i=0;i
{ printf("a[%d]",i);
scanf("%d",&a[i]);
} }
void tip()
{ int i;
for(i=0;i
printf("%d
",a[i]); }
int prim(int x)
{ int i;
for (i=2;i<=sqrt(x);i++)
if (x%i==0)
return 0;
return 1; }
int nrprim(int a[50],int n)
{
int nr=0,i;
for (i=0;i
if
(prim(a[i]))
nr++;
return nr;
}
void main()
{
clrscr();
citire();
tip();
printf("\n nr de numere prime este: %d",nrprim(a,n));
getch();
}
E2P2 Se da o matrice cu n linii si m coloane cu nr
intregi
Sa se calculeze media aritmetica a nr de sub secundara care au
cifra
de control egala cu o cifra data de la tastatura.
A Citirea
B Tiparirea
C Cifra de control pentru nr intregi de sub diagonala
secundara
D Media aritmetica a nr de sub secundara care au cifra de
control egala cu cifra de la tastatura .*/
#include
#include
int n,m,a[20][20],c;
void citire()
{ int i,j;
printf("n= ");scanf("%d",&n);
printf("m= ");scanf("%d",&m);
for (i=1;i<=n;i++)
for
(j=1;j<=m;j++)
{ printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]); }
}
void tip()
{ int i,j;
for (i=1;i<=n;i++)
{ for (j=1;j<=m;j++)
printf("%d
",a[i][j]);
printf("\n");
} }
int cifra(int x)
{ int s=0;
do {
while (x)
{ s=s+x%10;
x=x/10; } }
while (x>9);
return x; }
float media(int a[20][20],int n, int m)
{ int s=0,i,j,nr=0;
for (i=2;i<=m;i++)
for
(j=n-i+2;j<=n;j++)
if
(cifra(a[i][j])==2)
{ s=s+a[i][j];
nr=nr+1; }
return (float)
s/nr; }
void main() {
clrscr();
citire();
tip();
printf("c= ");scanf("%d",&c);
if (n==m)
printf("Media este &f", media(a,n,m));
else
printf("Matricea nu e patratica");
getch();
}
Hanoi- Problema Turnurilor din
HANOI
#include
#include
int n;
void hanoi(int n,char a,char b,char c)
{
if (n==1)
printf("%c %c \n",a,b);
else
{
hanoi(n-1,a,c,b);
printf("%c %c\n",a,b);
hanoi(n-1,c,b,a);
}
}
void main()
{
printf("n=");
scanf("%d",&n);
hanoi(n,'a','b','c');
getch();
}
#include
int n;
void hanoi(int n,char a,char b,char c)
{
if (n==1)
printf("%c %c \n",a,b);
else
{
hanoi(n-1,a,c,b);
printf("%c %c\n",a,b);
hanoi(n-1,c,b,a);
}
}
void main()
{
printf("n=");
scanf("%d",&n);
hanoi(n,'a','b','c');
getch();
}
E3P1 Creare Lista Simplu Inlantuita */
#include
#include
#include
struct nod {
int inf;
struct nod *urm;
} *x,*y;
struct nod *creare()
{ struct nod *aux,*prim;
int n;
prim=NULL;
printf("n=");
scanf("%d",&n);
while (n)
{
aux=(struct nod *)malloc(sizeof(struct nod));
aux -> inf=n;
aux -> urm=prim;
prim=aux;
printf("n= ");
scanf("%d",&n);
}
return prim;
}
void parc (struct nod *p)
{
struct nod *aux;
aux=p;
while (aux)
{
printf("%d ",aux->inf);
aux=aux->urm;
}
}
void main()
{
clrscr();
x=creare();
parc(x);
getch();
}
E3P2 Inserare Inceput */
#include
#include
#include
struct nod { int inf;
struct nod * urm;
} *x, *y;
struct nod * creare()
{ struct nod * aux, *prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while (n)
{ aux=(struct nod *)malloc
(sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n);
}
return prim; }
void parc(struct nod
*p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm; }
}
struct nod *
inserare_inc(struct nod *p, int m)
{struct nod * aux;
aux=(struct
nod *) malloc (sizeof(struct nod));
aux->inf=m;
aux->urm=p;
p=aux;
return p;
}
void main()
{int m; clrscr();
x=creare();
parc(x);
printf("\nm="); scanf("%d",&m);
x=inserare_inc(x,m);
parc(x);
getch(); }
E3P3 Inserare Sfarsit
#include
#include
#include
struct nod { int inf;
struct nod * urm; } *x,
*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc (sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n);
}
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm; }
}
struct nod * ins_sf (struct nod *p,int m)
{ struct nod *aux, *t;
t=p;
while
(t->urm!=NULL)
t=t->urm;
aux=(struct nod
*)malloc(sizeof(struct nod));
aux->inf=m;
t->urm=aux;
aux->urm=NULL;
return p;
}
void main()
{ int m; clrscr();
x=creare();
parc(x);
printf("\nm="); scanf("%d",&m);
x=ins_sf(x,m);
parc(x);
getch(); }
E3P4 Inserare Interior
#include
#include
#include
struct nod { int inf;
struct nod * urm; } *x,
*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc (sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n);
}
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm; } }
struct nod * ins_int1 (struct nod *p,int m,int n)
{ struct nod *aux, *t;
t=p;
while (t->inf!=NULL)
t=t->urm;
aux=(struct nod *)malloc(sizeof(struct nod));
aux->inf=m;
aux->urm=t->urm;
t->urm=aux;
return p;
}
void main()
{ int m,n; clrscr();
x=creare();
parc(x);
printf("\nm="); scanf("%d",&m);
printf("\nn=");scanf("%d",&n);
x=ins_int1(x,m,n);
parc(x);
getch(); }
E3P5 Inserare Interior dupa nr nod
#include
#include
#include
struct nod { int inf;
struct nod * urm; } *x,
*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n=");
scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc (sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n); }
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm;
} }
struct nod * ins_int2 (struct nod *p,int m,int k)
{ int i;
struct nod *aux, *t;
t=p;
for (i=1;i<=k;i++)
t=t->urm;
aux=(struct nod *)malloc(sizeof(struct nod));
aux->inf=m;
aux->urm=t->urm;
t->urm=aux;
return p; }
void main()
{ int m,k; clrscr();
x=creare();
parc(x);
printf("\nm="); scanf("%d",&m);
printf("\nk="); scanf("%d",&k);
x=ins_int2(x,m,k);
parc(x);
getch();
E3P6 STERGERE PRIMUL NOD
#include
#include
#include
struct nod { int inf;
struct nod * urm; } *x,
*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc (sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n);
}
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm; }
}
struct nod * sterge_prim (struct nod *p)
{
struct nod *t;
t=p->urm;
free(p);
return t;
}
void main()
{ int m,k; clrscr();
x=creare();
parc(x);
printf("\n");
x=sterge_prim(x);
parc(x);
getch(); }
E3P7 STERGERE ULTIMUL NOD
#include
#include
#include
struct nod { int inf;
struct nod * urm; } *x,
*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while (n)
{ aux=(struct nod *)malloc
(sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n);
}
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm; }
}
struct nod * sterge_ultim (struct nod *p)
{
struct nod *t;
t=p;
while (t->urm->urm!=NULL)
free(t->urm);
t->urm=NULL;
return p;
}
void main()
{ int m; clrscr();
x=creare();
parc(x);
printf("\n");
x=sterge_ultim(x);
parc(x);
getch(); }
E3P8 Stergere interior lista */
#include
#include
#include
struct nod { int inf;
struct nod * urm; } *x,
*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc (sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n);
}
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm; }
}
struct nod *stergere_int1 (struct nod*p, int info)
{
struct nod *aux,*d;
aux=p;
while (aux->urm->inf!=info)
aux=aux->urm;
d=aux->urm;
aux->urm=d->urm;
free(d);
return p;
}
void main()
{ int m; clrscr();
x=creare();
parc(x);
printf("\nm="); scanf("%d",&m);
x=stergere_int1(x,m);
parc(x);
getch(); }
E3P9 Stergere interior lista dupa numarul nodului
*/
#include
#include
#include
struct nod { int inf;
struct nod * urm; } *x,
*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc (sizeof (struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n="); scanf("%d",&n);
}
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->urm; }
}
struct nod *stergere_int2 (struct nod*p, int k)
{
struct nod *aux,*d;
int i;
aux=p;
for (i=1;i<=k-2;i++)
aux=aux->urm;
d=aux->urm;
aux->urm=d->urm;
free(d);
return p; }
void main()
{ int m; clrscr();
x=creare();
parc(x);
printf("\nm="); scanf("%d",&m);
x=stergere_int2(x,m);
parc(x);
getch(); }
E3P10 Sa se creeze o lista simplu
inalntuita cu nr intregi si sa se tipareasca nr de numere prime din lista.*/
#include
#include
#include
#include
struct nod {
int inf;
struct nod *urm; } *y;
struct nod *creare()
{ struct nod *aux,*prim;
int n;
prim=NULL;
printf("n=");
scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc(sizeof(struct nod));
aux -> inf=n;
aux -> urm=prim;
prim=aux;
printf("n= ");
scanf("%d",&n); }
return prim; }
void parc (struct nod *p)
{ struct nod *aux;
aux=p;
while (aux)
{ printf("%d
",aux->inf);
aux=aux->urm; } }
int prim1(int x)
{ int i;
for
(i=2;i<=sqrt(x);i++)
if (x%i==0) return
0;
return 1; }
int numar(struct nod *p)
{ struct nod *aux;
int nr=0;
aux=p;
while (aux!=NULL)
{ if (prim1(aux->inf)==1)
nr=nr+1;
aux=aux->urm; }
return nr; }
void main()
{ struct nod *r;
clrscr();
r=creare();
parc(r);
printf("Nr de nr
prime este %d",numar(r));
getch(); }
E3P11 Se creaza 2 liste simplu inalntuite –
Concatenare la 2 dupa 1
, sa se parcurca acestea, apoi sa se concateneze (lipeasca)
(a 2a la sfarsitul
primei liste */
#include
#include
#include
#include
struct nod
{ int inf;
struct nod *urm; } *y;
struct nod *creare()
{ struct nod
*aux,*prim;
int n;
prim=NULL;
printf("n=");
scanf("%d",&n);
while (n)
{ aux=(struct nod *)malloc(sizeof(struct nod));
aux -> inf=n;
aux -> urm=prim;
prim=aux;
printf("n= ");
scanf("%d",&n);
}
return prim; }
void parc (struct nod *p)
{ struct nod *aux;
aux=p;
while (aux)
{ printf("%d
",aux->inf);
aux=aux->urm; } }
struct nod *concatenare (struct nod *p1,struct nod *p2)
{ struct nod *aux;
aux=p1;
while (aux->urm!=NULL)
aux=aux->urm;
aux->urm=p2;
return p1; }
printf("\n R2
este: \n");
parc(r2);
printf("\n");
r1=concatenare(r1,r2);
parc(r1);
getch(); }
void main()
{ struct nod *r1,*r2;
clrscr();
r1=creare();
printf("\n R1
este: \n");
parc(r1);
printf("\n");
r2=creare();
E3P12 sa se creeze o LSI , apoi sa se insereze intre
orice 2 noduri consecutive avand informatiile
de semn contrar, cate un nod cu informatia data de la
tastatura */
#include
#include
#include
#include
struct nod
{ int inf;
struct nod
*urm; } *y;
struct nod *creare()
{ struct nod *aux,*prim;
int n;
prim=NULL;
printf("n=");
scanf("%d",&n);
while (n)
{ aux=(struct nod *)malloc(sizeof(struct
nod));
aux -> inf=n;
aux -> urm=prim;
prim=aux;
printf("n=
");scanf("%d",&n); }
return prim;
}
void parc (struct nod *p)
{ struct nod *aux;
aux=p;
while (aux)
{ printf("%d ",aux->inf);
aux=aux->urm; } }
struct nod *ins(struct nod *p,int info)
{ struct nod *aux,*t;
aux=p;
while(aux->urm!=NULL)
if(aux->inf
*aux->urm->inf<0 p="">
0>
#include
{ t=(struct nod
*)malloc(sizeof(struct nod));
t->inf=info;
t->urm=aux->urm;
aux->urm=t;
aux=aux->urm->urm; }
else
aux=aux->urm;
return p; }
void main()
{ int info;
struct nod *r;
r=creare();
parc(r);
printf("\n
Informatia de inserat: ");
scanf("%d",&info);
r=ins(r,info);
parc(r);
getch(); }
E3P13 Creare Lista circulara simplu inlantuita */
#include
#include
#include
struct nod
{ int inf;
struct nod *urm; }*x,*y;
struct nod *creare()
{ int n;
struct nod
*aux,*prim,*d;
prim=NULL;
printf("n=
");scanf("%d",&n);
d=(struct nod
*)malloc(sizeof(struct nod));
d->inf=n;
d->urm=prim;
printf("n=
");scanf("%d",&n);
while (n)
{ aux=(struct nod
*)malloc(sizeof(struct nod));
aux->inf=n;
aux->urm=prim;
prim=aux;
printf("n=
");scanf("%d",&n); }
d->urm=prim;
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while (aux)
{ printf("%d
",aux->inf);
aux=aux->urm;
} }
void main()
{ clrscr();
x=creare();
parc(x);
getch();
}
E3P14 creare si parcurgere Lista
dublu inlantuita */
#include
#include
#include
struct nod
{ int inf;
struct nod *urm,
*ante; } *x,*y;
struct nod * creare()
{ struct nod * aux,
*prim;
int n;
prim=NULL;
printf("n="); scanf("%d",&n);
while(n)
{ aux=(struct nod
*)malloc(sizeof(struct nod));
aux->inf=n;
aux->urm=prim;
prim->ante=aux;
prim=aux;
printf("n="); scanf("%d",&n); }
prim->ante=NULL;
return prim; }
void parc(struct nod *p)
{ struct nod * aux;
aux=p;
while (aux)
{ printf("%d
",aux->inf);
aux=aux->urm; } }
void parc_inv(struct nod *p)
{ struct nod *aux;
aux=p;
while(aux->urm)
aux=aux->urm;
while(aux)
{ printf("%d ",aux->inf);
aux=aux->ante; } }
void main()
{ clrscr();
x=creare();
parc(x);
printf("\n");
parc_inv(x);
getch(); }
Joc Joc Copii Numaratoare */
#include
#include
#include
struct nod
{int k;
struct nod
*urm; };
struct nod *creare(int k,struct nod *l)
{ struct nod *aux;
aux=(struct
nod *)malloc(sizeof(struct nod));
aux->k=k;
aux->urm=l;
return(aux); }
struct nod *init_lc(int n,struct nod *l)
{struct nod *p;
int i;
l=NULL;
for(i=n;i>0;i--)
{l=creare(i,l);
if(i==n)
p=l; }
p->urm=l;
return(l); }
main()
{ int n,k,m,i;
struct nod *l;
clrscr();
printf(" Numarul
de copii: ");scanf("%d",&n);
l=init_lc(n,l);
printf("
Numaratoarea incepe de la copilul : ");scanf("%d",&k);
printf("
Copiii vor iesi din cit in cit :
");scanf("%d",&m);
{ for(i=1;i<=k-1;i++)l=l->urm;
while(n>1)
{ if (m==1)
{ printf("%d iese
din cerc \n",l->k);
l=l->urm;
}
else
{ for
(i=1;i<=m-2;i++) l=l->urm;
printf("%d
iese din cerc \n",l->urm->k);
l=l->urm=l->urm->urm; }
n--; } }
printf("\nCopilul %d a castigat",l->k);
getch(); }
fibo sa se creeze o lsi cu
primele n fibo elemente
#include
#include
#include
int fibo(int n)
{ if(n==0) return 0;
if(n==1) return 1;
return fibo(n-1)+fibo(n-2); }
struct nod {
int inf;
struct nod *urm;
} *x,*y;
struct nod *creare()
{ struct nod *aux,*prim;
int n,i;
printf("n= "); scanf("%d",&n);
prim=NULL;
for(i=1;i<=n;i++)
{ aux=(struct nod *)malloc(sizeof(struct nod));
aux ->inf=fibo(i);
aux ->urm=prim;
prim=aux;}
return prim; }
void parc (struct nod *p)
{ struct nod *aux;
aux=p;
while (aux)
{ printf("%d ",aux->inf);
aux=aux->urm; } }
void main()
{ clrscr();
x=creare();
parc(x);
getch(); }
StergeTot - Sterge o valoare din
lsi
#include
#include
struct nod {
int inf;
struct nod *urm;
} *y;
struct nod *creare()
{ struct nod *aux,*prim;
int n;
prim=NULL;
printf("n= "); scanf("%d",&n);
while (n)
{ aux=(struct nod *)malloc(sizeof(struct nod));
aux -> inf=n;
aux -> urm=prim;
prim=aux;
printf("n= "); scanf("%d",&n); }
return prim; }
void parc (struct nod *p)
{ struct nod *aux;
aux=p;
while (aux)
{ printf("%d ",aux->inf);
aux=aux->urm; }
printf("\n"); }
struct nod *sterge_tot (struct nod *p,int info)
{
struct nod *aux, *t;
while(info==p->inf)
{
aux=p->urm;
free(p);
p=aux;
}
aux=p;
do {
while((aux->urm->inf!=info) &&
(aux->urm!=NULL))
aux=aux->urm;
if(aux->urm!=NULL)
{
t=aux->urm;
aux->urm=t->urm;
free(t);
while(info==p->inf)
{
aux=p->urm;
free(p);
p=aux;
} }
else
{
if(aux->urm->inf==info)
{
free(aux->urm);
aux->urm=NULL;
}
else
aux=aux->urm;
}
}
while((aux->urm!=NULL)||(aux!=NULL));
return p;
}
void main()
{
int info;
struct nod *r;
clrscr();
r=creare();
parc(r);
printf("Info= ");
scanf("%d",&info);
r=sterge_tot(r,info);
parc(r);
getch();
}