Orar semigroup #2

Orar semigroup #2

9/26

Subprogramul cif, cu doi parametri, primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră; subprogramul returnează numărul de apariţii ale cifrei b în scrierea numărului a.
Exemplu: pentru a=125854 şi b=5, subprogramul va returna valoarea 2.
a) Scrieţi definiţia completă a subprogramului cif.
b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n cu exact 8 cifre, fiecare cifră fiind nenulă, şi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului cif, cel mai mic număr palindrom ce poate fi obţinut prin rearanjarea tuturor cifrelor numărului n. Dacă nu se poate obţine un palindrom din toate cifrele numărului
n, programul va afişa pe ecran numărul 0. Un număr natural este palindrom dacă este egal cu numărul obţinut prin scrierea cifrelor sale în ordine inversă.
Exemplu: dacă n=21523531 atunci se va afişa pe ecran numărul 12355321, iar dacă n=12272351 atunci se va afişa pe ecran numărul 0
#include<iostream>
using namespace std;
int cif(int a, int b)
{int i=0;
while(a)
{if(a%10==b)
    i++;
a=a/10;}
return i;
}

int main()
{int nn=0,k,n,i,f[100],j;
cin>>n;
for(i=1;i<=9;i++)
    f[i]=cif(n,i);
for(i=1;i<=9;i++)
    if(f[i]%2==1)
        {cout<<"NU";return 0;}
for(i=1;i<10;i++)
    for(j=1;j<=f[i]/2;j++)
        cout<<i;
for(i=9;i>0;i--)
    for(j=1;j<=f[i]/2;j++)
        cout<<i;
}

Scrieţi un program C/C++ care citeşte de la tastatură două caractere c1 şi c2 (litere distincte ale alfabetului englez), şi un text având cel mult 250 caractere (doar spaţii şi litere ale alfabetului englez), pe care îl modifică înlocuind toate apariţiile caracterului memorat în c1 cu cel memorat în c2 şi toate apariţiile caracterului memorat în c2 cu cel memorat în c1. Programul afişează pe linii separate ale ecranului atât textul iniţial cât şi textul obţinut după
efectuarea înlocuirilor. Exemplu: dacă pentru c1 se citeşte a, pentru c2 se citeşte o iar textul citit este:
hocus pocus preparatus
se va afişa :
hocus pocus preparatus
hacus pacus preporotus
#include<iostream>
using namespace std;

int main()
{char i,a[100],c1,c2;
cin.get(a,100);
cin>>c1>>c2;
cout<<a<<endl;
for(i=0;i<strlen(a);i++)
    if(a[i]==c1)
        a[i]=c2;
    else
    if(a[i]==c2)
        a[i]=c1;
cout<<a;
}
Subprogramul numar cu 4 parametri (n,c1,c2,&x) returneaza prin x numarul obtinut prin eliminarea din n a cifrelor cuprinse in intervalul [c1,c2].
#include<iostream>
using namespace std;

void numar(int n, int c1, int c2, int &x)
{int r,p=1;
x=0;
while(n)
{if(n%10<c1 || n%10>c2)
    {x=n%10*p+x;p=p*10;}
    n=n/10;
}
}
   
int main()
{int n,c1,c2,x;
cin>>n>>c1>>c2;
numar(n,c1,c2,x);
cout<<x;
}
Min/max
#include<iostream>
using namespace std;

void f(int a, int b, int c, int &min, int &max)
{max=min=a;
if(b>max)max=b;
if(c>max)max=c;
if(b<min)min=b;
if(c<min)min=c;
}

int main()
{int a,b,c,min,max;
cin>>a>>b>>c;
f(a,b,c,min,max);
cout<<min<<" "<<max;
}
reduce(a,b) returneaza suma cifrelor lui a care nu divid numarul b
#include<iostream>
using namespace std;

int reduce(int a, int b)
{int s=0;
while(a)
{if (b%(a%10)!=0)
    s=s+a%10;
a=a/10;
}
return s;
}

int main()
{int a,b;
cin>>a>>b;
cout<<reduce(a,b);
}
suma(n,v[]) returneaza suma el. lui v care au prima cifra egala cu ultima
#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);
}
Se dau două numere reale cu două cifre la partea întreagă şi două la partea fracţionară. Să se scrie o funcţie care returnează maximul dintre următoarele 4 numere: cele două numere şi alte două numere obţinute prin interschimbarea părţii întregi cu partea fracţionară.
#include<iostream>
using namespace std;
void max(float a, float b, float &c)
{float aa=0.0,bb=0.0,p,d;
p=(int)a;
aa=(a-p)*100+p/100;
d=(int)b;
bb=(b-d)*100+d/100;
c=a;
if(b>c)c=b;
if(aa>c)c=aa;
if(bb>c)c=bb;
}

int main()
{float a,b,c,p;
cin>>a>>b;
max(a,b,c);
cout<<c;
}

luni, 26 septembrie 2011 by DlMuresan
Categories: , , , , , , , | Leave a comment

Leave a Reply