You are on page 1of 8

TEMA 7

1.Scrieti un program pentru determinarea valorii medii a elementelor


pozitive/negative dintr-un vector.
#include <stdio.h>

void main(){
int i,n,nr1,nr2,sum_poz,sum_neg,v[50];
float ma1,ma2;

printf("introduceti dimensiunea tabloului: ");scanf("%d",&n);


printf("\n");
printf("introduceti elementele tabloului: \n");
sum_poz=0;sum_neg=0;nr1=0;nr2=0;ma1=0;ma2=0;
for (i=0;i<n;i++){
printf("introduceti elementul v[%d]: ",i+1);scanf("%d",&v[i]);
if(v[i]>0)
{sum_poz+=v[i];
nr1+=1;}
else
{sum_neg+=v[i];
nr2+=1;}
}
ma1=sum_poz/nr1;
ma2=sum_neg/nr2;
printf("media numerelor pozitive din tablou este: %f\n",ma1);
printf("media numerelor negative din tablou este: %f",ma2);
}

2.Scrieti un program pentru determinarea celui mai mic element pozitiv dintr-un
vector.
#include <stdio.h>

void main(){
int i,n,v[50],min;

printf("introduceti dimensiunea tabloului: ");scanf("%d",&n);


printf("\n");
printf("introduceti elementele tabloului: \n");
for (i=0;i<n;i++){
printf("introduceti elementul v[%d]: ",i+1);scanf("%d",&v[i]);
}
min=v[0];
for(i=1;i<n;i++)
if (v[i]<min)
min=v[i];
printf("cel mai mic element din tablou este: %d\n",min);

3.Scrieti o aplicatie C/C++ care citeste de la tastatura un sir de 10 valori


intregi. Definiti o functie care primeste sirul ca parametru si apoi il afiseaza
ordonat crescator.
#include <stdio.h>
int ordon(int p[], int n);
void main(){
int i,n,v[10];

printf("introduceti dimensiunea tabloului: ");scanf("%d",&n);


printf("\n");
printf("introduceti elementele tabloului: \n");
for (i=0;i<n;i++){
printf("introduceti elementul v[%d]: ",i+1);scanf("%d",&v[i]);
}
printf("sirul ordonat crescator este: %d\n",ordon(v,n));
}
int ordon (int p[],int n){
int a,i,j;

for (i=0;i<n;i++)
for (j=i;j<n;j++)
if (p[i]>p[j]){
a=p[i];
p[i]=p[j];
p[j]=a;}
for (i=0;i<n;i++)
printf("%d ",p[i]);
return 0;
}

4.Scrieti o aplicatie C/C++ care defineste o parola (in format sir de caractere).
Programul citeste in mod repetat sirurile de caractere introduse de la tastatura,
pana cand utilizatorul scrie parola corecta. Sa se afiseze numarul de incercari
pana la introducerea parolei corecte.
#include<iostream>
using namespace std;

void citire(int a[], int n);


int parola(char p[]);
void afisare(int a[], int n);

int main()
{
int c;
char p[40];
c=parola(p);
cout<<"Ati introdus parola de "<<c<<" ori";
return 0;

}
int parola(char p[])
{
int c=1,ok=1;
char a[40]="bernard";

cout<<"Introduceti parola: "; cin>>p;

while(ok)
if(strcmp(a,p))
{cout<<"ACCESS DENIED"<<endl<<"Introduceti din nou parola: ";
cin>>p;
c++;
}
else ok=0;
cout<<"ACCESS GRANTED"<<"\n";

return c;
}}

5.Scrieti o aplicatie C/C++ care citeste de la tastatura 2 siruri de caractere


reprezentand numele si prenumele unei persoane. Afisati-le cu majuscula, separate
prin 2 spatii de tabulare.
#include <stdio.h>

void main(){
char nume[20],prenume[20];
printf("introduceti numele si prenumele unei persoane ");
scanf("%s %s",&nume,&prenume);
nume[0]-=32;
prenume[0]-=32;
printf("%s\t%s\n",nume,prenume);

6.Scrieti o aplicatie C/C++ care defineste 2 matrice de valori intregi. Dimensiunea


si elementele matricilor sunt citite de la tastatura. Scrieti functiile care:
a) afiseaza pozitiile elementelor pare din fiecare matrice;
b) afiseaza suma elementelor impare din ambele matrice;
c) afiseaza suma matricelor;
#include <stdio.h>

