You are on page 1of 7

Capitolul 8

1. Scrieti un program care citeste de la tastatura un vector de max 10 nr intregi


impreuna cu dimensiunea sa efectiva si separa acest vector in 2 vectori : primul va fi
format din nr pare din vectorul initial iar al doilea din nr impare.Citirea vectorului se va
face cu ajutorul unei functii cu prototipul : void cit_vect(int v[10],int dim)

#include<stdio.h>
#include<stdlib.h>
void cit_vect(int v[10],int dim)
{
int i;
for(i=0;i<dim;i++){printf("v[%d]= ",i);
scanf("%d",&v[i]);
}
}
void afisare_vect(int v[10],int dim)
{
int i;
for(i=0;i<dim;i++)printf("\nv[%d]=%d",i,v[i]);
}
int main()
{
int n,a[10],b[10],c[10],i,j=0,k=0;
printf("n= ");
scanf("%d",&n);
cit_vect(a,n);
for(i=0;i<n;i++)if(a[i]%2==0){b[j]=a[i];
j++;}
else{c[k]=a[i];
k++;}
afisare_vect(a,n);
printf("\n");
afisare_vect(b,j);
printf("\n");
afisare_vect(c,k);

printf("\n");
system("PAUSE");
return 0;
}

2. Reluati programul anterior, dar pentru formarea vectorilor scrieti si utilizati doua
functii avand prototipurile : int pare(int v[10],int par_v[10]) si int impare(int v[10],int
impar_v[10])
#include<stdio.h>
#include<stdlib.h>
void cit_vect(int v[10],int dim)
{
int i;
for(i=0;i<dim;i++){printf("v[%d]= ",i);
scanf("%d",&v[i]);
}
}
void afisare_vect(int v[10],int dim)
{
int i;
for(i=0;i<dim;i++)printf("\nv[%d]=%d",i,v[i]);
}
int n;
int pare(int v[10],int par_v[10])
{
int i,j;
for(i=0;i<n;i++)if(v[i]%2==0)j++;
return j;
}
int impare(int v[10],int impar_v[10])
{
int i,k=0;
for(i=0;i<n;i++)if(v[i]%2!=0)k++;
return k;
}
int main()
{
int a[10],j,k,b[10],c[10],i;
printf("n= ");
scanf("%d",&n);
cit_vect(a,n);
j=pare(a,b);
k=impare(a,c);
printf("\nin vector sunt %d numere pare ",j);
printf("\nin vector sunt %d numere impare\n ",k);
k=0;j=0;
for(i=0;i<n;i++)if(a[i]%2==0){b[j]=a[i];
j++;}
else{c[k]=a[i];
k++;}
afisare_vect(a,n);
printf("\n");
afisare_vect(b,j);
printf("\n");
afisare_vect(c,k);
printf("\n");
system("PAUSE");
return 0;
}
3. Scrieti un program care calculeaza suma complexa a elementelor dintr-un tablou
unidimensional de numere complexe

a) b) #include<stdio.h>
#include<stdlib.h>
typedef struct{
float re;
float im;
}complex;
complex v[10];
int main(){
int i,n;
float x=0,y=0;
printf("n= "); scanf("%d",&n);
for(i=0;i<n;i++){printf(" Re(v[%d])= ",i);
scanf("%f",&v[i].re);
printf(" Im(v[%d])= ",i);
scanf("%f",&v[i].im); }
for(i=0;i<n;i++){x+=v[i].re;
y+=v[i].im;}
printf("\n Suna numerelor din vector este %.1f+%.1fi.",x,y);
printf("\n");
system("PAUSE");
return 0;
}

c) #include<stdio.h>
#include<stdlib.h>
typedef struct{
float re;
float im;
}complex;
complex v[10];
float suma_re(complex a,complex b)
{int s;s=a.re+b.re;
return s;}
float suma_im(complex a,complex b)
{int s;s= a.im+b.im;
return s;}
int main(){
int i,n;
complex x;
x.re=0;x.im=0;
printf("n= "); scanf("%d",&n);
for(i=0;i<n;i++){printf(" Re(v[%d])= ",i);
scanf("%f",&v[i].re);
printf(" Im(v[%d])= ",i);
scanf("%f",&v[i].im);
}
for(i=0;i<n;i++){x.re=suma_re(x,v[i]);
x.im=suma_im(x,v[i]);}
printf("\n Suna numerelor din vector este %.1f+%.1fi.",x.re,x.im);
printf("\n");
system("PAUSE");
return 0;
}

4. Reluati programul anterior dar pentru calculul sumei a doua numere complexe
scrieti si utilizati o functie avand prototipul : complex suma (complex a,complex b)

