Extras din laborator
Se citeste o matrice patratica formata din n linii si n coloane cu
valori numere intregi. (2<n<20)
Se cere:
1. Sa se determine maximul dintre valorile de pe diagonala principala.
2. Sa se determine cate numere prime sunt sub diagonala secundara.
3. Sa se determine cate numere situate deasupra diagonalei principale
au in scrierea lor in baza 2 exact k cifre de 1, k citit de la
tastatura.
4. Din zona sudica cuprinsa intre cele doua diagonale sa se
determine suma valorilor.
5. Se determina sirul obtinut prin parcurgerea matricei in spirala,
pornind din coltul stanga sus parcurgand prima linie, ultima
coloana,
ultima mlinie etc.
Sa se ordoneze acest sir.
*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int a[21][21], n;
void citire()
{
do
{ printf("Dimensiune matrice:");
scanf("%d", &n);
if(n<=2||n>=20)
printf("Eroare nu ati respectat cerinta problemei!n");
} while(n<=2||n>=20);
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{ printf("a[%d][%d]=",i, j);
scanf("%d", &a[i][j]);
}
}
void afis()
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
printf("%4d", a[i][j]);
printf("n");
}
printf("n");
}
int maxim_DP()
{
int max=a[1][1];
for(int i=2; i<=n; i++)
if(a[i][i]>max) max=a[i][i];
return max;
}
int prim(int x)
{
if(x==1) return 0;
if(x%2==0 && x!=2) return 0;
for(int d=3; d*d<=x; d+=2)
if(x%d==0) return 0;
return 1;
}
void prime_subDS()
{
int i, j, k=0;
printf("Numerele prime sub diagonala secundara sunt:");
for(i=2; i<=n; i++)
for(j=n-i+2; j<=n; j++)
if(prim(a[i][j])) { printf("%d ", a[i][j]);
k++;
}
if(k==0) printf("Nu exista numere prime sub diagonala
secundara!n");
else printf("nSunt %d numere primen", k);
}
int cifre_binare(int x)
{
int k=0;
while(x)
{ if(x%2==1) k++;
x/=2;
}
return k;
}
void k_cif_binare_deasupraDP()
{
int i, j, k, nr=0;
char sir[20];
do
{ printf("Dati o valoarea cu semnificatia nr de cifre binare 1:");
scanf("%d", &k);
if(k<=0||k>16) printf("Valoarea incorecta, intregii int se
reprezinta pe 16 pozitii binare!!n");
Conținut arhivă zip
- Matrici.CPP