05 April 2014

Programare Procedurala Avansata Programe C Language



// 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();
}



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="">
      { 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

#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();
}

CCSuite - CC Monitoring, CC Reports and AliveCheck

CC Monitoring, CC Reports and AliveCheck Create together a powerful application, user friendly, that helps managing, monitoring ...