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;
}