Extras din referat
1. Se considera un nr natural n (n< 100000000). Se cere sa se verifice daca n are toate cifrele distincte doua cate doua.
-pt fiecare cifra calculez de cate ori se afla printre cifrele nr n.
-daca o cifra apare de cel putin doua ori, atunci cfrele care compun nr nu sunt distincte
Pseudocod:
read n
b=1
for i=0,9 do
m=n
k=0
while m<>0 do
if i=m%10 then kßk+1
m=m/10
if k>=2 then b=0
if b=1 then write cifre distincte
else write nu sunt distincte
C:
#include<stdio.h>
long n,m,k,i,b;
void main()
{
printf("intr numarul");
scanf("%d",&n);
b=1;
for(i=0;i<=9;i++)
{
m=n;
k=0;
while(m!=0)
{
if(i==m%10) k++;
m=m/10;
}
if (k>=2) b=0;
}
if (b)
printf("cifre distincten");
else
printf("nu sunt distincten");
}
2. Fie o matrice cu m linii si n coloane, componente numere intregi.Folosind numai operatii de interschimbare de coloane, se cere sa se ordoneze crescator ultima linie a matricei.
-se ordoneaza crescator elementele de pe ultima linie a matricei (prin metoda bulelor) interschimband nu numai elemntele ultimei linii ci toate elementele asociate coloanelor acestora
Pseudocod:
read m,n
for iß1,m do
for iß1,n do
read a[i,j]
ordß1
for jß1,n do
if a[m,j]>a[m,j+1] then
ordß0
for iß1,m do
auxßa[i,j]
a[i,j]ßa[i,j+1]
a[i,j+1]ßaux
while ord=0 do
for iß1,m do
for jß1,n do
write(a[i,j])
C:
#include<stdio.h>
int a[51][51] , m,n,i,j;
int aux, ord;
void main()
{
printf("nr linii ");scanf("%i", &m);
printf("nr coloane ");scanf("%i",&n);
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{
printf("a[%d][%d]= ",i,j);
scanf("%d",&a[i][j]);
}
do
{
ord=1;
for (j=1;j<n;j++)
if(a[m][j]>a[m][j+1])
{
ord=0;
for(i=1;i<=m;i++)
{ aux=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=aux;
}
}
}
while (!ord);
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
printf("%d",a[i][j]);
printf("n");}
}
Preview document
Conținut arhivă zip
- Probleme in C.doc