Sunteți pe pagina 1din 6

Tema Nr.

3
1. S se scrie un program n C care s citeasc de la tastatur dou matrice ptratice de
numere ntregi, de dimensiune specificat de utilizator i s afieze suma celor dou
matrice.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[100][100],b[100][100],i,j,n,s[100][100];
printf("Numarul de lini si 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]);
printf("b[%d][%d]=", i, j);
scanf("%d", &b[i][j]);
s[i][j]=0;
}
printf("Matricea A = ");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d ", a[i][j]);
}
printf("\n\nMatricea B = ");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d ", b[i][j]);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s[i][j]=a[i][j]+b[i][j];

printf("\n\nMatricea A + B = ");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d ", s[i][j]);
}
getch();

2. S se scrie un program n C care, folosind un meniu interactive s conin urmtoarele


opiuni:
a) Citirea unui vector cu n elemente
b) Afiarea vectorului
c) Afiarea elementelor de pe poziiile pare
d) Afiarea produsului elementelor impare
e) Ieire
#include<stdio.h>
int n,v[100];
void citire()
{
printf("Numarul de elemente = ");
scanf("%d",&n); printf("\n");
int i;
for(i=0;i<n;i++)

printf("v[%d]= ",i);
scanf("%d",&v[i]);

}
}
void afisare ()
{
for(int i=0;i<n;i++)
printf("%d ",v[i]);
}
void afisare_pare()
{
for(int i=0;i<n;i++)
if(i%2==0) printf("%d ",v[i]);
}
void produs_impare()
{
int i,p=1,k=0;
for(i=0;i<n;i++)
if(v[i]%2!=0)
{ k=1; p*=v[i]; }
if(k!=0) printf("%d",p);
else printf("Nu exista elemente impare.");
}
int main()
{
int a;
do
{ printf("1. Citirea unui vector cu n elemente\n2. Afisarea vectorului\n3. Afisarea elementelor de pe
poziitile pare\n4. Afisarea produsului elementelor impare\n5. Iesire \n");
printf("Alegeti optiunea : "); scanf("%d",&a); printf("\n");
switch(a)
{
case 1: citire(); printf("\n"); break;
case 2: afisare(); printf("\n\n"); break;
case 3: afisare_pare(); printf("\n\n"); break;
case 4: produs_impare(); printf("\n\n"); break;
case 5: break;
}
}while (a<=4);
}

3. S se calculeze suma elementelor de pe diagonala principal a unei matrice ptratice


citite de la tastatur.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[100][100],i,j,n,s=0;
printf("Numarul de lini si 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]);
}
printf("\nMatricea A = ");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d ", a[i][j]);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j)

s+=a[i][j];
printf("\n\nSuma elementelor de pe diagonala principala = %d", s);
getch();
}

4. S se scrie un program n C care s citeasc de la tastatur o matrice ptratic. S se


creeze un meniu interactive cu urmtoarele opiuni:
a) Afiarea matricii ptratice
b) S se afieze suma numerelor pare deasupra diagonalei principale
c) S se afieze produsul elementelor impare de pe diagonal secundar
d) S se afieze elementele prime din matrice
e) Iesire
#include<stdio.h>
int n,a[100][100];
void afisare ()
{
printf("Matricea A = ");
for(int i=0;i<n;i++)
{
printf("\n");
for(int j=0;j<n;j++)
printf("%d ", a[i][j]);
}
}
void suma()
{
int s=0,c=0;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(a[i][j]%2==0)
{s+=a[i][j];c=1;}
if(c==0) printf("Nu exista numere pare deasupra diagonalei principale.");
else printf("%d",s);
}
void produs()
{
int p=1,k=0;
for(int i=0;i<n;i++)
if(a[i][n-1-i]%2!=0)
{p*=a[i][n-1-i];k=1;}
if(k==1) printf("%d",p);
else printf("Nu sunt numere impare pe diagonala secundara.");
}
void prime()
{
int k,c=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
k=0;
for(int l=1;l<=a[i][j]/2;l++)
{if(a[i][j]%l==0) k++;}
if(k<=1)
{printf("%d ",a[i][j]);c++;}
}
if(c==0)
printf("Nu exista numere prime in matrice.");
}
int main()
{
int al,i,j;
printf("Numarul de lini si coloane al matricei = ");
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]);
}
printf("\n");
do
{ printf("1. Afisarea matricei\n2. Sa se afiseze suma numerelor pare deasupra diagonalei
principale\n3. Sa se afiseze produsul elementelor impare de pe diagonal secundar \n4. Sa se afiseze
elementele prime din matrice \n5. Iesire \n");
printf("Alegeti optiunea : "); scanf("%d",&al); printf("\n");
switch(al)
{
case 1: afisare(); printf("\n\n"); break;
case 2: suma(); printf("\n\n"); break;
case 3: produs(); printf("\n\n"); break;
case 4: prime(); printf("\n\n"); break;
case 5: break;
}
}while (al<=4);
}

