Cornel Iulian

Fondators
  • Content count

    14,057
  • Donations

    15.00 EUR 
  • Joined

  • Last visited

  • Days Won

    56
  • Points

    429,248 [ Donate ]

Posts posted by Cornel Iulian


  1. Cerinta: Sa se afiseze urmatorul triunghi de numere, pentru un N definit:

    N

    N N-1

    N N-1 N-2

    ..............

    N N-1 N-2 ... 3 2 1 

    Rezolvare:

    #include<stdio.h>
    #include<stdlib.h>
      
    int main(void)
    {
    	int n,i,j;
    	printf("Introduceti o valoare lui N: ");
    	if(scanf("%d",&n)!=1)
    	{
    		printf("Date eronate.");
    		exit(1);
    	}
    	for(i=n;i>=1;i--)
    	{
    		for(j=n;j>=1;j--)
    		{
    			if(i==1 || i==j || i<j)
    				printf("%d ",j);
    		}
    	printf("\n");
    	}
    	return 0;
    }

     

    Demo(pentru N=10):

    triunghi.png


  2. Cerinta:  Pentru doua numere distincte a si b, sa se afiseze cmmdc al acestora.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    		int a,b,r,aux1,aux2;
    		printf("Introduceti 2 numere:\n");
    		if(scanf("%d%d",&a,&b)!=2)  // Aeasta conditie afiseaza o eroare atunci cand se va introduce o litera.
    		{
    			printf("Date eronate");   
    			exit(1);
    		}
    		aux1=a;     // folosesc acest auxiliar pentru a salva valoarea variabilei b
    		aux2=b;		// folosesc acest auxiliar pentru a salva valoarea variabilei b
    		while(b!=0)
    		{
    			r=a%b;   // se va face restul impartirii lui a la b, iar ciclul se repeta pana cand b este egal cu 0
    			a=b;    // variabila a va primi valoarea lui b cat timp este indeplinita expresia de mai sus (b!=0)
    			b=r;
    		}
    	printf("CMMDC(%d,%d) = %d",aux1,aux2,a);  // in paranteze voi afisa valorile initiale ale lui a si b prin auxiliare.
    }

     


  3. Cerinta: Creati un program C care transforma orele si minutele in secunde.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int ore,minute,secunde,rezultat;
    	printf("Introduceti timpul in ore, minute si secunde:\n");
    	if(scanf("%d%d%d",&ore,&minute,&secunde)!=3)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	rezultat=ore*3600+minute*60+secunde;
    	printf("In total s-au obtinut %d secunde.",rezultat);
    	return 0;
    }

     


  4. Cerinta: Sa se creeze un program care ordoneaza in ordine descrescatoare 3 numere intregi introduse de la tastatura.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int a,b,c,aux;
    	printf("Introduceti numerele:\n");
    	if(scanf("%d%d%d",&a,&b,&c)!=3)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	if(a<b)
    	{
    		aux=a;
    		a=b;
    		b=aux;
    	}
    	if(b<c)
    	{
    		aux=b;
    		b=c;
    		c=aux;
    	}
    	if(a<b)
    	{
    		aux=a;
    		a=b;
    		b=aux;
    	}
    	printf("Numerele puse in ordine descrescatoare:\na=%d\nb=%d\nc=%d",a,b,c);
    	
    	return 0;
    }

     


  5. Cerinta: Sa se creeze un program care ordoneaza in ordine crescatoare 3 numere intregi introduse de la tastatura.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int a,b,c,aux;
    	printf("Introduceti numerele:\n");
    	if(scanf("%d%d%d",&a,&b,&c)!=3)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	if(a>b)
    	{
    		aux=a;
    		a=b;
    		b=aux;
    	}
    	if(b>c)
    	{
    		aux=b;
    		b=c;
    		c=aux;
    	}
    	if(a>b)
    	{
    		aux=a;
    		a=b;
    		b=aux;
    	}
    	printf("Numerele puse in ordine crescatoare:\na=%d\nb=%d\nc=%d",a,b,c);
    	
    	return 0;
    }

     


  6. Cerinta:  Creati un program C care transforma o litera mica in majuscula.

    // char c este litera mica, transform-o in majuscula
    #include <stdio.h>
    #include <conio.h>
    
    int main()
    {
    	char c;
    	printf("Introduceti un caracter: ");
    	c=getche();
    	printf("\n");
    	if(c>='a'&&c<='z'||c>='A'&&c<='Z')
    		if(c>='a'&&c<='z')
    			printf("Majuscula literei '%c' este '%c'",c,c-'a'+'A');
    		else
    			printf("Nu ati introdus o litera mica.");
    	else
    		printf("Nu ati introdus un caracter.");
    	
    	return 0;
    		
    }

     


  7. Cerinta: Pentru un numar intreg, pozitiv 'a', sa se determine daca acesta este sau nu patrat perfect.

    # include <stdio.h>
    # include <stdlib.h>
    # include <math.h>
    int main()
    {
    	int a,n;
    	printf("Introduceti un numar intreg: \n");
    	if(scanf("%d",&a)!=1||a<=0)
    	{
    		printf("Date eronate.");
    		exit(1);
    	}
    	n=sqrt(a);
    	if(n*n==a)
    		printf("%d este patrat perfect.\n",a);
    	else
    		printf ("%d nu este patrat perfect.\n",a);
    
    	return 0;
    }

     


  8. Cerinta: Sa se scrie un program C care determina media aritmetica dintre 3 numere intregi.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int a,b,c;
    	double ma;
    	printf("Introduceti 3 numere intregi:\n");
    	if(scanf("%d%d%d",&a,&b,&c)!=3)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	ma=(a+b+c)/3.0;  // aici punem 3.0 deoarece se aplica regula conversiei implicite ( impartim numerele intregi a, b, c la un numar real ( 3.0 ), rezultand un real, exemplu: 5.32 )
    	
    	printf("Media aritmetica este: %g",ma);		// operatorul %g este folosit pentru a afisa o valoare reala ( variabila "ma" este de tip double, care reprezinta un numar real )
    	return 0;
    }

     


  9. Cerinta: Sa se scrie un program C care determina maximul dintre 3 numere intregi.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int a,b,c,max;
    	printf("Introduceti 3 numere intregi:\n");
    	if(scanf("%d%d%d",&a,&b,&c)!=3)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	if(a>b)
    		max=a;
    	else
    		max=b;
    	if(max<c)
    		max=c;
    	
    	printf("Maximul dintre %d,%d,%d este: %d",a,b,c,max);
    		
    	return 0;
    }

     


  10. Cerinta: Sa se scrie un program care sa determine daca un intreg pozitiv preluat de la consola este prim sau nu.

    #include <stdlib.h>
    #include <stdio.h>
    int main()
    {
    	int nr, prim;
    	printf("Introduceti un nr intreg: ");
    	if(scanf("%d",&nr)!=1 || nr<0)
    	{
    		printf("Date eronate!!");
    		exit(1);
    	}
    	if(nr==2);
    	prim=1;
    	if(nr==1)
    	prim=0;
    	if(nr==0)
    	prim=0;
    	for( int i=2; i<=(nr/2); i++)
    	{
    		if(nr%i==0)
    			prim=0;
    	}
    	if(prim==1)
    		printf("%d este numar prim.\n",nr);
    	else
    		printf("%d nu este numar prim.\n",nr);
    	
    	return 0;
    }

     


  11. Cerinta:  Pentru toate perechile distincte de numere intregi, inferioare unui n preluat de la consola, sa se afiseze cmmdc al acestora.

    #include<stdlib.h>
    #include<stdio.h>
    
    int main()
    {
    	int n,i,j;
    	printf("Introduceti o valoare pozitiva lui N: ");
    	if(scanf("%d",&n)!=1)
    	{
    		printf("Date eronate");
    		exit(1);
    	} 
    	if(n<=0)
    		printf("N<=0. Introduceti o valoare pozitiva.");	
    		
    	for (i=1;i<=n;i++)
    	{
    		for (j=i+1;j<=n;j++)
    		{
    				int a=i,b=j,r;
    				while (b!=0)
    				{
    					r=a%b;
    					a=b;
    					b=r;
    				}
    				printf("CMMDC(%d, %d)= %d\n",i,j,a);
    		}
    	}
    	return 0;
    }

     


  12. Cerinta: Sa se scrie un program C pentru rezolvarea ecuatiei de gradul 1.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      float a,b,x;
      printf("Introduceti valorile lui a si b: ");
      if(scanf("%f%f",&a,&b)!=2)
       {
         printf("Date eronate!");
         exit(1);
       }
      if(a!=0)
      	{
            x=-b/a;
            printf("Valoarea lui x este: %g",x);
    	}   
      else
           if(b!=0)     
     			printf("Ecuatie imposibila.");
            else 
    		   	printf("Ecuatie nedeterminata.");
    	return 0;
    }

     


  13. Cerinta: Sa se calculeze suma primelor k numere impare, unde k este un intreg pozitiv ce se preia de la consola.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
    	int k,sum,i;
    	printf("Sa se calculeze suma primelor k numere impare.\n\n");
    	printf("Introduceti un numar intreg, pozitiv pentru k: ");
    	if(scanf("%d",&k)!=1||k<=0)
    	{
    		printf("Date eronate!!");
    		exit(1);
    	}
    	sum=0;
    	for(i=1;i<=2*k;i+=2)  
    	{
    		sum+=i;
    	}
    	printf("Suma: %d",sum);
    	return 0;
    	
    }

     


  14. Cerinta: Sa se scrie un program C care sa afiseze toate cele 256 caractere ale codului ASCII extins: pe cate o linie nr. de ordine in tabelul ASCII si caracterul aferent. Afisarea trebuie sa se opreasca astfel incat sa permita citirea tabelului ecran cu ecran, invitand operatorul sa actioneze o tasta pentru a continua. Se va tine cont ca pe ecran se pot afisa 25 de linii.

    #include <stdio.h>
    #include <conio.h>
    int main()
    {
    	int i;
    	for(i=0; i<=255; i++)
    	{
    		printf("%d -> %c \n",i,i);
    		if((i+1)%23==0)
    		{
    			printf("\nApasati o tasta pentru a continua...\n");
    			getch();
    		}
    	}
    	return 0;
    }

     


  15. Cerinta: Se preia de la consola numarul termenilor ce urmeaza a fi prelucrati. Se cere sa se scrie un program care sa calculeze suma termenilor si media aritmetica a termenilor pozitivi (termenii NU se pastreaza in memorie, ci doar se prelucreaza).

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
       int n,x,i,sum=0;
       double ma=0;
       printf("Introduceti nr de termeni: ");
       if(scanf("%d",&n)!=1||n<=0)
         {
    	   printf("Date eronate");
    	   exit(1);
    	 }
       for(i=1;i<=n;i++)
        {
    	  printf("x=");
    	  if(scanf("%d",&x)!=1||x<=0)
    	   {
    	     printf("Date eronate");
    	     exit(1);
    	   }
    	  sum=sum+x;
    	}
    	ma=(double)sum/n;
       printf("Suma: %d\nMedia aritmetica: %g",sum,ma);
    }

     


  16. Cerinta: Se preia de la consola numarul termenilor ce urmeaza a fi prelucrati. Se cere sa se scrie un program care sa calculeze suma termenilor si produsul termenilor introdusi.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int i,n;
    	double x,s,p;
    	printf("Introduceti numarul de termeni: ");
    	if(scanf("%d",&n)!=1||n<0)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	s=0;
    	p=1.0f;
    	for(i=1;i<=n;i++)
    	{
    		printf("x%d= ",i);
    		if(scanf("%lf",&x)!=1)
    		{
    			printf("Date eronate");
    			exit(1);
    		}
    		s+=x;
    		p*=x;
    		
    	}
    	printf("Suma: %g\t\tProdus: %g",s,p);
    	
    		
    	return 0;
    }

     


  17. Cerinta: Pentru un numar a real si un p intreg preluate de la consola sa se calculeze a la puterea p prin inmultiri repetate.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int p,cp;
    	double a,nr;
    	printf("Sa se introduca o valoare reala a la puterea p intreg:\n");
    	if(scanf("%lf%d",&a,&p)!=2)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	if(a==0 && p<0)
    		printf("Calcul imposibil");
    	else
    		nr=1;
    		cp=abs(p);
    		for(int i=1;i<=cp;i++)
    		{
    			nr*=a;
    		}
    	printf("\n%g^%d= %g",a,p,p>=0?nr:1/nr);
    	return 0;
    }

     


  18. Cerinta: Sa se calculeze pentru o valoare n preluata de la consola, suma si produsul primelor n numere naturale folosind instructiunea FOR

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int n,s,i;
    	float p;
    	printf("Introduceti o valoare n: ");
    	if(scanf("%d",&n)!=1)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	s=0;
    	p=1.0f;
    	for(i=1;i<=n;i++)
    	{
    		s+=i;
    		p*=i;
    	}
    	
    	printf("Suma: %d\t\tProdus: %g",s,p);
    }

     


  19. Cerinta: Sa se scrie un program care, preluand un numar intreg [1-10] de la consola, afiseaza transcrierea sa in notatie romana (cifre romane) .

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int cifra;
    	printf("Introduceti un numar intreg cuprins in intervalul [1-10] pentru a afisa notatia acestuia in cifre romane: ");
    	if(scanf("%d",&cifra)!=1||cifra<=0||cifra>10)
    	{
    		printf("Nu ati introdus o cifra cuprinsa in intervalul 1-10.");
    		exit(1);
    	}
    	if(cifra==1)
    		printf("%d -> I",cifra);
    	if(cifra==2)
    		printf("%d -> II",cifra);
    	if(cifra==3)
    		printf("%d -> III",cifra);
    	if(cifra==4)
    		printf("%d -> IV",cifra);
    	if(cifra==5)
    		printf("%d -> V",cifra);
    	if(cifra==6)
    		printf("%d -> VI",cifra);
    	if(cifra==7)
    		printf("%d -> VII",cifra);
    	if(cifra==8)
    		printf("%d -> VIII",cifra);
    	if(cifra==9)
    		printf("%d -> IX",cifra);
    	if(cifra==10)
    		printf("%d -> X",cifra);
    }

     


  20. Stiind ca dezvoltarea in serie ce poate aproxima numarul PI este: 

    PI=4*(1-1/3+1/5-1/7+...),

    Cerinta: sa se calculeze valoarea aproximativa a lui PI cu o eroare mai mica decat epsilon preluat de la consola.

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<conio.h>
    
    int main(){
    	float eps, pi, t;
    	int k;
    	
    	printf("Introduceti valoarea lui eps: ");
    	if(scanf("%f",&eps)!=1)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    	t = 1;
    	pi = 1;
    	k = 1;
    	while(fabs(t) > eps){
    		if (k % 2)							// daca k este par, semn negativ
    			t = - 1.0 / (2*k + 1);			// punem 1.0 pentru ca toate sunt int si altfel o sa dea rezultat intreg
    		else								// altfel, daca k este impar, semn pozitiv
    			t = 1.0 / (2*k + 1);
    		pi += t;							// bagam t in suma
    		k++;								// incrementam k
    	}
    	pi *= 4;								// formula e 4 * <ce am calculat deja>
    	
    	printf("calculat:\tpi = %g\n", pi);
    	printf("math.h:  \tpi = %g", M_PI);		// M_PI se numeste constanta pi din math.h
    
    	getch();
    	return 0;
    }

     


  21. Cerinta: Pentru un numar intreg n preluat de la consola sa se calculeze suma cifrelor sale. Programul interogheaza repetat operatorul asupra continuarii executiei, aceasta incheindu-se atunci cand la intrebarea "Doriti sa continuati?" operatorul raspunde tastand n sau N.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int cifra,n,s;
    	char ch;
    
    	do
    	{
    		printf("Introduceti numarul: ");
    		if(scanf("%d",&n)!=1||n<0)
    		{
    			printf("Date eronate");
    			exit(1);
    		}
    		s=0;
    		do
    		{
    			cifra=n%10;
    			s+=cifra;
    			n=n/10;
    		}
    		while(n);
    		printf("Suma este: %d",s);
    		fflush(stdin);
    		printf("\nDoriti sa continuati?(n/d)");
    		scanf("%c",&ch);	
    	}
    	while(ch!='n'&&ch!='N');
    	return 0;
    }

     


  22. Cerinta: Sa se calculeze pentru o valoare intreaga n preluata de la consola, suma si produsul n numere naturale:

    a) folosind instructiunea WHILE;

    b) folosind instructiunea DO WHILE;

     

    Instructiunea WHILE:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int n,s,i;
    	float p;
    	printf("Introduceti o valoare intreaga n pentru a se calcula suma si produsul a primelor n termeni:\nn= ");
    	if(scanf("%d",&n)!=1)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    		i=1;
    		p=1.0f;
    		s=0;
    		while(i<=n)
    	{
    		p=p*i;
    		s=s+i;
    		i++;
    	}
    	printf("Suma primelor n termeni este: %d\nProdusul primelor n termeni este: %g",s,p);
    	return 0;
    }

     

    Instructiunea DO WHILE:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int n,s,i;
    	double p;
    	printf("Introduceti o valoare intreaga n pentru a se calcula suma si produsul a primelor n termeni:\nn= ");
    	if(scanf("%d",&n)!=1)
    	{
    		printf("Date eronate");
    		exit(1);
    	}
    		i=1;
    		p=1.0f;
    		s=0;
    		
    	do
    	{
    		p=p*i;
    		s=s+i;
    		i++;
    	}
    	while(i<=n);
    
    	printf("Suma primelor n termeni este: %d\nProdusul primelor n termeni este: %g",s,p);
    	return 0;
    }

     


  23. Cerinta:  Sa se scrie un program C pentru rezolvarea ecuatiei de gradul 2.

    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int a,b,c,delta,x1,x2,x;
    	float cpx1,cpx2;
    	printf("Introduceti 3 numere intregi de la tastatura:\n");
    	if(scanf("%d%d%d",&a,&b,&c)!=3)
    	{
    		printf("Date incorecte");
    		exit(1);
    	}
    	
    	if(a!=0)
    	{
    		delta=pow(b,2)-4*a*c;
    		printf("Ecuatie de gradul 2.\nDelta: b^2-4*a*c: %d\n",delta);
    		if(delta>0)
    			{
    				x1=(-b+sqrt(delta))/(2*a);
    				x2=(-b-sqrt(delta))/(2*a);
    				printf("Delta > 0. Avem 2 solutii reale: x1= %d si x2= %d.",x1,x2);
    				
    			}
    		else
    			if(delta==0)
    			{
    				x=-b/(2*a);
    				printf("Delta = 0. Avem 2 radacini egale: x1=x2= %d",x);
    		 	}
    		 	else
    		 	{
    				cpx1=-b/(2*a);
    				cpx2=(sqrt(-delta))/(2*a);
    				printf("Delta < 0. Ecuatia are radacini complexe. O parte reala si una imaginara.\nx1= %.3f si x2= %.3f",cpx1,cpx2);
    			}
    			
    	}
    	else
    		if(b!=0)
    		{
    		x=-c/b;
    		printf("Ecuatie de gradul 1. X= %d",x);
    		}
    		else
    			if(c!=0)
    				printf("Ecuatie imposibila");
    			else
    				printf("Ecuatie nedeterminata");
    		
    	return 0;
    }

     

    Sau:

    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
    	int a,b,c,delta,x1,x2,x;
    	float cpx1,cpx2;
    	printf("Introduceti 3 numere intregi de la tastatura:\na= ");
    	scanf("%d",&a);
    	printf("b= ");
    	scanf("%d",&b);
    	printf("c= ");
    	scanf("%d",&c);
    	
    	if(a!=0)
    	{
    		delta=pow(b,2)-4*a*c;
    		printf("Ecuatie de gradul 2.\nDelta: b^2-4*a*c: %d\n",delta);
    		if(delta>0)
    			{
    				x1=(-b+sqrt(delta))/(2*a);
    				x2=(-b-sqrt(delta))/(2*a);
    				printf("Delta > 0. Avem 2 solutii reale: x1= %d si x2= %d.",x1,x2);
    				
    			}
    		else
    			if(delta==0)
    			{
    				x=-b/(2*a);
    				printf("Delta = 0. Avem 2 radacini egale: x1=x2= %d",x);
    		 	}
    		 	else
    		 	{
    				cpx1=-b/(2*a);
    				cpx2=(sqrt(-delta))/(2*a);
    				printf("Delta < 0. Ecuatia are radacini complexe. O parte reala si una imaginara.\nx1= %.3f si x2= %.3f",cpx1,cpx2);
    			}
    			
    	}
    	else
    		if(b!=0)
    		{
    		x=-c/b;
    		printf("Ecuatie de gradul 1. X= %d",x);
    		}
    		else
    			if(c!=0)
    				printf("Ecuatie imposibila");
    			else
    				printf("Ecuatie nedeterminata");
    		
    	return 0;
    }