Orar semigroup #2

Orar semigroup #2

21 ianuarie - fisa subprograme BAC

1. Scrieţi definiţia completă a subprogramului număr, cu 4 parametrii, care primeşte prin intermediul parametrului n un număr natural format din cel mult 9 cifre, iar prin intermediul parametrilor c1 şi c2 câte o cifră cu proprietatea c1<c2; subprogramul furnizează prin intermediul celui de-al 4-lea parametru, x, o valoare obţinută prin eliminarea din numărul primit prin parametrul n a fiecărei cifre cuprinse în intervalul închis [c1,c2]. Dacă toate cifrele lui n aparţin acestui interval se va afişa 0.

#include<iostream>
using namespace std;
void numar(int n, int c1, int c2, int &x)
{   int r=0,k=1; x=0;
  while(n)
  {  if (n%10<c1 || n%10>c2)
    {x=n%10*k+x; k=k*10;}
       n=n/10; }
}
int main()
{  int n,c1,c2,x;
cin>>n;
cin>>c1;
cin>>c2;
numar(n,c1,c2,x);
cout<<x;
}
2. Scrieţi definiţia completă a subprogramului reduce, cu doi parametrii, care primeşte prin intermediul parametrilor a şi b două numere naturale formate din cel mult 9 cifre fiecare. Funcţia returnează o valoare obţinută din numărul a prin însumarea acelor cifre diferite de 0 ale numărului a care NU divid numărul b. Dacă nu există asemenea cifre, se va returna valoarea 0.
 #include<iostream>
