sâmbătă, 4 aprilie 2015

Biletul Nr. 6

6. Se citeşte de la tastatură un număr natural n (1<n <100), și apoi n perechi de câte două numere întregi a si b cu  ( a < b) reprezentând capetele intervalului [a, b]. Afișați pe ecran, dacă există, capetele intervalului rezultat în urma intersecției celor n  intervale citite, separate printr-un spațiu. În cazul în care intersecția este mulțimea vidă se afișează valoarea 0.

De exemplu, pentru n=3 și perechile [-1,20], [-4,9], [-7, 12] se va afișa -1 9.


#include <iostream>
using namespace std;
int n,a[100],b[100],a1,b1;
void citire()
{
    cout<<"Dati n= ";cin>>n;
    for(int i=1;i<=n;i++)
    {
        cout<<"a["<<i<<"]=";cin>>a[i];
        cout<<"b["<<i<<"]=";cin>>b[i];
    }
}
void intersectie()
{
    a1=a[1];
    b1=b[1];
    for(int i=2;i<=n;i++)
    {
        if(a[i]>a1)
            a1=a[i];
        if(b[i]<b1)
            b1=b[i];
    }
}
int main()
{
    citire();
    intersectie();
    if(a1>b1)
        cout<<0;
    else
        cout<<"[ "<<a1<<" , "<<b1<<" ]";
    return 0;
}

Biletul Nr. 5


5. Fişierul text numere.in conţine pe prima linie un număr natural n (0≤n≤5000), 
iar pe a doua linie n numere naturale de cel mult 9 cifre fiecare, separate prin câte un spaţiu. Scrieți datele din fişierul numere.in şi scrie în fişierul numere.out, valorile de pe a doua linie a fişierului numere.in care sunt palindroame și au număr par de cifre.

#include <iostream>
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
unsigned long v[100];
int n,i;
void citire()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
}
int palindrom(unsigned long y)
{
    unsigned long og=0,aux=y;
    while(y!=0)
    {
        og=og*10+y%10;
        y=y/10;
    }
    if(og==aux)
        return 1;
    else
        return 0;
}
int nr_cifre(unsigned long y)
{
    int x=0;
    while(y!=0)
    {
        x++;
        y=y/10;
    }
    if(x%2==0)
        return 1;
    else
        return 0;
}
int main()
{
    citire();
    for(i=1;i<=n;i++)
        if(nr_cifre(v[i])&&palindrom(v[i]))
            g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
}

marți, 17 martie 2015

Biletul Nr. 4

4.Fişierul unu.in conţine pe primul rând numărul natural n ( 2≤n≤1000000 ), iar pe a doua linie se găsesc n numere întregi formate din cel mult 9 cifre şi despărţite prin câte un spaţiu. Ştiind că linia a doua a fişierului conţine cel puţin două numere distincte, scrieţi un program care să scrie în fişierul unu.out pe o singură linie şi separate printr-un spaţiu, în ordine descrescătoare, cele mai mari două valori distincte din fişierul de intrare.

Exemplu :

unu.in                                                                    unu.out

10
-8 14 8 14 15 9 -7 1 4 10                                        15 14



#include <iostream>
#include <fstream>
using namespace std;
ifstream f("unu.in");
ofstream g("unu.out");
int n,v[100],max1,max2;
void citire()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
}
void prelucrare()
{

    if(v[1]<=v[2])
    {
        max1=v[2];
        max2=v[1];
    }
    else
    {
        max1=v[1];
        max2=v[2];
    }
    for(int i=3;i<=n;i++)
    {
        if(v[i]>max1)
        {
            max2=max1;
            max1=v[i];
        }
        else
            if(v[i]>max2)
                max2=v[i];
    }
}
int main()
{
    citire();
    prelucrare();
    g<<max1<<" "<<max2;
    return 0;
}

Biletul Nr. 3