void main(){
int a[10][10],b[10][10],c[10][10];
int i,j,n,m,sum1,sum2;

printf("introduceti dimensiunile matricelor ");scanf("%d %d",&n,&m);


printf("\n");

for (i=0;i<n;i++)
for (j=0;j<m;j++)
{printf("introduceti elementul a[%d][%d]: ",i+1,j+1);scanf("%d",&a[i]
[j]);}

for (i=0;i<n;i++)
for (j=0;j<m;j++)
{printf("introduceti elementul b[%d][%d]: ",i+1,j+1);scanf("%d",&b[i]
[j]);}

printf("matricea suma este \n");


for (i=0;i<n;i++)
for (j=0;j<m;j++)
c[i][j] = a[i][j]+b[i][j];

for (i=0;i<n;i++){
for (j=0;j<m;j++)
printf("%d ",c[i][j]);
printf("\n");}

printf("in matricea a, elemente pare se gasesc pe pozitiile:


");
for (i=0;i<n;i++)
for (j=0;j<m;j++)
if(a[i][j] % 2 == 0)
printf(" %d-%d ",i+1,j+1);

printf("\n");

printf("in matricea b, elemente pare se gasesc pe pozitiile: ");


for (i=0;i<n;i++)
for (j=0;j<m;j++)
if(b[i][j] % 2 == 0)
printf(" %d-%d ",i+1,j+1);
printf("\n");
sum1=0;sum2=0;

for (i=0;i<n;i++)
for (j=0;j<m;j++)
if(a[i][j] % 2 == 1)
sum1+=a[i][j];
for (i=0;i<n;i++)
for (j=0;j<m;j++)
if(b[i][j] % 2 == 1)
sum2+=b[i][j];
printf("in matricea 1, suma elementelor impare este: %d\n",sum1);
printf("in matricea 2, suma elementelor impare este: %d",sum2);
}

7.Cititi de la tastatura elementele unei matrice de elemente de tip float, cu


dimensiunea 3x3. Rearanjati coloanele matricei astfel incat suma elementelor de pe
o anumita coloana sa fie mai mica decat suma elementelor de pe coloana urmatoare.
#include <stdio.h>

void newmatrix(float v[3][3],int c1,int c2);

void main(void)
{
float v[3][3],sum,s[3];
printf("\nThe elements for the matrix are :");
for(int i=0;i?;i++)
for(int j=0;j?;j++)
{
printf("\t The element ",i+1," ",j+1," : ";
scanf("%d",&v[i][j]);
}
for(int j=0;j?;j++)
{
sum = 0;
for(int i=0;i?;i++)
sum += v[i][j];
s[j] = sum;
}
cout<<endl;
if(s[0]>s[1])
{
if(s[0]>s[2])
{
swap(v,0,2);
if(s[1]<s[2])
swap(v,0,1);
else swap(v,0,1);
}
else
{
if(s[1]>s[2])
swap(v,1,2);
}
for(int i=0;i?;i++)
{
cout<<endl;
for(int j=0;j?;j++)
printf("\nv[i][j]," ");
}
}

void newmatrix(float v[3][3],int c1,int c2)


{
float aux;
for(int i=0;i?;i++)
{
aux = v[i][c1];
v[i][c1]=v[i][c2];
v[i][c2]=aux;
}
}

8.Scrieti un program in care se citesc de la tastatura n valori reale intr-un


tablou unidimensional, calculeaz cu o functie valoarea medie a valorilor introduse
si afiseaz cu o alt functie doar valorile din tablou mai mari decit valoarea
medie calculata.
#include <stdio.h>

float medie(int x[], int a);


int mare(int x[], int a,float b);

void main(){
int n,i,v[50];
float m;
printf("introduceti dimensiunea tabloului ");scanf("%d",&n);
for (i=0;i<n;i++)
{printf("\nintroduceti elementul v[%d]: ",i+1);scanf("%d",&v[i]);
}
m=medie(v,n);
printf("valoarea medie a numerelor din tablou este %f\n",m);
printf("valorile mai mici decat %f sunt: \n",m);
mare(v,n,m);
}

float medie(int x[], int a){


int sum,i;
float med;
sum=0;
for (i=0;i<a;i++)
sum+=x[i];
med=sum/a;
return med;
}

int mare(int x[], int a, float b){


int i;
for (i=0;i<a;i++)
if (x[i]>b)
printf("%d ",x[i]);
return 0;
}

9.Sa se scrie o aplicatie C/C++ n care se citesc intr-un vector n valori intregi
si se determina numarul elementelor negative impare. S se afiseze aceasta valoare
si elementele respective.
#include <stdio.h>

int neg_imp(int p[], int a);

void main(){
int i,n,v[10];

printf("introduceti dimensiunea tabloului: ");scanf("%d",&n);


printf("\n");
printf("introduceti elementele tabloului: \n");
for (i=0;i<n;i++)
{printf("introduceti elementul v[%d]: ",i+1);scanf("%d",&v[i]);}

neg_imp(v,n);
}

int neg_imp(int p[], int a){


int i,nr;
nr=0;

for (i=0;i<a;i++){
if (p[i]<0)

if ((p[i]*(-1))%2==1)
{
printf("%d ",p[i]);
nr+=1;
}
}
if(nr==1)
printf("in sir exista un singur numar negativ impar\n");
else
printf("\nin sir exista %d astfel de numere\n",nr);

return 0;
}
10.Scrieti programul care citeste elementele intregi ale unui vector si
construieste intr-o functie un alt vector in care se vor stoca resturile impartirii
elementelor primului vector la numarul elementelor pozitive din acesta.
#include <stdio.h>

int poz(int p[], int a);


int rest(int p[], int a, int x);

void main(){
int i,n,v[50],m;

printf("introduceti dimensiunea tabloului: ");scanf("%d",&n);


printf("\n");
printf("introduceti elementele tabloului: \n");
for (i=0;i<n;i++)
{printf("introduceti elementul v[%d]: ",i+1);scanf("%d",&v[i]);}
m=0;
m=poz(v,n);
rest(v,n,m);
}

int poz(int p[], int a){


int i,nr;
nr=0;

for (i=0;i<a;i++)
if (p[i]>0)
nr+=1;

return nr;
}
int rest(int p[], int a, int x){
int i,rez[50];

for (i=0;i<a;i++)
if (p[i]<0)
p[i]*=(-1);
for (i=0;i<a;i++)

rez[i]=p[i]%x;
for (i=0;i<a;i++)
printf("%d ", rez[i]);
return 0;
}

11.Se citeste de la tastatura un sir de caractere. Scrieti functia care inverseaza


sirul si apoi formeazs un alt sir de caractere ce va contine elementele de pe
pozitiile pare ale sirului inversat. Afisati sirurile obtinute.

#include<stdio.h>
#include<string.h>

void main(){
char a[30],b[30];
int i;

printf("introduceti sirul de elemente ");scanf("%s",&a);


for (i=0;i<strlen(a);i++)
b[i]=a[strlen(a)-1-i];
b[i]='\0';
printf("Sirul invers:%s\n",b);
printf("leterele de pe pozitii pare sunt\n");
for (i=0;i<strlen(a);i++)
if (i%2==0)
printf("%c",b[i]);
printf("\n");

12.Sa se citeasca de la tastatura elementele intregi ale unei matrici de dimensiune


mxn. Daca matricea este patratica sa se afiseze elementele diagonalei secundare,
altfel sa se afiseze suma elementelor de pe o coloana data. Valorile m, n si
coloana dorita se citesc de la tastatura si se vor scrie functii pentru operatiile
cerute.
#include <stdio.h>

void main(){
int a[10][10];
int i,j,n,m,sum,k;

printf("introduceti dimensiunile matricelor ");scanf("%d %d",&n,&m);


printf("\n");

for (i=0;i<n;i++)
for (j=0;j<m;j++)
{printf("introduceti elementul a[%d][%d]: ",i+1,j+1);scanf("%d",&a[i]
[j]);}

if (m==n){
printf("elementele de pe diagonala principala sunt ");
for (i=0;i<n;i++)
printf("%d ",a[i][i]);
}
else
{
printf("introduceti coloana pe care doriti sa se efectueze suma
");scanf("%d",&k);
sum=0;

for (i=0;i<n;i++)
sum+=a[i][k+1];

printf("suma elementelor de pe coloana %d este: %d",k,sum);}


printf("\n");
}

You might also like