using namespace std;
int reduce(int a, int b)
{  int s=0;
 while (a)
 {   if(a%10!=0 && b%(a%10)!=0)
     s=s+a%10;
    a=a/10;
 }
 return s;
}
int main()
{   int a,b;
cin>>a;
cin>>b;
cout<<reduce(a,b);
}
3. Scrieţi definiţia completă a subprogramului număr, cu 3 parametrii, care primeşte prin intermediul parametrului n un număr natural format din cel mult 9 cifre, iar prin intermediul parametrilor c1 şi c2 câte o cifră nenulă; subprogramul returnează numărul obţinut prin înlocuirea în numărul primit prin parametrul n a fiecărei apariţii a cifrei c1 cu cifra c2. Dacă c1 nu apare în n, subprogramul returnează valoarea n.
#include<iostream>
using namespace std;
int numar(int n, int c1, int c2)
{int r=0,k=1;
    while(n)
{    if(n%10==c1)r=c2*k+r;
    else r=(n%10)*k+r;
    k=k*10;
    n=n/10;
}
return r;
}
int main()
{int n,c1,c2;
cin>>n;
cin>>c1>>c2;
cout<<numar(n,c1,c2);
}
4. Scrieţi definiţia completă a subprogramului suma care are 2 parametrii: n, prin care primeşte un număr natural(1<=n<=100) şi v prin care primeşte un tablou unidimensional cu n elemente, fiecare element memorând un număr cu exact 3 cifre. Funcţia returnează suma elementelor din tablou care au prima cifră egală cu ultima cifră.
#include<iostream>
using namespace std;
int suma(int n, int v[])
{int i,s=0;
for(i=0;i<n;i++)
    if(v[i]%10 == v[i]/100)
        s=s+v[i];
return s;
}
int main()
{int n,v[100],i;
cin>>n;
for(i=0;i<n;i++)
    cin>>v[i];
cout<<suma(n,v);
}
5. Scrieţi definiţia completă a subprogramului suma care are 2 parametrii: n, prin care primeşte un număr natural(1<=n<=100) şi v prin care primeşte un tablou unidimensional cu n elemente, numere întregi situate în intervalul [10...30000]. Funcţia returnează suma numerelor din tabloul v care au ultimele două cifre identice.
#include<iostream>
using namespace std;
int suma(int n, int v[])
{int i,s=0;
for(i=0;i<n;i++)
    if(v[i]%10 == v[i]/10%10)
        s=s+v[i];
return s;
}
int main()
{int n,v[100],i;
cin>>n;
for(i=0;i<n;i++)
    cin>>v[i];
cout<<suma(n,v);
}
6. Scrieţi definiţia completă a subprogramului medie care are 2 parametrii: n, prin care primeşte un număr natural situat între 1 şi 100, şi v prin care primeşte un tablou unidimensional cu n elemente, fiecare din ele având cel mult 4 cifre. Subprogramul returnează media aritmetică a numerelor din tablou.
#include<iostream>
using namespace std;
int medie(int n, int v[])
{int i,s=0;
float p;
for(i=0;i<n;i++)
    s=s+v[i];
cout<<(float)s/n;
}
int main()
{int n,v[100],i;
cin>>n;
for(i=0;i<n;i++)
    cin>>v[i];
medie(n,v);
}
7. Scrieţi definiţia completă a unui subprogram max care primeşte prin intermediul parametrilor a şi b două numere reale cu cel mult 4 cifre la partea întreagă şi cel mult 5 zecimale fiecare. Subprogramul determină cel mai mare număr real dintre următoarele 4 valori: a, b şi numerele reale obţinute din a şi b prin interschimbarea părţii întregi cu partea fracţionară în cadrul aceluiaşi număr. Această valoare(maximă) este furnizată prin intermediul parametrului real c.
#include<iostream>   //   GRESIT
using namespace std;
float max(float a, float b, float &c)
{float x,y,p,k=1,t=1;
p=a;
while((int)p)
{k=k*10;p=p/10;}
p=a;
while(int(p)!=p)
{p=p*10;t=t*10;}
x=(a-(int)a)*t+(int)a/k;

p=b;k=1;t=1;
while((int)p)
{k=k*10;p=p/10;}
p=b;
while(int(p)!=p)
{p=p*10;t=t*10;}
y=(b-(int)b)*t+(int)b/k;

c=a;
if(b>c)c=b;
if(x>c)c=x;
if(y>c)c=y;
}
int main()
{float a,b,c;
cin>>a>>b;
max(a,b,c);
cout<<c;
}
8. Se consideră subprogramul CMMDC care primeşte prin cei doi parametrii x şi y două numere naturale şi returnează cel mai mare divizor comun al lor. 
a) scrieţi numai antetul subprogramului CMMDC
b) Fişierul text NUMERE.IN conţine, pe fiecare linie, câte două numere naturale nenule mai mici sau egale cu 10000, despărţite printr-un spaţiu, reprezentând numitorul şi numărătorul câte unei fracţii. Scrieţi un program care, pentru fiecare linie k din fişierul NUMERE.IN, citeşte numitorul şi numărătorul fracţiei pe această linie şi scrie în fişierul text NUMERE.OUT, tot pe linia k, numitorul şi numărătorul acestei fracţii, adusă la forma ireductibilă, ca în exemplu. Se vor utiliza apeluri utile ale funcţiei CMMDC. 
#include<iostream>   //   GRESIT
#include<fstream>
using namespace std;
int CMMDC(int x, int y)
{
    while(x!=y)
        if(x>y)x=x-y;
        else y=y-x;
return x;
}
int main()
{int x,y;
    ifstream f("NUMERE.IN");
    ofstream g("NUMERE.OUT");
    f>>x>>y;
    while(!f.eof())
{       
    x=x/CMMDC(x,y);
    y=y/CMMDC(x,y);
    g<<x<<" "<<y<<endl;
    f>>x>>y;
}
}
9. Ne putem folosi de formula CMMMC = a*b/CMMDC.
Se consideră subprogramul CMMMC care primeşte prin cei doi parametrii x şi y două numere naturale şi returnează cel mai mic multiplu comun al lor. Fişierul text NUMERE.IN conţine, pe fiecare linie, câte două numere naturale nenule mai mici decât 10000, despărţite printr-un spaţiu. Scrieţi un program care, pentru fiecare linie k din fişierul NUMERE.IN, citeşte câte două numere de pe această linie şi scrie în fişierul NUMERE.OUT, tot pe linia k, cel mai mic multiplu comun al acestora. Se vor folosi apeluri utile ale funcţiei CMMMC. 


10. Scrieţi doar antetul unui subprogram prim cu doi parametrii, care primeşte prin intermediul parametrului n un număr natural cu cel mult 4 cifre şi returnează prin intermediul parametrului p valoarea 1 dacă n este prim şi 0 în caz contrar. 
Scrieţi un program care citeşte de la tastatură un număr natural n<1000 şi afişează pe ecran, desparţite prin câte un spaţiu, primele n numere prime, utilizând apeluri utile ale subprogramului prim. 


11. Scrieţi definiţia completă a unui subprogram s care primeşte prin intermediul parametrului n un număr natural de maximum 9 cifre, prin intermediul parametrului c o cifră şi furnizează prin intermediul parametrului k numărului de cifre ale numărului n care aparţin intervalului [c-1,c+1]. 

sâmbătă, 12 februarie 2011 by DlMuresan
Categories: , , , , , , , , , , , | 2 comments

Comments (2)

  1. Аlthough business nο woгld-beater, he cаn cοllеct
    the сash frοm that bank. Are two ρercent of them wоuld reѵеal
    a" fib, fallacy or some outright lie. What is my target market?

    Also visit my webpage: organic internet marketing

  2. Such assistance is usually provided by a security software developer that
    can provide additional sales tools like key rings, magnets, calendars,
    shirts and even puzzles that include the pets your photograph.
    However, you can save some unnecessary expenditure and get due compensation for the services provided for an organization.


    Feel free to visit my web blog - better search engine placement

Leave a Reply