Informatică, întrebare adresată de balasiutheodorot3ay2, 9 ani în urmă

Se citesc din fişierul text date.in n apoi n numere întregi separate prin câte un spaţiu. Se cere să se scrie în fişierul text date.out: 1. numerele care au exact 3 cifre şi sunt pare; dacă nu există, să se afişeze mesaj corespunzător 2. numărul de valori negative din şir 3. media aritmetică a numerelor impare 4. cel mai mare / cel mai mic număr par, dacă există sau mesaj corespunzător 5. mesaj corespunzător în urma verificării dacă toate numerele sunt egale / în ordine crescătoare 6. toate numerele care se termină în 0 7. ultima cifră a produsului numerelor nenule 8. numerele prime din șirul dat I

Răspunsuri la întrebare

Răspuns de stassahul
3
#include <bits/stdc++.h>

using namespace std;

ifstream fin("date.in");
ofstream fout("date.out");

int n,x,y=1000000001,treip,neg,sumimp,maxp=-1000000001,minp=1000000001,egal,cresc,zero[10001],z,ultimprod=1,prim[10001],p;
double nrimp;

int numCif(int a);
int Prime(unsigned long a);

int main()
{

    fin >> n;

    for(int i=1;i<=n;i++)
    {
        fin >> x;

        if(x%2==0 and numCif(x)==3)
            fout << x << " ", treip++;

        if(x<0) neg++;

        if(x%2==1)
            sumimp+=x, nrimp++;

        else
        {
            if(x>maxp) maxp=x;
            if(x<minp) minp=x;
        }

        if(x==y) egal++;
        if(x>y) cresc++;
        y=x;

        if(x%10==0) zero[z++]=x;

        if(x!=0) ultimprod*=x%10;
        ultimprod%=10;

        if(Prime(x)) prim[p++]=x;
    }

    if(treip==0) fout << "NU EXISTA" << endl;
    else fout << endl;

    fout << neg << endl;

    if(nrimp==0) fout << "NU EXISTA" << endl;
        fout << sumimp/nrimp << endl;

    if(maxp==-1000000001) fout << "NU EXISTA" << endl;
    else fout << maxp << " " << minp << endl;

    if(egal+1==n) fout << "EGAL NU CRESCATOR" << endl;
    else if(cresc+1==n) fout << "NU EGAL CRESCATOR" << endl;
    else fout << "NU EGAL NU CRESCATOR" << endl;

    if(z==0) fout << "NU EXISTA" << endl;
    else
    {
        for(int i=0;i<z;i++)
        fout << zero[i] << " ";
        fout << endl;
    }

    fout << ultimprod << endl;

    if(p==0) fout << "NU EXISTA";
    else
    {
        for(int i=0;i<p;i++)
            fout << prim[i] << " ";
    }

    return 0;

}

int numCif(int a)
{
    if(a==0) return 1;
    int k=0;
    while(a!=0)
    {
        a/=10;
        k++;
    }
    return k;
}

int Prime(unsigned long a)
{
   unsigned long i;
   if (a == 2)
      return 1;
   if (a == 0 || a == 1 || a % 2 == 0)
      return 0;
   for(i = 3; i*i <= a && a % i; i += 2)
      ;
   return i*i > a;
}

stassahul: Parca lam verificat la toate exceptiile, de ceva imi scrii daca iti da vreun rezultat gresit
stassahul: Am socotit ca 1<=n<=10000 si -1000000000<=numar introdus<=1000000000
Alte întrebări interesante