3. În fişierul valori.txt sunt memorate maximum 1000 de numere întregi despărţite prin câte un spaţiu. Scrieţi un program care să determine valoarea maximă şi valoarea minimă din fișier și numărul de apariţii al maximului, respectiv al minimului.

Exemplu: conţinutul fişierului valori.txt este : 24 3 89 24 1 3 1 1 89, atunci se vor afişa:

min = 1 nr_aparitii = 3
max = 89 nr_aparitii = 2



#include <iostream>
#include <fstream>
using namespace std;
ifstream f("valori.txt");
int x,minim,maxim,aparitii_max,aparitii_min;
void citire_prelucrare()
{
    f>>x;
    minim=maxim=x;
    while(f>>x)
    {
        if(x>maxim)
        {
            maxim=x;
            aparitii_max=0;
        }
        if(x==maxim)
            aparitii_max++;
        if(x<minim)
        {
            minim=x;
            aparitii_min=0;
        }
        if(x==minim)
            aparitii_min++;
    }
}
int main()
{
    citire_prelucrare();
    cout<<"Min= "<<minim<<"  Nr aparitii: "<<aparitii_min<<endl;
    cout<<"Max= "<<maxim<<"  Nr aparitii: "<<aparitii_max;
    return 0;
}

Biletul Nr. 2


2.Se citește de la tastatură un număr natural n cu cel mult nouă cifre. Scrieți un program care verifică dacă există un număr natural k cu proprietatea că n=1*2*3*…*k. În caz afirmativ programul va afișa mesajul “Da” și valoarea k , altfel va afișa mesajul “Nu”.



#include <iostream>
using namespace std;
int n,i,k;
void factorial()
{
    i=k=1;
    while(i<n)
    {
       k++;
       i=i*k;
    }
}
int main()
{
    cout<<"n= ";cin>>n;
    factorial();
    if(n==i)
        cout<<"Da  "<<k;
    else
        cout<<"Nu";
    return 0;
}

Biletul Nr 1


1. Se citesc de la tastatură n (n<=100) numere naturale, cu cel mult 9 cifre fiecare. Scrieți un program care, pentru o cifră k citită de la tastatura, afișează pe ecran numărul de valori prime din șirul dat, în scrierea cărora apare cifra k.

Exemplu: pentru n=4 , cifra k=2 și valorile citite 23, 603, 122, 27 se obține numărul nr = 1, care corespunde valorii 23.


#include <iostream>
using namespace std;
int n,v[100],k,nr;
void citire()
{
    cout<<"n= ";cin>>n;
    cout<<"k= ";cin>>k;
    for(int i=1;i<=n;i++)
    {
        cout<<"v["<<i<<"]= ";
        cin>>v[i];
    }
}
int verificare(int a)
{
    while(a!=0)
    {
        if(a%10==k)
            return 1;
        a/=10;
    }
    return 0;
}
int prim(int a)
{
    for(int d=2;d<=a/2;d++)
        if(a%d==0)
            return 0;
    return 1;
}
void prelucrare()
{
    for(int i=1;i<=n;i++)
        if(verificare(v[i])&&prim(v[i]))
            nr++;
}
int main()
{
    citire();
    prelucrare();
    cout<<nr;
    return 0;
}

vineri, 13 februarie 2015

Cifra de control

Se da un numar n citit de la tastatura. Sa se afiseze cifra sa de control.
Cifra de control se calculeaza facand suma cifrelor numarului, dupa care suma cifrelor sumei si asa mai departe pana cand suma obtinuta este o cifra.
Ex:
n=1343
Cifra de control:
1+3+4+3=11
1+1=2
Cifra de control a lui 1343 este 2



#include <iostream>
using namespace std;
int n,s,var;
int main()
{
    cout << "Numarul= ";cin>>n;
    var=n;
    while(n>9)
    {
        s=0;
        while(n!=0)
        {
            s=s+n%10;
            n=n/10;
        }
        n=s;
    }
    cout<<"Cifra de control a numarului "<<var<<" este "<<s;
    return 7;
}