Sunteți pe pagina 1din 13

Ministerul Educatiei al Republicii Moldova

Universitatea de stat din moldova

Facultatea de Matematica si Informatica

Operatii de baza in Linia de comanda

DARE DE
SEAMA

Realizarea programelor in
Limbajul C

Realizat : Sandu Cristian,


Studentul anului-I [Grupa I12]

Verificat : Siminel Victoria


(Lector Universitar)

Chiinu 2015

C este un limbaj de programare standardizat, compilat, de nivel mediu. Este


implementat pe majoritatea platformelor de calcul existente azi, i este cel mai popular
limbaj de programare pentru scrierea de software de sistem. Este apreciat pentru
eficiena codului obiect pe care l poate genera, i pentru portabilitatea sa.
A fost dezvoltat la nceputul anilor 1970 de Ken Thompson i Dennis Ritchie, care
aveau nevoie de un limbaj simplu i portabil pentru scrierea nucleului sistemului de
operare UNIX.
Sintaxa limbajului C a stat la baza multor limbaje create ulterior i nc populare
azi: C++, Java, JavaScript, C#, D.
C este un limbaj de programare relativ minimalist ce opereaz n strns legtur
cu hardware-ul, fiind cel mai apropiat de limbajul de asamblare fa de majoritatea
celorlalte limbaje de programare
C are urmatoarele caracteristici importante:
Este un limbaj de baz simplu, cu importante funcionaliti cum ar fi funciile
matematice sau cele de manipulare ale fiierelor
Este focalizat pe paradigma programrii procedurale, care faciliteaz
programarea ntr-un mod structurat
Utilizeaz un set simplu de tipuri de date ce mpiedic multe operaii
neintenionate
Folosete un limbaj preprocesor, preprocesorul C, pentru sarcini cum ar fi
definirea de macrouri i includerea mai multor fiiere surs
Permite accesarea la nivel sczut a memoriei calculatorului prin
utilizarea pointerilor
Permite folosirea parametrilor, care sunt comunicai funciilor prin valoare i nu
prin referin
Pointeri la funcii, ce permit forme rudimentare de nchidere (englez closure) i
polimorfism
Declararea variabilelor
Structuri de date sau tipuri de date agregate, definite de utilizator prin ( struct ),
ce permit ca date nrudite s fie combinate i manipulate ca un ntreg

Chiinu 2015

Sandu Cristian ==> Varianta 8

Conditia: De calculat suma elementelor de pe diagonala principala si secundara.


#include <stdio.h>
#include <stdlib.h>
int main()
{int a[5][5],i,j,n,s1=0,s2=0;

printf("Introdu Linii=>");
scanf("%d",&n);
printf("Introdu Coloane=>");
scanf("%d",&n);
printf("Matricea=>\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{ printf("\n");
for(j=0;j<n;j++)
printf("%4d",a[i][j]);}
printf("\nCalculam Suma el.de pe diag.princ.(S1) si suma elem.de pe diag.sec.(S2)\n");
{for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j) s1+=a[i][j];}
printf("\nS1=%d",s1);
{ for(i=0;i<n;i++)
s2+=a[i][n-1-i];
printf("\nS2=%d",s2);}
return 0;}

Conditia : De inlocuit elementele de pe diagonala principala si secundara cu 0


#include <stdio.h>
#include <stdlib.h>
int main()
{int a[5][5],i,j,n;
printf("Introdu Linii=>");
scanf("%d",&n);
printf("Introdu Coloane=>");
scanf("%d",&n);
printf("Matricea=>\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{ printf("\n"); for(j=0;j<n;j++)
printf("%4d",a[i][j]);}
printf("\n Inlocuim elem.de pe diag.princ. si elem.de pe diag.sec. cu 0\n");

for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j) a[i][j]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i+j==n-1) a[i][j]=0;
printf("\n Matricea finala=>");
for(i=0;i<n;i++) { printf("\n");
for(j=0;j<n;j++)
printf("%4d",a[i][j]);} return 0; }

Functii
Conditia: De afisat elementele pare de pe locuri impare intr-un vector.
#include <stdio.h>
void introd(int n,int v[]);
void afis(int n,int v[]);
void pare(int n,int v[]);
int main()
{int n,v[10];
printf("Introduceti dimensiunea vectorului==> ");
scanf("%d",&n);
printf("Introduceti elementele vectorului==>\n");
introd(n,v);
afis(n,v);
pare(n,v);
return 0; }
void introd(int n,int v[])
{int i;
for(i=0;i<n;i++)
scanf("%d",&v[i]);
}
void afis(int n,int v[])
{int i;

for(i=0;i<n;i++)
printf("%i",v[i]);}
void pare(int n,int v[])
{ int i;
for(i=0;i<n;i++)
if (i%2!=0&&v[i]%2==0)
printf("\nPozitia impara==>v[%d]\nElementul par de pe pozitia impara==>%d",i,v[i]);}

Conditia: De calculat cel mai mare divizor comun a 2 numere.


