Vancea Adrian
Referat informatica
Functii de conversie numar in sir de caractere si din sir de caractere in
numar :
Functia atof cu forma generala
double atof(sir); – converteste un sir catre tipul double. Daca aceasta
conversie esueaza
(se intalneste un caracter nenumeric), valoarea intoarsa este 0. Aceasta
functie (ca si cele similare) necesita includerea librariei stdlib.h.
Functia atoi cu forma generala
int atoi(sir); – converteste un sir catre tipul int. Daca aceasta conversie
esueaza (se intalneste un caracter nenumeric), valoarea intoarsa este 0.
Functia atol cu forma generala
long atol(sir); – converteste un sir catre tipul long. Daca aceasta conversie
esueaza (se intalneste un caracter nenumeric), valoarea intoarsa este 0.
Functia itoa cu forma generala
itoa(int valoare,sir,int baza); – converteste o valoare de tip int in sir, care
este memorat in variabila sir. Baza retine baza de numeratie catre care sa se
faca conversia. In cazul bazei 10, sirul retine si eventualul semn -.
Functia ltoa cu forma generala
ltoa(long valoare,sir,int baza); – converteste o valoare de tip long int in sir,
care este memorat in variabila sir.
Functia atof:
[Link] consideră un șir de maximum 50 de caractere, fără spații, ce contine numai
cifre. Scrieți un program C/C++ care să citească de la tastatură un text de tipul
menționat mai sus și determinaţi cea mai mare cifră pară a sa. Dacă numărul nu are
cifre pare se va afişa numărul 10.
Exemplu 1
Date de intrare
1440
Date de ieșire
Exemplu 2
Date de intrare
1111
Date de ieșire
10
#include <iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main()
{
char s[51];
int n,max=10;
cin>>s;
n=atof(s);
if(n==0)
max=0;
while(n!=0)
{
if(max==10)
{
if(n%2==0)
max=n%10;
}
else
{
if(n%10>max && n%2==0)
max = n%10;
}
n=n/10;
}
cout<<max;
return 1;
}
[Link] consideră un șir de maximum 20 de caractere, fără spații, ce contine numai
cifre. Scrieți un program C/C++ care să citească de la tastatură un text de tipul
menționat mai sus și să se scrie un program care să determine numărul de apariţii
ale ultimei cifre a sirului.
Exemplu
Date de intrare
57015
Date de ieșire
#include <iostream>
#include <string.h>
#include<stdlib.h>
using namespace std;
int main ()
{
char s[21];
int n,cnt=0;
cin>>s;
n=atof(s);
int u=n%10;
if(n==0)
cnt++;
while (n!=0)
{
if (n%10 == u)
cnt ++;
n=n/10;
}
cout<<cnt;
return 0;
}
Functia atoi:
1. Se consideră un șir de maximum 100 de caractere, fără spații, cu litere ale
alfabetului englez și cifre. Scrieți un program C/C++ care să citească de la tastatură
un text de tipul menționat mai sus și in cazul in care sirul contine numai cifre să se
afişeze în ordine crescătoare, termenii şirului lui Fibonacci, despartiti prin cate un
spatiu, mai mici sau egali cu numarul format din cifrele sirului iar daca sirul nu
contine numai cifre sa se afiseze mesajul "SIRUL NU ESTE COMPATIBIL".
Exemplu 1
Date de intrare
40
Date de ieșire
1 1 2 3 5 8 13 21 34
Exemplu 2
Date de intrare
40abc
Date de ieșire
SIRUL NU ESTE COMPATIBIL
#include <iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main()
{
char s[101];
int n,nr=0,a,b=1,c,i,p;
cin>>s;
n=atoi(s);
p=n;
while(p!=0)
{
p=p/10;
nr++;
}
if(strlen(s)==nr)
{
i=1;
while(i<=n)
{
a=1;
b=1;
if(n==1)
cout<<1<<' '<<1;
else
{
cout <<1<<' '<<1<<' ';
while(n>=b)
{
c=a+b;
a=b;
b=c;
i=b;
if(b<=n)
cout<<b<<' ';
}
}
}
}
else
cout<<"SIRUL NU ESTE COMPATIBIL";
return 1;
}
2. . Se consideră doua șiruri de maximum 255 de caractere, fără spații, cu litere ale
alfabetului englez și cifre. Scrieți un program C/C++ care să citească de la tastatură
doua text de tipul menționat mai sus și in cazul in care sirurile contin numai cifre
să se scrie un program care afișează divizorii comuni ale celor doua siruri daca
sirul nu contine numai cifre sa se afiseze mesajul "SIRUL NU ESTE
COMPATIBIL".
Exemplu 1:
Intrare
24 36
Ieșire
1 2 3 4 6 12
Exemplu 2:
Intrare
24ab23 36jk
Ieșire
SIRUL NU ESTE COMPATIBIL
#include <iostream>
#include <string.h>
#include<stdlib.h>
using namespace std;
int main()
{
char s1[256],s2[256];
int a,b,x,y,r,cmmdc,p,t,nr=0;
cin>>s1>>s2;
a=atoi(s1);
b=atoi(s2);
p=a;
t=b;
while(p!=0)
{
p=p/10;
nr++;
}
while(t!=0)
{
t=t/10;
nr++;
}
if(strlen(s1)+strlen(s2)==nr)
{
x=a;
y=b;
while (y!=0)
{
r=x%y;
x=y;
y=r;
}
cmmdc=x;
for (int i=1;i<=cmmdc;i++)
if (a%i==0 && b%i==0)
cout<<i<<" ";
}
else
cout<<"SIRURILE NU SUNT COMPATIBILE";
return 0;
}
Functia atol:
1. .Se consideră doua șiruri de maximum 20 de caractere, fără spații, cu litere ale
alfabetului englez și cifre. Scrieți un program C/C++ care să citească de la tastatură
un text de tipul menționat mai sus și in cazul in care sirul contin numai cifre să se
scrie un program care determină suma primelor n pătrate perfecte nenule, iar daca
sirul nu contine numai cifre sa se afiseze mesajul "SIRUL NU ESTE
COMPATIBIL".
Exemplu 1
Intrare
6
Ieșire
Rezultatul este 91
Exemplu 2
Intrare
6abc
Ieșire
SIRUL NU ESTE COMPATIBIL
#include <iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main()
{
char s[31];
int n,p,nr=0;
n=atol(s);
p=n;
while(p!=0)
{
p=p/10;
nr++;
}
if(strlen(s)==nr)
cout<<"Rezultatul este"<<n*(n+1)*(2*n+1)/6;
else
cout<<"SIRUL NU ESTE COMPATIBIL";
return 0;
}
[Link] consideră doua șiruri de maximum 30 de caractere, fără spații, cu litere ale
alfabetului englez și cifre. Scrieți un program C/C++ care să citească de la tastatură
un text de tipul menționat mai sus și in cazul in care sirul contin numai cifre să se
scrie un program care citește numărul natural n și determină suma pătratelor
perfecte mai mici sau egale cu n., iar daca sirul nu contine numai cifre sa se afiseze
mesajul "SIRUL NU ESTE COMPATIBIL".
Exemplu
Intrare
20
Ieșire
Rezultatul este 30
Explicație
Pătratele perfecte mai mici sau egale cu 20 sunt 1, 4, 9 și 16, iar suma lor este 30.
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main()
{
char s[31];
int n,p,nr=0,a;
cin>>s;
n=atol(s);
p=n;
while(p!=0)
{
p=p/10;
nr++;
}
if(strlen(s)==nr)
{
a=sqrt(n);
cout<<"Rezultatul este "<<a*(a+1)*(2*a+1)/6;
}
else
cout<<"SIRUL NU ESTE COMPATIBIL";
return 1;
}
Functia itoa:
Se citesc de la tastatură două șiruri a și b, fără spații cu cel mult 100 de
caractere . Scrieți un program în C/ C++ care să converteasca sirul a in baza
16 si sirul b in baza 2 daca a si b sunt numere palindrom, altfel afisam
mesajul “NU EXISTA”.
Exemplu
Intrare
1221 131
Ieșire
1221 in baza 16 4c5
131 in baza 2 10000011
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
char a[101],b[101];
int ogl1=0,ogl2=0,p,t,c1,c2,x,y;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
x=atoi(a);
y=atoi(b);
p=x;
t=y;
while(p!=0)
{
c1=p%10;
ogl1=ogl1*10+c1;
p=p/10;
}
while(t!=0)
{
c2=t%10;
ogl2=ogl2*10+c2;
t=t/10;
}
if(ogl1==atoi(a)&&ogl2==atoi(b))
{
itoa(x,a,16);
cout<<x<<" "<<"in baza 16"<<" "<<a<<endl;
itoa(y,b,2);
cout<<y<<" "<<"in baza 2"<<" "<<b;
}
else
cout<<"NU EXISTA";
return 1;
}
Functia ltoa :
Un număr natural este pseudoperfect dacă este divizor al sumei divizorilor
săi.
Se citeste de la tastatură sirul x, fără spații si ce contine numai cifre,cu cel
mult 60 de caractere . Scrieți un program în C/ C++ care să converteasca
sirul x in baza 8 daca sirul x verifică dacă un numărul natural citit de la
tastatură este pseudoperfect, altfel afisam mesajul “NU”.
Exemplu
Intrare
120
Ieșire
120 in baza 8 170
Exemplu
Intrare
170
Ieșire
NU
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
char x[61];
cin>>x;
long long S;
int n,i;
n=atoi(x);
S=0;
for (i=1;i*i<=n;i++)
if (n%i==0 )
if (i==n/i)
S=S+i;
else
S=S+i+n/i;
if (S%n==0)
{
ltoa(n,x,8);
cout<<n<<" "<<"in baza 8"<<" "<<x<<endl;
}
else
cout<<"NU";
return 1;
}