#include<stdio.h>
#include<stdlib.h>
typedef struct{
float re;
float im;
}complex;
complex x,y;
complex s;
complex suma(complex a,complex b)
{ complex s;
s.re=a.re+b.re;
s.im=a.im+b.im;
printf("\n Suna numerelor din vector este %.1f+%.1fi.",s.re,s.im);

}
int main(){
printf("Partea reala a numarului x este :");
scanf("%f",&x.re);
printf("Partea imaginara a numarului x este :");
scanf("%f",&x.im);
printf("Partea reala a numarului y este :");
scanf("%f",&y.re);
printf("Partea imaginara a numarului y este :");
scanf("%f",&y.im);
suma(x,y);
printf("\n");
system("PAUSE");
return 0;
}

5. Scrieti un program care citeste de la tastatura o matrice de nr reale de dimensiuni


100 x 100 impreuna cu dimensiunile sale efective si afiseaza elementele maxime de pe
fiecare linie si apoi de pe fiecare coloana.

#include<stdlib.h>
#include<stdio.h>
int n,m[100][100],v[100];
float max_vector(int dim, float vec[100])
{int i,max=m[dim][0];
for(i=0;i<n;i++)if(m[dim][i]>max)max=m[dim][i];
return max; }
int main()
{ int i,j,max;
printf("Introduceti ordinul matricei:");
scanf("%d", &n);
for(i=0;i<n;i++)
for(j=0;j<n;j++){printf("m[%d][%d]=", i,j); scanf("%d", &m[i][j]); }
for(i=0;i<n;i++)printf("Maximul de pe linia %d este: %.2f .\n", i,max_vector(i,v));
system("pause");
return 0; }

6. Scrieti un program care citeste un numar natural si calculeaza si afiseaza


secventa Halberstam a acestui numar .

#include<stdlib.h>
#include<stdio.h>
int halberstam(int numar)
{int var,i=1;
var=numar;
while(var!=1){if(var%2==0)var=var/2;
else {var=var/3;
var++; }
printf("S%d= %d\n",i,var);
i++; }
return 0; }
int main()
{int a;
printf("Introduceti pe a:");
scanf("%d", &a);
halberstam(a);
system("pause");
return 0;
}

7. Scrieti o functie care afiseaza o intrebare si citeste raspunsul utilizatorului care


poate fi doar dpentru DA sau npentru NU ;citirea se repeat pana cand raspunsul
este d sau n.

#include<stdlib.h>
#include<stdio.h>
int ok(char s[])
{char a[2];
printf("%s\n", s);
scanf("%c", &a[1]);
while(a[1]!='d' && a[1]!='n') scanf("%c", &a[1]);
if(a[1]=='d')return 1;
if(a[1]=='n') return 0; }
int main()
{int x;
char q[]="Ai fost la cumparaturi?";
x=ok(q);
if(x==1) printf("Ati raspuns ""Da"" .\n");
else printf("Ati raspuns ""Nu"" .\n ");
system("pause");
return 0; }

8. Scrieti un program care calculeaza suma de plata [entru o activitate primind


numarul de ore lucrate si salariul orar.Daca numarul de ore lucrate este mai mic decat
sau egal cu 40 se plateste salariul orar. Pentru orele cuprinse intre 40 si 60 salariul
orar creste cu 50%.Pentru orele care depasesc 60 se plateste dublu.

#include<stdlib.h>
#include<stdio.h>
float suma_de_plata(int ore, float salariu)
{float suma; if(ore<40)
suma=salariu;
else if(ore>40 && ore<60)suma=salariu*1.5;
else suma=salariu*2;
return suma; }
int main()
{int h;
float sal;
printf("Introduceti numarul de ore:");
scanf("%d", &h);
printf("Introduceti salariul minim:");
scanf("%f", &sal);
printf("Suma de plata este:%.1f RON.", suma_de_plata(h,sal));
system("pause");
return 0; }

9. Scrieti o functie care cauta toate spatiile dintr-un sir de caractere si le inlocuiste cu
semnul -returnand numarul de spatii inlocuit.

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int p;
int inlocuieste(char sir[])
{int i,nr=0;
for(i=0;i<p;i++) {if(sir[i]==' '){sir[i]='-';
nr++;}
}
return nr; }
int main()
{char msg[100];
gets( msg);
p=strlen(msg);
printf("Numarul de spatii inlocuit este: %d\n", inlocuieste(msg));
system("pause");
return 0; }

10. Scrieti o functie care afiseaza sirul de character primit ca parametru si apoi il
subliniaza scriind nr corespunzator de caractere _ pe randul urmator.

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int strlen(char s[])
{int i,nr=0;
for(i=0;;i++)while(s[i]!=NULL)nr++;
return nr;}
int main()
{int i,dim;
char sir[100];
scanf("%s", sir);
printf("\n");
dim=strlen(sir);
for(i=0;i<dim;i++)printf("_");
printf("%d",dim);
system("pause");
return 0; }

You might also like