#include <stdio.h>
#include <stdlib.h>
void cmmdc(int n,int m);
main()
{int n,m;
printf("Introduceti valoarea lui n=>\t");
scanf("%d",&n);
printf("Introduceti valoarea lui m=>\t");
scanf("%d",&m);
cmmdc(n,m);}
void cmmdc(int n,int m){
while(n!=m){ if(n>m)
n=n-m;
else
m=m-n;}
printf("Cel mai mare divizor comun este=> %d",n);}

Conditia generala pentru urmatoarele 3 functii:

Aflati: z(x,y+6)-z(x3+y,cos x)+z(5,y)


Daca : z(b,t) = b/t+5 b2/t3+1

Realizarea functiei date:


#include<stdio.h>
#include<conio.h>
#include<math.h>
float F1(float b,float t)
{ float rez;
rez=b/t+5-b*b/pow(t,3)+1;
return rez;
}
main()
{ float x,y,d1,d2,d3,q;
printf("Indtrodu X=");
scanf("%f",&x);
l1: printf("Introdu Y=");
scanf("%f",&y);
if((y-5)==0){printf("Introduceti va rog alta valoare !=0 \n"); goto l1;}
d1=F1(x,y+6);
d2=F1(pow(x,3)+y,cos(x));
d3=F1(5,y);
printf("\nF1=%f",d1);
printf("\nF2=%f",d2);

printf("\nF3=%f",d3);
q=d1-d2+d3;
printf("\nRezultat=%f",q);
getch();}

Functie in functie
#include<stdio.h>
#include<conio.h>
#include<math.h>
float F2(float t)
{ float r;
r=t-5;
return r;
}
float F1(float b,float t)
{ float rez;
rez=b+t/F2(t);
return rez;
}
main()
{ float x,y,d1,d2,d3,q;
printf("Indtrodu X=");
scanf("%f",&x);
l1: printf("Introdu Y=");
scanf("%f",&y);
if((y-5)==0){printf("Introduceti va rog alta valoare !=0 \n"); goto l1;}
d1=F1(x,y+6);
d2=F1(pow(x,3)+y,cos(x));
d3=F1(5,y);
printf("\nF1=%f",d1);
printf("\nF2=%f",d2);
printf("\nF3=%f",d3);
q=d1-d2+d3;
printf("\nRezultat=%f",q);
getch();}

Pointeri
Conditia: De realizat programul cu functii si pointeri

#include<stdio.h>
#include<conio.h>
#include<math.h>
void Fun(float *b,float *t)
{
*b=*b+*t;
*t=*b-*t;
}
main()
{ float x,y,d1,d2,d3;
printf("Indtrodu X=");
scanf("%f",&x);
l1: printf("Introdu Y=");
scanf("%f",&y);
if( (y+5)==0 || (pow(y,3)+1)==0 ) {printf("Introduceti va rog alta valoare !=0 \n"); goto l1;}
Fun(&x,&y);
d1=x/y+5;
d2=pow(x,2)/pow(y,3)+1;
d3=d1-d2;
printf("d1=%f",d1);
printf("\nd2=%f",d2);
printf("\nRez=%f",d3);
getch();}