5. S se scrie un program C care s citeasc de la tastatur un cuvnt i s verifice dac


respectivul cuvnt este palindrom (cuvnt care poate fi citit de la stnga la dreapta i de la
dreapta la stnga fr s-i piard sensul: cojoc, capac, rar).
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char cuv[20],cuv2[20];
printf("Cuvantul: ");
scanf("%s",&cuv);
int i,j,n;
n=strlen(cuv);
for(i=0, j=n-1;i<n;i++,j--)
cuv2[i]=cuv[j];
j=0;
for(i=0;i<n;i++)
if(cuv[i]!=cuv2[i])
{printf("Cuvantul nu e palindrom.");j=1;break;}
if(j==0)
printf("Cuvantul e palindrom.");
getch();
}

6. S se scrie un program C care realizeaz urmtoarele:


a) terge dintr-un ir de caractere un subir specificat prin poziie i lungime.
b) Insereaz ntr-un ir ncepnd cu o poziie dat un alt ir.
c) Citete doua cuvinte i nlocuiete ntr-un text introdus de la tastatur toate apariiile
primului cuvnt prin cel de-al doilea.
#include<stdio.h>
#include<conio.h>
#include<string.h>
void sterge()
{
char sir[100];
int p, l, i;
printf("Sirul: ");
fgets(sir, 100, stdin);
fflush(stdin);
printf("Sirul este: %s", sir);
printf("Pozitia si lungimea subsirului: ");

scanf("%d %d", &p, &l);


fflush(stdin);
for (i = p;i < strlen(sir);i++)
{
sir[i] = sir[i + l + 1];
}
printf("Noul sir dupa stergerea subsirului : %s", sir);
}
void inserare()
{
char sir1[100],sir2[100],sir3[100];
int p,i,s,n,m,t,g,x;
printf("Sirul 1: ");
gets(sir1);
printf("Sirul 1 este: %s", sir1);
printf("\nSirul 2: ");
gets(sir2);
printf("Sirul 2 este: %s", sir2);
printf("\nPozitia adaugarii sirului 2: ");
scanf("%d", &p);
n = strlen(sir1);
m = strlen(sir2);
i = 0;
while(i <= n)
{
sir3[i] = sir1[i];i++;
}
s = n + m;
g = p + m;
t = 0;
for (i = p;i < s;i++)
{
x = sir3[i];
if (t < m)
{
sir1[i] = sir2[t];
t++;
}
sir1[g] = x;
g++;
}
printf("\nSirul rezultat este: %s ", sir1);
fflush(stdout);
}
void cuvinte()
{
char s[100],cuv1[20],cuv2[20],aux[20][20];
int i, j, k, w, p; i = j = k = 0;
printf("Sirul: ");
fgets(s, 100, stdin);
printf("Primul cuvant: ");
scanf("%s",cuv1);
printf("Al doilea cuvant: ");
scanf("%s",cuv2);
p = strlen(s);

for (k = 0;k < p;k++)


{
if (s[k] != ' ')
{
aux[i][j] = s[k];
j++;
}
else
{
aux[i][j] = '\0';
j = 0; i++;
}
}
aux[i][j] = '\0';
w = i;
for (i = 0;i <= w;i++)
{
if (strcmp(aux[i], cuv1) == 0)
strcpy(aux[i], cuv2);
printf("%s ", aux[i]);
}
}
int main()
{
int a;
do
{
printf("Ce doriti sa faceti? \n");
printf("1. Stergerea unui subsir specificat prin pozitie si lungime dintr-un sir dat. \n");
printf("2. Inserarea unui sir intr-un alt sir incepand cu o pozitie data. \n");
printf("3. Inlocuirea unui cuvant cu alt cuvant intr-un text. Cuvintele si textul sunt date de la
tastatura. \n");
printf("4. Iesire. \n"); scanf("%d", &a); fflush(stdin);
switch(a)
{
case 1: sterge(); printf("\n\n"); break;
case 2: inserare(); printf("\n\n"); break;
case 3: cuvinte(); printf("\n\n"); break;
case 4: break;
}
} while (a < 4);
}

7. S se realizeze un program care s determine dac un numr citit de la tastatur este


prim, utiliznd o funcie definit de utilizator.
#include<stdio.h>
#include<conio.h>
int n;
void prim()
{
int i,j;
for(i=1;i<=n/2;i++)
if(n%i==0)
j++;
if(j<=2)
printf("Numarul este prim.");
else
printf("Numarul nu este prim.");
}
int main()
{
printf("Numarul = ");
scanf("%d",&n);
prim();
getch();
}

S-ar putea să vă placă și