void sortare_insertie(float *v, int n) {
float aux;
int i,j;
for(i=0;i<n;i++)
if(v[i]<v[i-1]) {
aux = v[i];
j=i-1;
while((j>=0) && (v[j]>aux)) {
v[j+1]=v[j];
j=j-1;
}
v[j+1]=aux;
}
}
Probleme de Informatică rezolvate
Sunday, March 27, 2016
Saturday, March 12, 2016
25) Functia Hermite recursiv
#include <stdio.h>
#include <stdlib.h>
long Hermite(int n, int x){
if(n==0) {
return 1;
}
else if(n=1) {
return 2*x;
}
else {
return 2*n*Hermite(n-1,x)-2*(n-1)*Hermite(n-2,x);
}
}
void main(){
int n,x;
long polH;
printf("Gradul polinomului = "); scanf("%d", &n);
printf("x= ", &x); scanf("%d", &x);
polH = Hermite(n,x);
printf("Rezultatul este: %ld", polH);
}
#include <stdlib.h>
long Hermite(int n, int x){
if(n==0) {
return 1;
}
else if(n=1) {
return 2*x;
}
else {
return 2*n*Hermite(n-1,x)-2*(n-1)*Hermite(n-2,x);
}
}
void main(){
int n,x;
long polH;
printf("Gradul polinomului = "); scanf("%d", &n);
printf("x= ", &x); scanf("%d", &x);
polH = Hermite(n,x);
printf("Rezultatul este: %ld", polH);
}
24) Functia Ackermann recursiv
#include <stdio.h>
#include <stdlib.h>
int Ackermann(int m, int n) {
if(m==0) {
return n+1;
}
else if((n=0)&&(m>0)) {
return Ackermann(m-1,1);
}
else if((m>0)&&(n>0)) {
return Ackermann(m-1, Ackermann(m,n-1));
}
}
void main(){
long result;
int m,n;
printf("m: "); scanf("%d", &m);
printf("n: ");scanf("%d", &n);
result=Ackermann(m,n);
printf("Rezultatul functie Ackermann este: %d", result);
}
Sunday, March 6, 2016
23) Ridicarea unei matrice la o putere data - alocare dinamica
#include <stdio.h>
#include <stdlib.h>
void citireMatrice(int ***a, int *n) {
int i,j;
printf("Numarul de linii & coloane: "); scanf("%d", &(*n));
(*a) = (int**)malloc((*n)*sizeof(int));
for(i=0;i<(*n);i++) {
(*a)[i] = (int*)malloc((*n)*sizeof(int));
}
for(i=0;i<*n;i++) {
for(j=0;j<*n;j++) {
printf("a[%d][%d] = ",i,j); scanf("%d", &(*a)[i][j]);
}
}
}
void afisareMatrice(int **a, int n) {
int i,j;
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
printf(" %d ", a[i][j]);
}
puts(" ");
}
}
void putere(int **a, int ***b, int ***c, int n, int p) {
int i,j,q,k;
//alocare dinamica pentru matricele B si C
(*b) = (int**)malloc(n*sizeof(int));
for(i=0;i<n;i++) {
(*b)[i] = (int*)malloc(n*sizeof(int));
}
(*c) = (int**)malloc((n)*sizeof(int));
for(i=0;i<n;i++) {
(*c)[i] = (int*)malloc((n)*sizeof(int));
}
//generarea matricei unitate de ordin n
for(i=0;i<n;i++)
for(j=0;j<n;j++) {
(*b)[i][j]=(i==j);
}
for(q=0;q<p;q++) {
for(i=0;i<n;i++)
for(j=0;j<n;j++) {
(*c)[i][j]=0;
for(k=0;k<n;k++)
(*c)[i][j] = (*c)[i][j]+(*b)[i][k]*a[k][j];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
(*b)[i][j]=(*c)[i][j];
}
//afisarea matricei rezultate
printf("Matricea ridicata la puterea %d este: \n", p);
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
printf(" %d ", (*b)[i][j]);
}
puts(" ");
}
}
void eliberare(int **a, int **b, int **c, int n) {
int i;
for(i=0;i<n;i++) {
free(a[i]);
}
free(a);
for(i=0;i<n;i++) {
free(b[i]);
}
free(b);
for(i=0;i<n;i++) {
free(c[i]);
}
free(c);
}
void main(){
int **a, **b, **c;
int i,j,n,p;
citireMatrice(&a,&n);
afisareMatrice(a,n);
printf("Puterea este: "); scanf("%d", &p);
putere(a,&b,&c,n,p);
eliberare(a,b,c,n);
}
22) Ridicarea unei matrice la o putere data
#include <stdio.h>
#include <stdlib.h>
void citireMatrice(int a[20][20], int *n) {
int i,j;
printf("Numarul de linii & coloane: "); scanf("%d", &(*n));
for(i=0;i<*n;i++) {
for(j=0;j<*n;j++) {
printf("a[%d][%d] = ", i,j);
scanf("%d", &a[i][j]);
}
}
}
void afisareMatrice(int a[20][20], int n) {
int i,j;
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
printf(" %d ", a[i][j]);
}
puts(" ");
}
}
void putereMatrice(int a[20][20], int n, int p) {
// <!--- generarea matricei unitate--->
int i,j,q,k,c[20][20];
int b[20][20];
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
b[i][j]=(i==j);
}
} // <!--- generarea matricei unitate--->
puts("Afisarea matricei unitate...");
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
printf(" %d ",b[i][j]);
}
puts(" ");
}
for(q=0;q<p;q++) {
for(i=0;i<n;i++)
for(j=0;j<n;j++) {
c[i][j]=0;
for(k=0;k<n;k++)
c[i][j] = c[i][j]+b[i][k]*a[k][j];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[i][j]=c[i][j];
}
printf("Afisarea matricea ridicata la puterea %d \n", p);
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
printf(" %d ",b[i][j]);
}
puts(" ");
}
}
void main(){
int a[20][20];
int i,j,n,p;
citireMatrice(a,&n);
afisareMatrice(a,n);
printf("Puterea este: "); scanf("%d", &p);
putereMatrice(a,n,p);
}
Saturday, January 9, 2016
21) Transformarea unei matrice triunghiulara inferior intr-una triunghiulara superior
//o matrice este triunghiular inferioara daca toate elementele de sub diagonala principala sunt egale cu 0
#include <stdio.h>
#include <stdlib.h>
int k;
int triunghiulara(int a[20][20], int n, int m) {
int i,j, tri=0;
k=1;
for(i=0;i<n;i++) {
for(j=i+1;j<m;j++) {
if(a[i][j]!=0) {
k=0;
}
}
}
if(k!=0){
tri=1;}
return tri;
}
void triunghiularaSuperior(int a[20][20], int n, int m) {
int i,j;
for(i=1;i<n;i++) {
for(j=0;j<i;j++) {
a[i][j] = 0;
}
}
}
int main() {
int a[20][20];
int i,j,n,m, tri=0;
printf("Linii: "); scanf("%d", &n);
printf("Coloane: "); scanf("%d", &m);
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
printf("a[%d][%d] = ",i,j); scanf("%d", &a[i][j]);
}
}
puts("Afisare matrice... \n");
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
printf(" %d ", a[i][j]);
}
puts(" ");
}
puts(" ");
tri = triunghiulara(a,n,m);
if(tri==1) {
puts("Matricea este triunghiulara inferior \n -----> Transformare in matrice triunghiulara superior... \n");
triunghiularaSuperior(a, n, m);
puts("Afisare matrice triunghiulara superior & inferior \n");
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
printf(" %d ", a[i][j]);
}
puts(" ");
}
}
}
20) Verificarea daca o matrice este triunghiular inferioara
//o matrice este triunghiular inferioara daca toate elementele de deasupra diagonalei principale sunt egale cu 0
#include <stdio.h>
#include <stdlib.h>
int k;
int triunghiulara(int a[20][20], int n, int m) {
int i,j, tri=0;
k=1;
for(i=0;i<n;i++) {
for(j=i+1;j<m;j++) {
if(a[i][j]!=0) {
k=0;
}
}
}
if(k!=0){
tri=1;
}
return tri;
}
int main() {
int a[20][20];
int i,j,n,m, tri=0;
printf("Linii: "); scanf("%d", &n);
printf("Coloane: "); scanf("%d", &m);
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
printf("a[%d][%d] = ",i,j); scanf("%d", &a[i][j]);
}
}
puts("Afisare matrice... \n");
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
printf(" %d ", a[i][j]);
}
puts(" ");
}
puts(" ");
tri = triunghiulara(a,n,m);
if(tri==1) {
printf("Matricea este triunghiulara inferior. \n");
}
}
Subscribe to:
Posts (Atom)