Conditia: De afisat maximul,minimul si diferenta lor sub fiece coloana a unei matrici
#include<stdio.h>
#include<limits.h>
#define Fi for(i=0;i<n;i++)
#define Fj for(j=0;j<m;j++)
void introd(int n,int*v,int m);
void afis(int n,int*v,int m);
void diferenta(int n,int *v,int m);
int main()
{ int n=3,m=3,*v;
v=(int*)malloc(n*m*sizeof(int));
printf("Introdu Linii=>");
scanf("%d",&n);
printf("Introdu Coloane=>");
scanf("%d",&m);
introd(n,v,m);
afis(n,v,m);
return 0;}
//Pentru matrice 3*3//
void introd (int n,int*v,int m){
int i,j;printf("Introdu matricea==>\n");
Fi Fj
scanf("%d",v+i*m+j);}
void afis(int n,int*v,int m)
{ int i,j; printf("\nCalculam:Max de pe poz.imp,Min de pe poz.pare si diferenta lor,pe coloane=>\n");
Fi { printf("\n"); Fj
printf("v[%i]=%d
",i,*(v+i*m+j));}diferenta(n,v,m);}
void diferenta(int n,int*v,int m)
{int j,i,k=0;
int*a = (int*)malloc(n * 3 * sizeof(int)); Fj {
int min=INT_MAX;
int max=INT_MIN; Fi
{
if (*(v+i*m+j)>max&&i%2!=0)
{ max=*(v+i*m+j);}
if (*(v+i*m+j)<min&&i%2==0)
{min=*(v+i*m+j);}
}
a[k] = max;
k++;
a[k] = min;
k++;
a[k] = max - min;
k++;}
printf("\n");
for(k=0;k<n*3;k+=3)
{ printf("Max=>%i\t\t",a[k]);}
printf("\n");
for(k=1;k<n*3;k+=3)
{ printf("Min=>%i\t\t",a[k]);}
printf("\n");
for(k=2;k<n*3;k+=3)
{ printf("Dif=>%i\t\t",a[k]);}
printf("\n");
free(a);
a = 0;
getch();

Siruri de caractere
Problema 260: De afisat sirul pin la caracterul : , dupa caracterul : si intre caracterele : ,
realizind programul doar cu ajutorul vectorilor.

#include <stdio.h>
#include <conio.h>
#define NL puts("");
void poz(char d[])
{ printf("Pozitia=> ");for(int i=0,j=0;d[i]!='\0';i++,j++){if(j==10)j=0;printf("%i",j);}}
main()
{ char s[30]; char v[100];
int i=0,j=0,nr=0,f=0,y=0,p=0;
char w=':';
puts("Introduce-ti un sir ce ar contine cel putin un caracter ':' =>");
l1:y=0;p=0;gets(s);
NL
poz(s);
printf("\nSirul==> %s",s);
NL
printf("\nSirul pina la ':'==> ");
while (s[i]!=w) {putchar(s[i]);i++;}
i++;j++;
f=i;
printf("\nSirul dupa ':'==> ");
for(i=f;s[i]!='\0';i++) putchar(s[i]);
puts("\nSirul dintre caracterele ':' =>");
for(i=f;s[i]!=w;i++) putchar(s[i]);
for(i=0;s[i]!='\0';i++) if(w==s[i]) nr++;

printf("\nCaracterul==> '%c' in sirul=> <%s> se repeta de=> '%d' ori\n",w,s,nr);


getch();
}

<string.h>

Conditia:
1) 3 var. car. : s1=numele,s2=prenumele,s3-patronimicul
2) Sa se concatineze in s1: num+prenum
3) Cate vocale sunt in S1 ?
4) Sa se inverseze patronimicul si-l concatinam cu S1
5) Sa se calculeze numarul consoanelor
6) Sa se copieze in s4 primele 3 car.din S1
7) Sa se compare S4 cu S1
8) Sa se compare primele 3 caractere
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{ int i=0,j=0,nr=0,n=0;
char s1[100]="sandu ",s2[100]="cristian ",s3[100]="ghenadie ",s4[100],s5[100]="euio";
printf("1) Numele=>%s ",s1); printf("\tPrenumele=>%s",s2);printf("\tPatronimicul=>%s\n",s3);
getch();
strcat(s1,s2);
printf("\n2) %s",s1);
getch();
for(i;s1[i];i++) if(s1[i]=='a' || s1[i]=='e' || s1[i]=='o' || s1[i]=='u' || s1[i]=='i') nr++;
printf("\n3) In sirul s1=> %s ,numarul de vocale este=> %i",s1,nr);
getch();
strrev(s3);
strcat(s1,s3);
printf("\n4) %s",s1); getch();
for(i=0;s1[i];i++) if(s1[i]>97&&s1[i]<123) {if(!(strchr(s5,s1[i]))) n++;}
printf("\n5) In sirul s1=> %s ,numarul de consoane este:=> %i",s1,n);getch();
strncpy(s4,s1,3);s4[3]=NULL;
printf("\n6) Sirul s4 =>%s",s4);getch();
if(strcmp(s1,s4)==0) printf("\n7) Sirurile s4 si s1 coincid");else printf("\n7) Sirurile s4 si s1 nu coincid");getch();
if(strncmp(s1,s4,3)==0) printf("\n8) Primele 3 caractere din s4 si s1 coincid"); else printf("\n8) Primele 3 caractere
din s4 si s1 nu coincid");getch(); }}

Structuri

Conditia: De realizat o structura cu Tehnica [3 cimpuri si 5 inregistrari]


#include <stdio.h>
#include <conio.h>
#include <math.h>
double dummy=sin(0.0);
struct tehnica{ char clasa[50];
char nume[50];
int an;
char regiune[40];
char culoare[20]; };
void main()
{ struct tehnica shop[5]; int w;
for (w=0;w<3;w++)
{ printf("Introduce-ti <clasa> in care se include tehnica dorita => ");
scanf("%s",&shop[w].clasa);
printf("Introduce-ti <numele> tehnicii dorite => ");
scanf("%s",&shop[w].nume);
printf("Introduce-ti <anul> aparitiei tehnicii dorite => ");
scanf("%i",&shop[w].an);
printf("Introduce-ti <regiunea> tehnicii => ");
scanf("%s",&shop[w].regiune);
printf("Introduce-ti <culoarea> tehnicii,pe care o preferati => ");
scanf("%s",shop[w].culoare); puts("");}
for (w=0;w<3;w++)
printf("Clasa in care se include tehnica dvs. este = %s\nNumele tehnicii dvs. este = %s\nAnul aparitiei tehnicii dvs.
este = %i \nRegiunea tehnicii dvs. este = %s \nCuloarea tehnicii dvs. este =
%s\n",shop[w].clasa,shop[w].nume,shop[w].an,shop[w].regiune,shop[w].culoare);
getch();}